gpt4 book ai didi

python - 在 Heroku 上托管时,Selenium 应用程序重定向到 Cloudflare 页面

转载 作者:行者123 更新时间:2023-12-04 08:35:02 27 4
gpt4 key购买 nike

我制作了一个使用 selenium 访问网站并获取信息的不和谐机器人,当我在本地运行我的代码时我没有任何问题,但是当我部署到 Heroku 时,我得到的第一个 URL 将我重定向到页面 Attention Required! | Cloudflare .
我试过了:

  • Selenium webdriver: Modifying navigator.webdriver flag to prevent selenium detection

  • 以及许多其他与我使用相同的设置:
    options = Options()
    options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
    options.add_experimental_option("excludeSwitches", ["enable-logging", "enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    options.add_argument("--disable-blink-features=AutomationControlled")
    options.add_argument("--headless")
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--no-sandbox")
    self.driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"), options=options)
    self.driver.execute_cdp_cmd('Network.setUserAgentOverride', {
    "userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
    但这不起作用,代码仅在本地运行
    PS:本地我在Windows上
    我被重定向到的页面来源:
    https://gist.github.com/rafalou38/9ae95bd66e86d2171fc8a45cebd9720c
    page source

    最佳答案

    万一Selenium驱动 ChromeDriver发起浏览上下文被重定向到页面...
    Attention Required! | Cloudflare...
    ...这意味着 Cloudflare程序阻止您的程序访问 AUT(被测应用程序)。

    分析
    Cloudflare 阻止访问的原因可能如下:

  • Cloudflare 已将您的程序识别为 机器人 并且访问被拒绝。您可以在 Can a website detect when you are using selenium with chromedriver? 中找到详细讨论。 .

  • 由于以下因素,访问可能会被拒绝:
  • Cloudflare 正试图应对可能的 Dictionary attack .
  • 您的系统 IP 被 Cloudflare 列入黑名单 mining 比特币门罗币 使用您的系统。

  • 在这些情况下,您最终会被重定向到 captcha。页。

    解决方案
    在这些情况下,一个潜在的解决方案是使用 undetected-chromedriver初始化 Chrome 浏览上下文。
    undetected-chromedriver是一个优化的 Selenium Chromedriver 补丁,它不会触发像 Distill Network/Imperva/DataDome/Botprotect.io 这样的反僵尸服务。它会自动下载驱动程序二进制文件并对其进行修补。
  • 代码块:
    import undetected_chromedriver as uc
    from selenium import webdriver

    options = webdriver.ChromeOptions()
    options.add_argument("start-maximized")
    driver = uc.Chrome(options=options)
    driver.get('https://bet365.com')

  • 替代解决方案
    另一种解决方案是通过 Project Honey Pot 将您的 IP 地址列入白名单。网站,您可以在标题为 Attention Required one more step captcha CloudFlare Error 的视频中找到详细的端到端流程。 .

    关于python - 在 Heroku 上托管时,Selenium 应用程序重定向到 Cloudflare 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64842858/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com