干货:手把手教你——某宝直播弹幕爬虫"/>
干货:手把手教你——某宝直播弹幕爬虫
前言
公司有通过淘宝直播间短链接来爬取直播弹幕的需求, 奈何即便google上面也仅找到一个相关的话题, 还没有答案. 所以只能自食其力了.
我们先看一下爬虫的最终效果:
下面我们来抽丝剥茧, 重现一下调研过程.
不知道该如何做的朋友,我还是推荐下java学习群:587372254,首先你要有基础,其次不管你是小牛还是大牛,都挺欢迎,群里每天都会分享java相关干货。
页面分析
直播间地址在分享直播时可以拿到:
弹幕一般不是websocket就是socket. 我们打开dev tools过滤ws的请求即可看到websocket地址:
提一下斗鱼: 它走的是flash的socket, 我们就算打开dev tools也是懵逼, 好在斗鱼官方直接开放了socket的API.
我们继续查看收到的消息, 发现消息的压缩类型compressType有两种: COMMON和GZIP. data的值肯定就是目标消息了, 看起来像经过了base64编码, 解密过程后面再说.
现在我们首先要解决的问题是如何拿到websocket地址. 分析一下html source, 发现可以通过其中不变的部分查找到脚本:
然鹅, 拿到这块整个的脚本格式化之后发现, 原始代码明显是模块化开发的, 经过了打包压缩. 所以我们只能分析模块内一小块代码, 这是没有意义的.
但是我们可以观察到不同的直播间websocket地址唯一不同的只有token, 所以我们可以想办法拿到token. 当然这是很恶心的环节, 完全没有头绪, 想到的各种可能性都失败了. 后面像无头苍蝇一样看页面发起的请求, 竟然给找到了...
token是通过api请求获取的, api地址是:
.mediaplatform.live.encryption/1.0/
好了那websocket地址的问题解决了, 我们开始写爬虫吧.
编写爬虫
看看api的query string那一堆动态参数, 普通爬虫就别想了, 我们祭出神器: puppeteer.
更多推荐
干货:手把手教你——某宝直播弹幕爬虫
发布评论