爬虫js逆向之无限debugger--抖音第三方数据分析平台的坑

爬虫js逆向系列
我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现,这三方面解析,供大家参考

爬虫认知
在程序猿所有的方向中,爬虫是离money最近的一个方向,你的明白?而且爬虫可发展的方向很多,前可走大数据,人工智能,后可转后端。而且爬虫做得好,要求的技术栈还是比较全面的。如果你对爬虫有兴趣,欢迎加V:13809090874,一起沟通交流

免责申明:
此内容仅供学习交流使用,不用于商业用途,如果涉及侵权,联系作者删除

最近在爬抖音的第三方数据平台的数据,遇到一些js逆向的问题,跟大家分享一下。(具体哪个平台,就不告知了)在这个平台遇到的坑大概有如下几个:

  • js逆向-无限debugger
  • js逆向-内存奔溃
  • js逆向之js压缩
  • js base64加密btoa()与pythonbase64加密有区别
  • t腾讯滑块验证码
    反反爬差不多就这些问题,解决完反爬的问题,剩下的就是账号风控以及策略的问题。(这部分内容不展开去说,主要去聊聊反反爬的内容)

坑1:js逆向之无限debugger

我们去做爬虫,首先会通过chrome浏览器看一下它的请求过程以及请求头的参数等。
好,我也是按着这个思路去做的,刚按下F12,跳出控制台,就直接进入debugger模式了,点击下一步,永远跳不出来,你说坑不坑。这爬虫的第一步就受阻了。
爬虫js逆向之无限debugger--抖音第三方数据分析平台的坑_第1张图片

那么咱们就来看看这问题怎么解决,解决办法有哪些?

  1. 最简单的办法,跳过所有断点(控制台右上角的按钮),让他不进入断点模式,然后去看他的请求头信息
  2. 通过抓包工具(fiddler,charles)直接看他的请求信息
  3. 找到相关的js代码,把这块代码注释掉,不让他运行。然后进入断点模式

其实我们的第一步解决办法,肯定是第1,或者第2种,先分析请求信息,模拟它的请求信息,能拿到数据再说。我也是这么做的,但要模拟它的请求,就必须破解它的加密参数。要破解加密参数,就必须进入断点模式,看它代码运行的过程,所以第三步是绕不过去的。

在这里,我先来说一下,怎么找到这无限debugger的地方的,并且成功打断点的。
我们的先知道,这无限debugger是怎么实现的,怎么搞出来,才能有的放矢,对吧。

无限debugger原理:

js中有一个对象是“debugger”,调用这个对象可以直接进入debugger模式,加入setinteval,或者是setTimeout这两个方法,就可以进入无限debugger。给大家模拟一下,我们在chrome里直接写一个这样的函数

大家看这个动图,可以发现已经进入来无限debugger,与我们要爬的平台的无限debugger有点不同,它是每次debugger会新建一个文件,对吧,而我们自己写的会一直停留在同一行上。这里会涉及到js逆向的另一个问题,就是既然进入来无限debugger模式,在这里面,我再同时给你创建很多无用的对象,让你的内存直接崩掉,也是常见的反爬的手段。后面我也会跟大家一起看一下这“js逆向之内存崩溃”的问题。

查看js源码,寻找无限debugger的代码

好,既然我们知道来无限debugger的原理,是跟“degugger,setTimeout,setinterval”这三个关键词有关,我们就在目标网站的js中搜一下这个关键词。
在这里我就直接跟大家说结果了,目标网站的js主要有两个:app.2222222.js,s.js这两个,app.js主要是请求的封装,以及响应结果的处理等,s.js主要用来加密。app.js做了简单混淆,s.js做了十六进制的混淆。
setTimeout:可以在两个文件中搜到,s.js中有两个,app.js中有26个
debugger:两个文件中都搜不到,其实这是在s.js中,只不过被它用十六进制混淆了,无法直接搜到
setInterval:两个文件中都搜不到,没用这个方法

后面我去看它的js源码,可以发现在app.js中,setTimeout做的都是业务逻辑上的处理,而在s.js中有两处就是我们要找的地方。产生无限debugger的地方。
爬虫js逆向之无限debugger--抖音第三方数据分析平台的坑_第2张图片
我们把十六进制的编码,放到控制台上运行后,就会发现是“debugger”的对象。
到这里我们就成功找到了它无限debugger的地方。下面要做的就是把这段代码覆盖掉,不让它运行,我们就可以打断点调试了

利用charles抓包工具,注入js代码

我们把s.js这代码全部拷贝下来,保存到本地,然后把这段代码删除,或者注释掉。

(charles工具怎么使用,自行百度)
然后来重新打开目标网站,就可以屏蔽掉无限debugger了,我就不展示结果图片,不然动图太多了。其实,这中间还有一个坑,就是我们把格式化后的js下载下来之后,然后直接用格式化好的js去打开目标网站,会给你来个内存奔溃玩玩。
这个问题我也是找了好久,这个网站,你必须要用压缩后的js代码去打开目标网站才行,因为它的js代码里,用正则表达式去判断你的这个js文件是不是压缩后的文件,如果不是,就知道你是爬虫,在破解它的js,它就给你无限创建无用对象,直到内存崩溃。

你可能感兴趣的:(爬虫系列,python)