【作者主页】:吴秋霖
【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作!
【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建与开发实战》
还有未来会持续更新的验证码突防、APP逆向、Python领域等一系列文章
抛开自动化、RPC这些方案。除了X-Bogus参数的校验,没有其他过多的检测。这里以评论为例,抓包分析:
抓包参数虽然看似很多,webid、msToken这些参数经过测试发现并不会被验证,可以直接注释掉即可:
接下来分析X-Bogus,先找关键特征点!Web JS逆向分析中如何找加密入口看我之前的文章中都有总结!这里我先是全局搜索了一下X-Bogus,并不多就两个文件,如下:
先点开webmssdk.js文件,发现JS逻辑都是被混淆过的,下断点基本在这一步是获取不到太多有用的信息,试试XHR的断点方式指定评论访问的接口路径,如下所示:
断点下完后下拉评论加载,断住后,停在了如下位置处:
这里X-Bogus参数已经生成,鼠标停留分析上述代码,我这里在控制台看了一下this,如下:
接下来就需要往前去分析,找到调用的JS。
_0xc26b5e请求内可以看到有评论的接口数据
这里也可以用AST解混淆工具来解一下,没法分析的话
通过插桩日志调试,查看_0x2458f0[‘apply’](_0xc26b5e, _0x1f1790)的调用,如果分析X-Bogus全过程都用插桩的方式去调试分析,很耗费精力!可以通过AST去还原jsvmp,这个可以看看很多大佬的文章!
定位到加密位置入口处,jsvmp,直接去扣代码的意义不大。怎么去确定代码是否为jsvmp?一种方法是检查代码中是否包含长字符串或数组,并且缺乏明确的逻辑结构。此外,代码通常包含一个不断循环执行的部分,其中包含一系列指令!大都基于堆栈的栈式虚拟机实现。通过这些特征,我们可以辨别出是否存在 jsvmp的代码结构:
关于如何去还原VMP的代码:
jsvmp纯算加密联动Python脚本请求测试效果如下所示:
对照上图评论区内容,爬虫采集数据对比如下(包含视频信息与评论信息):
订阅的朋友可私信联系作者获取开箱即用的完整爬虫项目或者是X-Bogus的JS纯算学习!