使用 selenium 抓取 bet365.com 时出现的最后一个问题

2024-02-03

在社区查找信息后,我在帖子中看到下一个代码直到几天前才起作用:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("window-size=1920,1080")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
browser=webdriver.Chrome(options=options,executable_path=r"chromedriver.exe")

browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
                                  "source": """
                                    Object.defineProperty(navigator, 'webdriver', {
                                      get: () => undefined
                                    })
                                  """
                                })
browser.execute_cdp_cmd('Network.setUserAgentOverride', 
                                    {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4240.198 Safari/537.36'})
browser.get('https://www.bet365.com')

之后,下一个作为解决方案: 用Notepad ++打开文件chromedriver.exe并搜索并将“cdc_”替换为“xyz_”并保存文件。并将此行添加到 chromedriver 的选项中: options.add_argument('--disable-blink-features=AutomationControlled')

我不知道为什么这对我不起作用。我正在使用 Chrome 88.0.4324.146 和 chromedriver 版本 88.0.4324.96,并执行以下代码:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("window-size=1920,1080")
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')
browser=webdriver.Chrome(options=options,executable_path=r"chromedriver.exe")

browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
                                  "source": """
                                    Object.defineProperty(navigator, 'webdriver', {
                                      get: () => undefined
                                    })
                                  """
                                })
browser.execute_cdp_cmd('Network.setUserAgentOverride', 
                                    {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4240.198 Safari/537.36'})
browser.get('https://www.bet365.com')

但执行后页面会卡住加载直至崩溃。


import subprocess
#other imports

subprocess.Popen(
   '"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --remote-debugging-port=9222', shell=True)
   
options = webdriver.ChromeOptions()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

driver = webdriver.Chrome(options=options)
driver.maximize_window()
driver.get('https://www.bet365.com')

看来该网站以某种方式检测自动化,解决方法是使用调试地址打开 chrome,然后使用上面的代码将 selenium 连接到此。根据您的环境更改chrome.exe

注意:运行此脚本之前请确保关闭所有 chrome 浏览器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 selenium 抓取 bet365.com 时出现的最后一个问题 的相关文章

随机推荐