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

2024-05-18 23:28:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

profile.set_preference("dom.webdriver.enabled", False)

profile.set_preference("useAutomationExtension", False)

现在没有效果了

具体来说,我将Selenium与Python绑定一起使用,但我认为使用任何框架的解决方案都可以根据我的情况进行转换


Tags: 用户版本falsenavigator协议属性浏览器firefox
2条回答

我尝试向Firefox添加扩展,在加载任何其他脚本之前覆盖navigator.webdriver。它似乎不仅与navigator.webdriver有关,还与其他方面有关

我在document_start上执行了以下代码

script = document.createElement("script"); script.type = 'text/javascript'; script.id = "scripttttttt"; script.innerHTML = "Object.defineProperty(navigator, 'webdriver', {get: () => undefined});document.getElementById('scripttttttt').remove();"; document.documentElement.prepend(script);

这足以打开https://ebay-kleinanzeigen.de/m-einloggen.html,但不足以登录到Google帐户

您可以停止firefox更新到版本88。为此,请执行以下任务

  1. 删除firefox版本88(如果已更新/安装)

    sudo-apt-get-purge-firefox

  2. 删除firefox配置文件(如果仍然存在)

    rm-rf~/.mozilla/

  3. 从缓存中搜索firefox旧版本

    apt缓存显示firefox | grep版本

  4. 安装除88以外的所需版本

    sudo apt get install firefox=desiredversion

    例如:

    sudo apt get install firefox=75.0+build3-0ubuntu1

  5. 创建一个文件policies.json,其中包含以下位置的策略:/usr/lib/firefox/distribution。这将停止对版本88的强制更新

    {
    "policies": {
        "AppUpdateURL": "http://127.0.0.1/",
        "DisableAppUpdate": true,
        "DisableFirefoxStudies": true,
        "DisableSystemAddonUpdate": true,
        "DisableTelemetry": true,
        "ExtensionUpdate": false
    }
    

    }

  6. 打开firefox gotoabout:config,点击我接受风险或它显示的任何内容

  7. 搜索app.update.auto并将其切换到False

  8. 最后检查版本以确认

相关问题 更多 >

    热门问题