首页 > 技术文章 > 瑞数自动化工具检测

xiaoweigege 2021-08-20 11:04 原文

分析瑞数对自动化工具的检测

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;}})

推荐阅读