Bet365 检测 Selenium Chromedriver

Ska*_*kat 5 python selenium selenium-chromedriver

我有一个问题,https://bet365.com开始阻止 Selenium 机器人。它卡在白屏上。

我已经尝试了一切,现在我的代码看起来像:

username = os.getenv("USERNAME")
userProfile = "C:\\Users\\" + username + "\\AppData\\Local\\Google\\Chrome\\User Data\\Default"

opts = webdriver.ChromeOptions()

opts.add_argument("user-data-dir={}".format(userProfile))
opts.add_argument('--profile-directory=Profile 2')

opts.add_argument("user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'")

opts.add_experimental_option('useAutomationExtension', False)
opts.add_experimental_option("excludeSwitches", ["enable-automation", "ignore-certificate-errors", "safebrowsing-disable-download-protection", "safebrowsing-disable-auto-update", "disable-client-side-phishing-detection"])

opts.add_argument("--disable-notifications")
opts.add_argument("--disable-blink-features")
opts.add_argument("--disable-blink-features=AutomationControlled")
opts.add_experimental_option("excludeSwitches", ["enable-automation"])
opts.add_experimental_option('useAutomationExtension', False)

self.browser = webdriver.Chrome(options=opts, executable_path=self.resource_path("chromedriver.exe"))

window_size = self.browser.execute_script("""
        return [window.outerWidth - window.innerWidth + arguments[0],
          window.outerHeight - window.innerHeight + arguments[1]];
        """, width, height)
self.browser.set_window_size(*window_size)

self.browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """
        Object.defineProperty(navigator, 'webdriver', {
        get: () => undefined
    })
    """
})

self.browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """
        Object.defineProperty(navigator, 'languages', {
        get: () => ["en-US", "en", "es"]
    })
    """
})

self.browser.execute_cdp_cmd("Network.enable", {})
self.browser.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browser1"}})

self.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.4280.66 Safari/537.36'})
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 geckodriver 在 Firefox 上启动机器人,并尝试使用 phantomjs 启动它,但它也没有结果。最后,我试图通过将 $cdc_ 更改为 smth else ($aba_) 来混淆 chromedriver.exe 中的 JavaScript 代码,bot 启动,一切正常,但同样无法访问 Bet365。

启动程序浏览器后卡在这个:Bet365 Screenshot

当我自己手动访问该网站时,一切正常,它会加载。

谁能帮我解决这个问题?