使用Python Selenium访问Bet365网页出现随机持续刷新问题
问题原因
这个问题站点反爬机制和脚本配置遗漏两个因素都存在,其中站点反爬是核心诱因:
- 站点侧:Bet365部署了成熟的反自动化检测系统,能够精准识别Selenium驱动的浏览器特征,包括webdriver全局属性、自动化控制标识、浏览器指纹差异等,检测到非人工访问后就会触发随机时长的无限刷新、验证码拦截、访问拒绝等反制策略,这是你遇到问题的主要原因。
- 脚本侧:你当前使用原生的Selenium Firefox驱动,没有做任何反检测配置,且页面等待逻辑不完善,特征过于明显很容易被识别,同时不完善的等待逻辑可能导致页面未完成渲染就触发元素查找,进一步增加了反爬触发概率。
修复方案
1. 增加浏览器反检测配置
优先给Firefox驱动添加特征隐藏配置,抹除自动化痕迹,参考配置如下:
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By import time import random options = webdriver.FirefoxOptions() # 禁用webdriver标识 options.set_preference("dom.webdriver.enabled", False) options.set_preference("useAutomationExtension", False) # 随机替换为最新的桌面端Firefox用户代理 options.set_preference("general.useragent.override", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0") # 禁用WebRTC避免真实IP泄露 options.set_preference("media.peerconnection.enabled", False) # 关闭自动化相关的安全提示 options.set_preference("security.warn_entering_secure", False) options.set_preference("security.warn_entering_weak", False) driver = webdriver.Firefox(options=options) # 执行JS抹除剩余webdriver痕迹 driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") driver.implicitly_wait(10)
2. 优化页面等待逻辑
Bet365为单页应用,内容都是异步渲染,原生隐式等待不足以覆盖渲染场景,建议改用显式等待定位目标元素,避免触发不必要的页面刷新:
driver.get("https://www.bet365.com/#/AC/B9/C20511432/D1/E148/F2/") # 随机等待2-4秒模拟人工访问延迟 time.sleep(random.uniform(2,4)) # 显式等待目标元素加载完成,最长等待30秒 try: WebDriverWait(driver, 30).until( EC.presence_of_element_located((By.CLASS_NAME, "sgl-MarketFixtureDetailsLabel")) ) fightInfo = driver.find_element(By.CLASS_NAME, "sgl-MarketFixtureDetailsLabel") americanOdds = driver.find_elements(By.CLASS_NAME, "sgl-MarketOddsExpand") except Exception as e: print("元素加载失败,可尝试刷新页面重试")
3. 额外反爬规避建议
- 控制访问频率,两次页面请求之间增加3-7秒的随机延迟,避免短时间高频请求触发风控
- 优先使用家用宽带IP访问,不要用机房IP、公共代理IP,Bet365对这类IP的拦截率极高
- 如果仍然出现随机刷新,可适当模拟人工操作,比如随机滚动页面、点击非核心区域,降低自动化特征
内容的提问来源于stack exchange,提问作者Alfred Langer
相关产品推荐
相关产品推荐

