是否可以检测到使用调试浏览器?

我只是想知道我们使用调试模式浏览器的网页是否可以检测到,如以下代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# already opened a browser in debugging mode at port 8989

opt = Options()
opt.add_experimental_option('debuggerAddress','localhost:8989')
driver=webdriver.Chrome(executable_path="my driver path",chrome_options=opt)
driver.get('http://google.com')
zhanghang921224 回答:是否可以检测到使用调试浏览器?

是的,Selenium 很容易被检测到,尤其是所有主要的反机器人提供商(Cloudflare、Akamai 等)。

为什么?

  1. Selenium 和大多数其他主要网络驱动程序将名为 navigator.webdriver 的浏览器变量(网站可以访问)设置为 true。您可以前往 Google Chrome 控制台并运行 console.log(navigator.webdriver) 自行检查。如果您使用的是普通浏览器,它将是错误的。

  2. 用户代理,通常所有设备都有所谓的“用户代理”,这是指访问网站的设备。 Selenium 的用户代理看起来像这样:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) HeadlessChrome/59.0.3071.115 Safari/537.36。你抓到了吗?包括 HeadlessChrome,这是另一种检测途径。

这些只是检测 Selenium 浏览器的多种方式中的两种,我强烈建议您也阅读 thisthis

最后,如果您想要一个简单、直接的解决方案来绕过检测,该解决方案实现了我们讨论过的几乎所有这些概念,我建议您使用 undetected-chromedriver。这是一个开源项目,它尽最大努力让您的 Selenium chromedriver 看起来更人性化。

本文链接:https://www.f2er.com/573.html

大家都在问