Python Selenium w/Firefox 88对navigator.webdriver的更改
Firefox 88的最新版本包含了一个选项,该选项终止了用户在浏览器通过木偶协议运行时将navigator.webdriver属性设置为false的功能。不幸的是,如果站点使用Cloudflare的DDOS防护之类的服务(该服务在远程浏览器上检查该属性,并陷入无休止的循环而不是重定向到请求的页面),这实际上会使某些web刮取活动变得不可能 现在有没有人知道一种替代方法,比如Python Selenium w/Firefox 88对navigator.webdriver的更改,python,selenium,selenium-webdriver,firefox,web-scraping,Python,Selenium,Selenium Webdriver,Firefox,Web Scraping,Firefox 88的最新版本包含了一个选项,该选项终止了用户在浏览器通过木偶协议运行时将navigator.webdriver属性设置为false的功能。不幸的是,如果站点使用Cloudflare的DDOS防护之类的服务(该服务在远程浏览器上检查该属性,并陷入无休止的循环而不是重定向到请求的页面),这实际上会使某些web刮取活动变得不可能 现在有没有人知道一种替代方法,比如 profile.set_preference("dom.webdriver.enabled", Fa
profile.set_preference("dom.webdriver.enabled", False)
或
现在没有效果了
具体来说,我将Selenium与Python绑定一起使用,但我认为使用任何框架的解决方案都可以转换到我的情况。我尝试向Firefox添加扩展,在加载任何其他脚本之前覆盖navigator.webdriver。它似乎不仅与navigator.webdriver有关,还与其他方面有关 我在document_start上执行了以下代码
script=document.createElement(“脚本”);script.type='text/javascript';script.id=“scripttttt”;script.innerHTML=“Object.defineProperty(导航器,'webdriver',{get:()=>undefined});document.getElementById('scripttttttt')。remove();”;document.documentElement.prepend(脚本)代码>
这足以打开,但不足以登录Google帐户。您可以停止firefox更新到版本88。为此,请执行以下任务
删除firefox版本88(如果已更新/安装)
sudo-apt-get-purge-firefox
删除firefox配置文件(如果仍然存在)
rm-rf~/.mozilla/
从缓存中搜索firefox旧版本
apt缓存显示firefox | grep版本
安装除88以外的所需版本
sudo apt get install firefox=desiredversion
例如:
sudo apt get install firefox=75.0+build3-0ubuntu1
创建一个文件policies.json,其中包含以下位置的策略:/usr/lib/firefox/distribution。这将停止对版本88的强制更新
{
"policies": {
"AppUpdateURL": "http://127.0.0.1/",
"DisableAppUpdate": true,
"DisableFirefoxStudies": true,
"DisableSystemAddonUpdate": true,
"DisableTelemetry": true,
"ExtensionUpdate": false
}
}
打开firefox gotoabout:config
并单击我接受风险或它显示的任何内容
搜索app.update.auto
并将其切换到False
最后检查版本以确认
您正在使用哪个版本的FirefoxDriver?如果您尚未升级FirefoxDriver,请执行此操作并重试。因为他们修补了Firefox,他们可能也修补了FirefoxDriver for Selenium。@GregBurghardt我使用的是GeckoDriver v0.29.1,我认为这是最新的版本。嘿,Firefox 88也有问题。selenium实例不再加载以下网站。这与你上面提到的问题有关吗@如果你找到了解决方案,你介意发布吗?@JeffSahol我找不到任何优雅的解决方案。最终,我遵循了本指南,然后对FF 88源代码进行了必要的编辑,并构建了自己的二进制文件。在查看为该URL加载的所有资源时,我无法找到对navigator.webdriver的任何显式引用,但对可用于检测的其他系统/环境统计信息进行了多次检查webdriver使用情况,如CPU统计数据、屏幕大小、接触点数量、可用插件等。
{
"policies": {
"AppUpdateURL": "http://127.0.0.1/",
"DisableAppUpdate": true,
"DisableFirefoxStudies": true,
"DisableSystemAddonUpdate": true,
"DisableTelemetry": true,
"ExtensionUpdate": false
}