You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium处理网页爬取中的Cookies与人机验证问题

解决Selenium中的Cookies授权弹窗与人机验证问题

一、处理Cookies授权弹窗

别用固定的time.sleep,用显式等待定位并点击同意按钮更可靠,能避免页面加载慢导致的元素找不到问题。示例代码:

# 初始化显式等待对象,最长等待10秒
wait = WebDriverWait(driver, 10)
try:
    # 根据实际页面的按钮特征调整定位方式,这里以"Accept All"文本按钮为例
    accept_cookie_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Accept All')]")))
    accept_cookie_btn.click()
except:
    # 若未检测到弹窗,直接跳过即可
    pass

注意:不同网站的Cookies按钮选择器不同,需要用浏览器开发者工具(F12)查看按钮的id、class或文本内容,替换上述定位逻辑。

二、处理人机验证(reCAPTCHA等)

Selenium很难直接绕过专业的人机验证,以下是几种可行的解决思路:

  • 使用undetected-chromedriver:这是经过修改的ChromeDriver,能规避大部分反爬检测,降低触发人机验证的概率。安装后替换原有的webdriver即可:

    from undetected_chromedriver import Chrome
    
    driver = Chrome()
    driver.maximize_window()
    driver.get(url)
    
  • 手动介入完成验证:在触发验证时暂停代码执行,手动完成验证后再继续运行:

    # 点击登录按钮后触发验证
    input("请手动完成人机验证,完成后按回车继续...")
    # 后续业务代码
    
  • 复用已登录Cookie:先手动登录一次目标网站,导出登录状态的Cookie,然后在Selenium中加载这些Cookie,直接跳过登录和验证步骤:

    # 示例:加载提前导出的Cookie(需将Cookie整理为字典列表格式)
    cookies = [{"name": "auth_token", "value": "xxxxxx"}, ...]
    driver.get(url)
    for cookie in cookies:
        driver.add_cookie(cookie)
    # 刷新页面后即可维持登录状态
    driver.refresh()
    
  • 打码平台辅助:对接第三方打码服务,通过API自动完成验证,但这种方式需要付费,且需注意合规性。

内容的提问来源于stack exchange,提问作者Ido Kobi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:07:09