瑞数自动化工具检测
分析瑞数对自动化工具的检测
window对象中检测的属性有
-
["_Selenium_IDE_Recorder", "_selenium", "callSelenium"]
-
window["clientInformation"]["webdriver"]
-
window["navigator"]["webdriver"]
document对象中检测属性有
["__driver_evaluate", "__webdriver_evaluate", "__selenium_evaluate", "__fxdriver_evaluate", "__driver_unwrapped", "__webdriver_unwrapped", "__selenium_unwrapped", "__fxdriver_unwrapped", "__webdriver_script_func", "__webdriver_script_fn"]
- 属性检测
document["__webdriver_evaluate"] || document["__webdriver_script_fn"]
- 属性正则匹配?
for (var _$_f in document) {
if (_$_f[0] === "$" && _$_f["match"]("^\\$[a-z]dc_") && _$Ym[_$_f]["cache_"]) {
// 为标记位
_$8O = 1;
}
}
- 属性获取检测
_$7$ = ["selenium", "webdriver", "driver"]
for (_$is = 0; _$is < _$7$.length; _$is++) {
if (_$Ym["documentElement"]["getAttribute"](_$7$[_$is]))
_$8O = 1;
}
如果检测到是自动化工具
给window全局对象赋值一个标记位
window._$_0 = 1;
// 具体啥逻辑没有分析
_$s6(148, 134217728, 31);
如何绕过检测
通过 Object.defineProperty
方法重新修改返回值即可
例如:
Object.defineProperty(navigator, 'webdriver', {get: function(){return undefined;}})