文章仅限于技术交流与学习
禁止用于商业盈利
侵权即删
网站示例:
aHR0cDovL3ZpZGVvLmNhaXhpbi5jb20vMjAyMS0wMS0xNS8xMDE2NTEzNDkuaHRtbA==
针对该网页抓取视频,我们来分析一波。
首先,我们明确,该视频无法在源码获取。
抓包,首先看xhr包:
打开,逐一查看:我们在如下xhr链接找到了视频数据:
该链接中含有以下参数
于是,我们需要找到数据来源。
先找最具特征的,一般来说,我们会先找sign,在以上参数中,有一个:X-Amz-Signature
ctrl+shift+f全局搜索:搜到了个寂寞。。。
没搜到怎么办?
我们知道这是个xhr包,那我们可不可以尝试xhr断点?
试一下。
复制xhr包链接,点击source选项卡,添加xhr断点:
刷新如下:
成功进入断点,也看到有数据,但尝试十分钟之后,毫无进展。。。
于是放弃该方法。
那我们还能怎么办?
这就用到搜索技巧,我们知道,xhr包的链接,变化的只是后面的参数,那它生成时,肯定是域名加参数,获取完整链接,我们搜接口域名。
nice,只有一条,我们进去看看:
在这行打上断点调试:
可以看见,参数都有了且 url: "//" + t + "?" + n.GetPlayInfoToken + "&ssl=true"
我们还可以看见n的来源 JSON.parse(i.default.base64decode(e))
它是i方法对e进行了一系列操作,我们看看i是啥。
点进红框内链接,我们可以找到base64decode方法。
现在就是e从哪里来?
如果你一开始仔细看了每个xhr包,可以看见下图:
这个包链接只需要一个vid,可以在源码找。
我们具备了所有条件。
重写js测试一下。
正常拿到数据,只需要 http://vod.bytedanceapi.com/?+里面的token数据即可。