魔改编译-永久解决selenium痕迹(一)

514 阅读2分钟

😀 今天我们来讲一下selenium自动化怎么永久去除痕迹。本系列的浏览器编译魔改完的浏览器会放在星球上。

📝 主旨内容

Selenium技术概述

Selenium是业界主流的Web自动化测试框架,通过WebDriver协议实现对浏览器的程序化控制。它能够精确模拟用户交互行为,包括页面导航、元素定位、表单操作等复杂场景,因此在自动化测试、数据采集等领域得到广泛应用。

Selenium的工作机制本身会在浏览器环境中留下特定的技术指纹。当浏览器通过ChromeDriver等WebDriver组件启动时,会在运行时环境中注入特定的JavaScript对象和属性,这些特征可能被网站的反自动化系统识别和拦截。

检测机制分析:WebDriver指纹识别

现代网站通常通过JavaScript运行时环境分析来识别自动化工具。

// WebDriver特征检测代码
const webdriverPattern = /^([a-z]){3}_.*_(Array|Promise|Symbol|JSON|Object|Proxy)$/;
const windowProperties = Object.getOwnPropertyNames(window);
const suspiciousProperties = windowProperties.filter(prop => webdriverPattern.test(prop));

console.log('检测到的WebDriver属性:', suspiciousProperties);

正常浏览器环境输出:


检测到的WebDriver属性:[]

Selenium控制的浏览器输出:


检测到的WebDriver属性:[  'cdc_adoQpoasnfa76pfcZLmcfl_Array',  'cdc_adoQpoasnfa76pfcZLmcfl_Object',  'cdc_adoQpoasnfa76pfcZLmcfl_Promise',  'cdc_adoQpoasnfa76pfcZLmcfl_Proxy',  'cdc_adoQpoasnfa76pfcZLmcfl_Symbol',  'cdc_adoQpoasnfa76pfcZLmcfl_JSON']

这些以cdc_前缀开头的属性是ChromeDriver在运行时注入的内部对象,成为了识别自动化环境的关键指纹。

代码测试

自动化正常情况

我们打开一个检测网站,可以看到目前是被他检测到了。我们也可以用JavaScript捕获到痕迹。

这个是检测selenium的一种手段,当然检测还有很多种。我们后面也会来慢慢处理掉这些痕迹。

image.png

image.png

代码修改

在chromium源代码中修改

找到这个路径:src\chrome\test\chromedriver\chrome\devtools_client_impl.cc

image.png

image.png

我们需要把这些注释掉。然后我们重新编译驱动。

ninja  -C  out/Default chromedriver

效果

查看编译完成后的效果

image.png

image.png

🤗 总结归纳

Selenium作为成熟的自动化测试框架,在面对现代反自动化检测时会比较无力。这时候我们可以通过修改源代码来进行去除这些源代码,已达到最优的效果。

更多精彩文章请移步到这里

搜索框传播样式-白色版.png