一
问题导引
做网页POST,抓包分析是必不可少的,遇到加密,必然分析网站的前端代码,一般F12打开控制台,结果发现页面一打开控制台就不断的debugger,很影响看页面内容。
▲该死的debugger
每次在断点处停下来的时候页面都会跳到source这个tab页面,也能够看到他的debugger的代码,其实他的实现很简单,只有这一行代码:
(function() { var a = new Date(); debugger; return new Date() - a > 100;}())
其目的就是:
不停地打断你,页面跳到source页面,阻止你看他代码不断的产生不可回收的对象,占据你的内存,造成内存泄漏,没过多久浏览器就会卡顿。
但我们要调试,怎么办呢?
二
解法探密
应对策略一:禁用断点
在Chrome控制台的Source Tab页点击Deactivate breakpoints按钮或者按下Ctrl + f8,这样就能禁用断点了,问题就得到了解决,但也让你无法调试了。
应对策略二:重定义函数
我们看网站代码有时候就是为了调试网站的代码,直接禁止断点后我们还调试网站的代码了?
比如遇到:
// 举个例子setInterval(startDebug, 100); function startDebug() { debugger; };
像这样子禁止调试,我们还是有方法的:
直接根据当前的函数进行重定义——
function startDebug() {};
应对策略三:条件断点
你以为就样子就可以了吗?
但现在的网站做更绝,直接用用匿名函数来实现,比如:
// 举个例子setInterval(function () { debugger }, 100);
那也不用怕,我们还有新的绝招——
-> 在debugger处选择右键
->Add conditional breakpoint
->填写False。
应对策略四:终极技能
这是最后的终极技能,什么都不管,直接用代码来解决问题:
直接在console栏里面输入——
var _constructor = constructor;Function.prototype.constructor = function(s) { if (s == "debugger"){ console.log(s); return null; } return _constructor(s);
}
(部分内容引用 思否用户 user_name)
领取专属 10元无门槛券
私享最新 技术干货