【爬虫】网站反debugger、内存爆破以及网站直接限制开发者工具
声明:本文中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
常见情形
目前网站反爬手段有很多,比如:网站反debugger、内存爆破、限制开发者工具等
情况一:debugger(右键不在此停止)
- 问题: 有部分网站做了反debugger处理,当我们打开开发者工具的时候会直接断点停在某个位置。
- 解决办法:右键点击,选择永不在此停止。然后放过断点,即可继续调试。
前提:该debugger构造函数需要没有内容。如果网站开发者自定义的debugger构造函数后面有内容,是在写入数据的话(不断写入空列表、其他字符等),我们跳过断点会导致持续写入,导致内存溢出,页面卡死。
情况二:内存爆破
绝大多数网站反debugger会更加高深,会使用到内存爆破以及混淆技术。导致我们通过简单的
右键不在此停止
无法破解。
我们使用右键不在此停止,并且跳过断点后,会导致浏览器卡死。
情况三:右键被管理员禁用
部分网站会直接限制我们使用开发者工具,我们右键或者F12打开均无效,都被禁用。
我们想右键,打开开发者工具时,发现被禁用。
情况四:监测函数执行时间
我们通过快捷键强制打开开发者工具,发现页面提示非法调试。
我们进入debug断点分析,点击单步执行,查看页面js逻辑。
最终发现页面是通过判断当前window大小以及函数运行时间来确认是否存在非法调试。
解决办法
方法一:控制台-右键不再此停止
如果我们打开开发者工具后,发现自动进入断点。
- 首先尝试,鼠标右击
永不在此停止
- 放过该断点,即可继续调试
方法二:本地注入JS,覆盖之前老的JS
如果方法一无效:放过断点后会导致浏览器页面卡死。即可使用本地注入JS方法,将debugger构造器置空,覆盖之前的JS。
- 分析浏览器卡死原因:网站开发者自定义的debugger构造器不为空,在持续写入数据。
- 本地注入JS不能刷新网站,否则会导致我们本地注入的JS失效。
分析原因:浏览器卡死原因
我们单步执行断点,发现进入了VM虚拟环境,并且该JS是进行了混淆的。
下面这种有特殊字符+数字+字母的,基本就是进行过JS混淆的:
对于这种混淆过的JS代码,我们需要对其进行还原:
还原方法:复制JS代码,然后在控制台执行即可
//我们需要进行分段还原,否则一次性全部执行,会报not a function
[s(0, -259, -213, 0, "I#ue") + f(