python - 被带有 selenium 和 chromedriver 的网站阻止

标签 python selenium google-chrome selenium-chromedriver undetected-chromedriver

我在尝试使用 chrome 驱动程序和 selenium 访问网站 (bet365.com) 时遇到了一些麻烦(我被“阻止”了)。
我可以使用普通的 chrome 访问该站点,但是当我尝试使用 chrome 驱动程序时,它不起作用。
我之前遇到过这个问题,并通过使用以下一些选项(python)来纠正它:

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'PATH_TO\chromedriver.exe')
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})
driver.execute_cdp_cmd("Network.enable", {})
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'})

driver.get("https://www.bet365.com/")
现在,问题又回来了,此代码不再起作用以绕过保护。
有人能帮我吗?

最佳答案

万一Selenium驱动 ChromeDriver发起 正在检测到浏览上下文潜在的解决方案是使用 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')
    

  • 引用
    您可以在以下位置找到一些相关的详细讨论:
  • Undetected Chromedriver not loading correctly
  • 关于python - 被带有 selenium 和 chromedriver 的网站阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66092682/

    相关文章:

    java - Selenium webdriver 在页面更改后获取元素

    javascript - 从 chrome-extension-popup 的无序列表中删除一项也会删除该项之后的一项

    api - 如何从 Chrome 扩展程序中获取用户的位置?

    python - HSV2BGR 转换在 Python OpenCV 脚本中失败

    python with object 模拟多个with对象

    python - 从长队中获取所有组

    java - 通过 Apache Kafka 发送的 Python 处理的 Avro 格式数据在 Apache Camel/Java 处理器中进行反序列化时不会产生相同的输出

    java - Tomcat使用selenium时无法编译类

    java - 如何使用Selenium WebDriver打开手机版网站?

    javascript - 如何将chrome控制台变量值复制到当前页面脚本变量?