爬虫技巧:突破前端反调试(无限debugger)

时间:2024-04-03 10:48:42

在采集某些网站时,目标网站为了防止别人分析调试前端代码,采取了反调试措施。其中一种做法是当你按F12进入浏览器控制台后,浏览器会自动命中debugger断点,并且无限循环,导致无法调试。  https://www.ixigua.com/i6684837376679739912/这个是我们的列子

 

爬虫技巧:突破前端反调试(无限debugger)

一.解决方法

 1.禁用浏览器断点

 

爬虫技巧:突破前端反调试(无限debugger)

点击图中按钮,之后将不会再命中任何断点。这种方法虽然可以防止无限循环命中debugger断点,但是也存在很大的缺陷,因为对于其他代码,我们还是需要断点调试功能的。所以这个方法仅限于静态分析。

2.利用中间人修改响应代码

       在前面的Fiddler教程系列文章中,已经介绍了Fiddler的基础及进阶使用。利用Fiddler修改响应,删除响应代码中的debugger即可达到目的

实现的核心代码很简单:如下

 

爬虫技巧:突破前端反调试(无限debugger)

实际使用中发现,位于响应html页的debugger被删除了,但是仍然会弹出断点。分析页面得到,debugger断点位置一共有2处。第一处debugger以明文形式存在,Fiddler删除的就是这部分。第二处是通过eval去实现的,响应中并没有直接出现debugger字段,所以没有被替换掉。

码经过强混淆,读者看到的函数名称是和我不一样的。

     3.利用浏览器插件修改响应代码

    具体原理和使用Fiddler是相同的,通过浏览器插件将请求重定向以达到修改代码的目的。也存在相同的问题

    4.手动替换代码

    既然修改响应结果无法满足需求,那只能从代码中寻找突破了。

以本文的网站为例,查看debugger断点处的调用栈堆,找到调用位置。其实在上文中间人方式结尾处已经发现了。是通过eval去实现断点的。我们先构造一个空方法

爬虫技巧:突破前端反调试(无限debugger)

5.傻瓜式技巧

 

爬虫技巧:突破前端反调试(无限debugger)

 

爬虫技巧:突破前端反调试(无限debugger)

欢迎关注我的公众号    java微技术