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

如何使用Python3+Selenium解决reCAPTCHA验证问题

解决Selenium处理reCAPTCHA验证的问题

问题场景

你用Python3 + Selenium + geckodriver编写爬虫,登录网站时遇到reCAPTCHA验证:有时仅需点击复选框即可通过,有时会触发完整的图片验证任务,现有代码无法处理后者,需要解决这个问题。

现有代码

# PAGE driver.get("url")
# LOGIN
step = 'step_1;01_-_Login'
timeInit = time.time()
driver.find_element(By.ID, "email").send_keys("user")  
driver.find_element(By.ID, "password").send_keys("Pass")
driver.switch_to.frame(0)

# CAPTCHA
time.sleep(3)
driver.find_element(By.CSS_SELECTOR, ".recaptcha-checkbox-border").click()
time.sleep(2)

可行解决方案

1. 手动干预(最简单直接)

reCAPTCHA的设计目标就是阻止自动化工具,完整验证任务很难通过纯代码自动完成。可以在代码中加入检测逻辑,当发现触发完整验证时,暂停程序让人工完成验证:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 登录和点击复选框后
try:
    # 检查是否出现完整reCAPTCHA验证的iframe(根据实际页面元素调整选择器)
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'iframe[src*="recaptcha/api2/bframe"]'))
    )
    print("请手动完成reCAPTCHA验证,完成后按回车继续...")
    input()
except:
    # 没有触发完整验证,继续后续流程
    pass

2. 使用第三方验证码服务

可以借助专门的验证码识别服务(如2Captcha),这类服务通过人工或AI识别验证码后返回验证结果,你只需调用其API获取token,再通过Selenium注入到页面中。注意:使用这类服务需遵守目标网站的robots协议和相关法律法规。

3. 优化爬虫行为,降低触发验证的概率

reCAPTCHA会根据请求特征判断是否为机器人,优化操作模式可以减少验证出现的频率:

  • 替换固定time.sleep()为显式等待,等待元素加载完成再操作,避免过快的机械操作
  • 随机化操作间隔,比如用time.sleep(random.uniform(1,3))代替固定等待时间
  • 设置真实的浏览器用户代理,避免使用Selenium默认标识
  • 模拟人类的鼠标移动、页面滚动等操作,而非直接调用click()和send_keys()
  • 避免频繁更换IP或短时间内发起大量请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:17:11