debugger调试_爬虫技巧:突破前端反调试(无限debugger)
一.需求描述
在采集某些网站时,目标网站为了防止别人分析调试前端代码,采取了反调试措施。其中一种做法是当你按F12进入浏览器控制台后,浏览器会自动命中debugger断点,并且无限循环,导致无法调试。以[食品药品监督管理总局](http://qy1.sfda.gov.cn/datasearch/face3/dir.html)数据查询网站为例。如下图:

按F12进入控制台
一.解决方法
1.禁用浏览器断点

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

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

代码经过强混淆,读者看到的函数名称是和我不一样的。
3.利用浏览器插件修改响应代码
具体原理和使用Fiddler是相同的,通过浏览器插件将请求重定向以达到修改代码的目的。也存在相同的问题
4.手动替换代码
既然修改响应结果无法满足需求,那只能从代码中寻找突破了。
以本文的网站为例,查看debugger断点处的调用栈堆,找到调用位置。其实在上文中间人方式结尾处已经发现了。是通过eval去实现断点的。我们先构造一个空方法

将目标网站的方法偷梁换柱

由于网站代码强混淆,所以函数名称会不一样。下面放个GIF图

完美解决 但是注意不要刷新,页面刷新后需要重新替换。
5.傻瓜式技巧

上文的几种方法,要么是存在缺陷,要么是步骤较为繁琐,我这边还有个压箱底的神技,不需要写任何代码,鼠标点点点就能够满足需求,把最终技巧放在公众号另一篇文章了,有需要的童鞋可以自己去看。
二.关注我们
爬虫教程,思路分享,商务合作,请关注射线网络公众号
回复 **反调试** ,可以获得第5步技巧,

更多推荐
所有评论(0)