js debugger 反调试

一些网站不仅js加密,代码混淆得难以阅读。这就需要打开f12调试前端代码了;但是在调试过程中会发现,网站还判断是否开启了debugger不让调试。分析第一步就是绕过debugger检测了。

下面以一些为例,教你一步一步绕过debugger反爬。打开F12,访问页面加载完成后如下:

js debugger 反调试_第1张图片

 

点击sources代码页面坐下角的{}格式化一下代码,可以看到debugger关键字,这时候我们重写一下该方法,在console控制台中输入function _$nN() {}  ,注意:方法名为动态生成的,方法名替换为那个debugger函数名即可;

js debugger 反调试_第2张图片

js debugger 反调试_第3张图片

 

点击继续按钮后又跳入下一层判断debugger的代码中,如下图:

js debugger 反调试_第4张图片

根据右侧Call Stack信息,我们可以看一下源码并格式化源码:

js debugger 反调试_第5张图片

上面的代码依然是难以阅读,鼠标选中部分函数名后会有hint提示,可以看出_$wB[_$l3()]就是eval();

js debugger 反调试_第6张图片

 

js debugger 反调试_第7张图片

 

接下来 我们再重写一下_$rt()代码即可。重写:function _$rt(){}。重写后点击pause in debugger旁边的蓝色按钮,即可绕过反调试。

js debugger 反调试_第8张图片

20190712补充一个网站 http://www.wugu.com.cn/

吾谷网

浏览器打开F12访问网站http://www.wugu.com.cn/,页面加载不出来任何东西,source资源跳入一个匿名函数中循环。如下图所示:

 

查看右侧的堆栈信息,可以发现js将“debugger”关键字拆分加密。

 

 

这时候,需要做的就是重写debugger反调试函数:

 

 

找到该函数后,在控制台中写入function _0x355d23(_0x450614){}执行即可;

 

当然,如果你只是想看一下js源码,并不需要调试代码,直接点击右侧的deactive debugger按钮即可;

js debugger 反调试_第9张图片

你可能感兴趣的:(爬虫)