Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium w/Firefox 88对navigator.webdriver的更改_Python_Selenium_Selenium Webdriver_Firefox_Web Scraping - Fatal编程技术网

Python Selenium w/Firefox 88对navigator.webdriver的更改

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

Firefox 88的最新版本包含了一个选项,该选项终止了用户在浏览器通过木偶协议运行时将navigator.webdriver属性设置为false的功能。不幸的是,如果站点使用Cloudflare的DDOS防护之类的服务(该服务在远程浏览器上检查该属性,并陷入无休止的循环而不是重定向到请求的页面),这实际上会使某些web刮取活动变得不可能

现在有没有人知道一种替代方法,比如

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 goto
    about: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
    }