如何通过 Python 使用 GeckoDriver 和 Firefox 使 Selenium 脚本无法检测?

新手上路,请多包涵

有没有办法使用 geckodriver 使您的 Selenium 脚本在 Python 中检测不到?

我正在使用 Selenium 进行抓取。我们是否需要使用任何保护措施才能使网站无法检测到 Selenium?

原文由 user12285770 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 695
2 个回答

selenium 驱动的 Firefox / GeckoDriver 被检测到 的事实并不取决于任何特定 的 GeckoDriverFirefox 版本。 网站 本身可以检测网络流量,并可以将 _浏览器客户端_(即 _Web 浏览器_)识别为 WebDriver 控制 的。

根据 WebDriver Interface 在最新的 WebDriver 编辑草稿中的文档 - W3C Living Document webdriver-active 最初设置为 false 的 _标志_,当用户代理处于下时设置为 true远程控制,即通过 Selenium 控制时。

Navigator自动化信息

现在 NavigatorAutomationInformation 接口不应在 WorkerNavigator 上公开。

mixin NavigatorAutomationInformation

所以,

 webdriver
    Returns true if webdriver-active flag is set, false otherwise.

然而,

 navigator.webdriver
    Defines a standard way for co-operating user agents to inform the document that it is controlled by WebDriver, for example so that alternate code paths can be triggered during automation.

所以,底线是:

Selenium 识别自己


然而,一些避免在网络抓取时被检测到的通用方法如下:

原文由 undetected Selenium 发布,翻译遵循 CC BY-SA 4.0 许可协议

有多种方法可以避免网站检测到 Selenium 的使用。

  1. 使用 Selenium 时,navigator.webdriver 的值默认设置为 true。此变量将出现在 Chrome 和 Firefox 中。此变量应设置为“未定义”以避免检测。

  2. 也可以使用代理服务器来避免检测。

  3. 某些网站能够使用浏览器的状态来确定您是否在使用 Selenium。您可以将 Selenium 设置为使用自定义浏览器配置文件来避免这种情况。

下面的代码使用了所有这三种方法。

 profile = webdriver.FirefoxProfile('C:\\Users\\You\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\something.default-release')

PROXY_HOST = "12.12.12.123"
PROXY_PORT = "1234"
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", PROXY_HOST)
profile.set_preference("network.proxy.http_port", int(PROXY_PORT))
profile.set_preference("dom.webdriver.enabled", False)
profile.set_preference('useAutomationExtension', False)
profile.update_preferences()
desired = DesiredCapabilities.FIREFOX

driver = webdriver.Firefox(firefox_profile=profile, desired_capabilities=desired)

代码运行后,您将能够手动检查由 Selenium 运行的浏览器现在是否具有您的 Firefox 历史记录和扩展。您还可以在 devtools 控制台中键入“navigator.webdriver”来检查它是否未定义。

原文由 CST 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题