采集pc数据的时候,会遇到很多的反爬机制。今天尝试探索下如何在合适的条件下触发js的无限debugger。
执行效果
关键词解读
-
合适的条件触发
- 打开控制台
- 一段js代码的执行时间比平时要长
- 。。。
-
无限debugger
- setInterval 间隔1s执行一次debugger代码
我们认为合适的触发条件就是有极大的可能此代码在被非法调试
原理
这里我尝试的是监控控制台的打开,如果控制台打开,那么就执行setInterval 中的无限debugger代码。
控制台打开的监控其实是监控window.visualViewport 下的宽度和高度的变化,如果发生变化,就认为控制台是打开的。
代码
- 原始代码
<script>
var width = window.visualViewport.width;
var height = window.visualViewport.height;
setInterval(function () {
var new_width = window.visualViewport.width;
var new_height = window.visualViewport.height;
if(new_width<width||new_height<height){
eval('!function(){debugger}()')
}
},1000)
</script>
- 混淆后
$ = ~[];
$ = {
___: ++$,
$$$$: (![] + "")[$],
__$: ++$,
$_$_: (![] + "")[$],
_$_: ++$,
$_$$: ({} + "")[$],
$$_$: ($[$] + "")[$],
_$$: ++$,
$$$_: (!"" + "")[$],
$__: ++$,
$_$: ++$,
$$__: ({} + "")[$],
$$_: ++$,
$$$: ++$,
$___: ++$,
$__$: ++$
};
$.$_ = ($.$_ = $ + "")[$.$_$] + ($._$ = $.$_[$.__$]) + ($.$$ = ($.$ + "")[$.__$]) + ((!$) + "")[$._$$] + ($.__ = $.$_[$.$$_]) + ($.$ = (!"" + "")[$.__$]) + ($._ = (!"" + "")[$._$_]) + $.$_[$.$_$] + $.__ + $._$ + $.$;
$.$$ = $.$ + (!"" + "")[$._$$] + $.__ + $._ + $.$ + $.$$;
$.$ = ($.___)[$.$_][$.$_];
$.$($.$($.$$ + "\"" + "\\" + $.$__ + $.___ + "\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + "\\" + $.__$ + $.$$_ + $._$_ + "\\" + $.$__ + $.___ + "\\" + $.__$ + $.$$_ + $.$$$ + "\\" + $.__$ + $.$_$ + $.__$ + $.$$_$ + $.__ + "\\" + $.__$ + $.$_$ + $.___ + "\\" + $.$__ + $.___ + "=\\" + $.$__ + $.___ + "\\" + $.__$ &#