检查是否检测到selenium webdriver?

问题描述 投票:0回答:3

有什么方法可以检查当我从 python 运行 selenium webdriver 或从 javascript 运行 puppeteer 时,我正在访问的网站是否检测到我正在运行机器人?有没有网站可以告诉您机器人测试是否会失败? (例如:cloudflare 或验证码)

谢谢

javascript python selenium selenium-webdriver webdriver
3个回答
2
投票

这是 Cloudflare 的机器人测试:https://nowsecure.nl(如果检测到 Selenium/automation,它将永远继续加载页面。如果您绕过检测,您将看到您通过的闪烁指示灯。)

有一个 Python 库可以让你绕过机器人拦截器:unDetected-chromedriver

该工具已集成到 SeleniumBase 中,以便您可以作为 Selenium Python 测试的 pytest 命令行选项 (

--uc
) 绕过机器人检测:
pytest --uc


1
投票

谢谢你的回答。我设法找到了更多资源。这是我找到的所有内容的列表:

https://nowsecure.nl/ (thanks to user Michael Mintz)
https://bot.sannysoft.com
https://browserleaks.com/
https://bot.incolumitas.com/
https://fingerprintjs.github.io/fingerprintjs/
https://antoinevastel.com/bots/
https://www.google.com/recaptcha/api2/demo
https://recaptcha-demo.appspot.com/

在所有网站中,我发现 browserleaks 和 incolumnitas 是最全面的。我将保留这个问题,如果您知道的话,请随时添加更多内容。


0
投票

我是上述回复中提到的作者之一。机器人检测经常发展,因此我写了一篇更新的文章来解释如何从 2024 年 6 月开始检测使用 Selenium 检测的(无头)Chrome(即使经过修改)。我还创建了一个测试页面,以便您可以验证您的检测到机器人。

测试用户代理中是否存在

HeadlessChrome
子字符串并验证
navigator.webdriver
的值对于不修改过多指纹的机器人仍然很有帮助。

否则,有一种新的检测技术旨在检测 Selenium 等仪器框架使用的 CDP 自动化(Chrome devtool 协议)。

新测试如下:

var cdpDetected = false;
var e = new Error();
Object.defineProperty(e, 'stack', {
   get() {
    cdpDetected = true;
   }
});

// This is part of the detection, the console.log shouldn't be removed!
console.log(e);

if (cdpDetected) {
    isBot = true;
}
© www.soinside.com 2019 - 2024. All rights reserved.