使用SeleniumBase UC模式绕过Datadome检测遇阻求解决方案
排查SeleniumBase UC模式绕过Datadome拦截的问题
以下是针对你遇到的Datadome更新后拦截问题的排查方向和调整建议:
1. 升级SeleniumBase到最新版本
Datadome检测逻辑更新后,旧版本SeleniumBase集成的undetected-chromedriver可能存在未修复的指纹漏洞。执行命令升级:
pip install -U seleniumbase
2. 强化浏览器指纹伪装
UC模式的默认伪装可能已被Datadome识别,手动补充以下配置:
- 强制禁用自动化特征标志:
sb.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """ }) - 使用对应Chrome版本的真实用户代理,替换默认UA:
real_ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" sb.driver.execute_cdp_cmd("Network.setUserAgentOverride", {"userAgent": real_ua}) - 添加隐私相关启动参数,初始化SB时补充:
with SB(uc=True, incognito=True, headless=False, args=[ "--disable-webrtc", "--disable-blink-features=AutomationControlled", "--disable-gpu", "--no-sandbox" ]) as sb: # 后续操作
3. 优化交互行为的真实性
固定sleep和线性鼠标移动仍可能被识别,调整为更贴近人类的行为:
- 用随机范围的等待替代固定sleep:
import random time.sleep(random.uniform(1.2, 3.8)) - 让鼠标移动路径更随机,避免直线直达:
# 先移动到目标元素附近的随机偏移位置 pyautogui.moveTo(x + random.randint(-15, 15), y + random.randint(-15, 15), duration=random.uniform(0.3, 0.6)) time.sleep(random.uniform(0.1, 0.4)) # 再移到元素中心点击 pyautogui.moveTo(x + width//2, y + height//2, duration=random.uniform(0.2, 0.5)) pyautogui.click() - 手动完成滑块后,不要立刻继续操作:停留3-5秒随机时间,模拟滚动页面、移动鼠标等自然行为,再执行后续步骤。
4. 完善请求头与网络特征
确保请求头和真实浏览器完全一致,补充缺失的字段:
sb.driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", { "headers": { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", "Referer": "目标页面的前置访问URL" } })
5. 避免固定操作模式
- 不要重复执行完全一致的操作流程,每次操作的点击位置(比如按钮边缘而非中心)、等待时长、滚动幅度都加入随机变量。
- 控制访问频率,避免短时间内重复请求同一页面,增加访问间隔的随机性。
内容的提问来源于stack exchange,提问作者steve
相关产品推荐
相关产品推荐

