ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js 爬虫 debugger

2021-07-21 14:03:16  阅读:145  来源: 互联网

标签:function 浏览器 debugger 爬虫 js document 调试 函数


爬虫之前,需要先对网站请求进行梳理,F12 打开浏览器的开发者模式是第一步,所以反爬虫的第一招就是,在开发者模式下让对手的浏览器进入 无限循环 debugger 。

今天继续百度 “带有JS混淆加密的网站怎么破解”,看到一篇文章正打算参考测试时,浏览器就陷入了无限循环,两步之后,网站得意地宣布 “ 俺们是为人类服务的,你这机器就知难而退吧!”。

 

无限 debugger

本打算跟着一个网站看看 JS 混淆的流程,结果一打开这个空气质量监控平台就进入匿名函数的无限循环中了:

JS 反爬:一分钟了解如何用 debugger 劝退爬虫


进入开发者模式,就落入第一步“匿名函数” 的 debugger 无限死循环中。

点击右侧调试面板中的 Call Stack 找到调用方法:

JS 反爬:一分钟了解如何用 debugger 劝退爬虫

非法调试检测调用

被网站检测了到非法调试,调用了 xsdefwsw() ,利用浏览器自带的格式化工具看到函数的全貌:

JS 反爬:一分钟了解如何用 debugger 劝退爬虫


这里面搞了一个定时器又调用了 txsdefwsw() ,在浏览器的 console 控制台重写一下这个函数:

function txsdefwsw(){};
  • 1

关闭之后再右键盘,提示右键被管理员禁用了,F12 也被禁用了,这个网站的管理员也真够狠的。前面是访问网站之前就开启了开发者模式,所以还没发现这一招。

JS 反爬:一分钟了解如何用 debugger 劝退爬虫


两次 debugger 继续之后,提示如下页面:

JS 反爬:一分钟了解如何用 debugger 劝退爬虫

试试重写函数

重写那个 setTimeout 函数后,更狠地操作来了,控制台重写的函数竟然被清空了:

JS 反爬:一分钟了解如何用 debugger 劝退爬虫


原来这个 endebug(off,code) 函数中添加了一个立即执行的函数,它监听并清空了 window 的函数,看来重写也绕不过了啊。

启示录

总结这个网站的 JS 反爬虫手段,页面首页一上来就是一堆检测调试的代码:

<script type="text/javascript">  var debugflag = false;    endebug(false, function () {       document.write('检测到非法调试, 请关闭调试终端后刷新本页面重试!');       document.write("<br/>");       document.write("Welcome for People, Not Welcome for Machine!");       debugflag = true;   });   txsdefwsw();   document.onkeydown = function() {     if ((e.ctrlKey) && (e.keyCode == 83)) {       alert("检测到非法调试,CTRL + S被管理员禁用");       return false;     }   }   document.onkeydown = function() {     var e = window.event || arguments[0];     if (e.keyCode == 123) {       alert("检测到非法调试,F12被管理员禁用");       return false;     }   }   document.oncontextmenu = function() {     alert('检测到非法调试,右键被管理员禁用');     return false;   } 	$(function() 	{ 		if (!debugflag && !window.navigator.webdriver) {       loadTab();     } 		if(!isSupportCanvas()) 		{ 			$("#browertip").show(); 		} 	});  	function isSupportCanvas() 	{ 	   var elem = document.createElement('canvas'); 	   return !!(elem.getContext && elem.getContext('2d')); 	} </script>
  • 1

endebug 又会检测控制台函数重写,并清空控制台;txsdefwsw 它利用定时器,让浏览器无限进入 debugger 操作。

转载http://www.dreamwu.com/post-6537.html

标签:function,浏览器,debugger,爬虫,js,document,调试,函数
来源: https://www.cnblogs.com/sophia201552/p/15039161.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有