Selenium爬取leboncoin手动过验证码仍陷入循环问题
问题根本原因
DataDome的风控逻辑不是单次验证码校验,是全程采集浏览器指纹+行为特征综合判定,手动过验证码后依然循环跳验证,核心是Selenium启动的浏览器暴露了明确的自动化特征,被风控系统判定为机器人直接拒绝放行:
- 默认Selenium启动的Chrome会携带
enable-automation启动标识,navigator.webdriver属性默认为true,Blink内核会暴露AutomationControlled特征,这些都是DataDome规则里明确标记的机器人特征,哪怕手动完成验证码交互,系统检测到这些特征就会重置验证流程。 - 每次启动Selenium都是全新的无任何用户数据的裸浏览器环境,没有历史访问记录、站点Cookie、本地缓存,这种环境本身就属于高风险特征,风控权重很高。
- 代码里连续两次无间隔发起页面请求,没有任何真人访问的停顿、页面交互行为,访问行为特征触发了机器人规则。
可落地解决步骤
- 第一步:抹除基础自动化特征,在初始化Chrome Options时添加如下配置,启动后注入脚本覆盖自动化标识:
from selenium import webdriver import time options = webdriver.ChromeOptions() options.add_argument("--log-level=3") # 排除自动化启动开关 options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option("useAutomationExtension", False) # 禁用Blink层的自动化控制特征 options.add_argument("--disable-blink-features=AutomationControlled") driver = webdriver.Chrome(executable_path='chromedriver', options=options) # 注入脚本覆盖navigator.webdriver属性,避免被检测 driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})" })
- 第二步:配置持久化浏览器用户目录,不要每次启动都用全新环境。本地新建一个空文件夹,把路径加到启动参数里,第一次启动手动完成验证码验证后,站点的Cookie、验证状态会存在这个目录里,后续启动复用即可大幅降低风控等级:
# 替换为你自己本地新建的空文件夹的绝对路径 options.add_argument("--user-data-dir=C:/selenium_chrome_profile")
- 第三步:模拟正常用户访问行为,不要无间隔连续跳转页面。访问首页后停顿3-5秒,做一点简单的页面滚动,再跳转目标商品页,避免行为特征触发风控:
driver.get("https://www.leboncoin.fr") # 模拟真人停顿 time.sleep(4) # 简单滚动页面 driver.execute_script("window.scrollTo(0, 300)") time.sleep(2) url = "https://www.leboncoin.fr/voitures/2182521551.htm" driver.get(url)
- 注意事项:不要开启无头模式,无头模式下的浏览器渲染特征、指纹和正常桌面浏览器差异极大,会被DataDome直接识别。
内容的提问来源于stack exchange,提问作者DheltaHalo
相关产品推荐
相关产品推荐

