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

使用Selenium+2captcha API处理Google reCAPTCHA时遇ERROR_CAPTCHA_UNSOLVABLE求助

解决2captcha API的ERROR_CAPTCHA_UNSOLVABLE问题

核心错误排查

  • 硬编码URL问题:你的solve函数里把url参数硬写成了https://2captcha.com/demo/recaptcha-v2,没有使用传入的目标网站URL。2captcha需要验证对应目标站点的reCAPTCHA,必须传入当前页面的真实URL,否则会直接导致验证失败。
  • 无效API密钥:代码里默认密钥是adsasd,如果环境变量APIKEY_2CAPTCHA没正确设置,用这个无效密钥肯定无法请求服务,要确保密钥是从2captcha后台获取的有效值。

代码修正建议

1. 修复solve函数的URL参数

把硬编码的URL改成传入的参数,同时完善异常返回逻辑:

def solve(siteKey, url):
    sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

    api_key = os.getenv('APIKEY_2CAPTCHA', '替换为你的有效2captcha密钥')
    solver = TwoCaptcha(api_key)

    try:
        result = solver.recaptcha(
            sitekey=siteKey,
            url=url)  # 使用传入的目标页面URL,不要硬编码

    except Exception as e:
        print(e)
        return None  # 异常时返回None,避免后续代码报错

    else:
        return result

2. 完善验证码结果的处理逻辑

设置g-recaptcha-response后,需要触发reCAPTCHA的验证回调,否则页面不会识别验证码已完成。同时要处理solve函数返回None的情况:

# 等待单个reCAPTCHA元素出现即可,无需等待所有元素
WebDriverWait(driver,23).until(EC.presence_of_element_located((By.XPATH,'//div[@class="g-recaptcha"]')))
google_recaptcha = driver.find_element(By.XPATH,'//div[@class="g-recaptcha"]').get_attribute('data-sitekey')
print("SOLVING CAPTCHA")
print(google_recaptcha)

result = solve(google_recaptcha, url)
if not result:
    print("验证码求解失败")
    # 可添加重试逻辑或终止流程
    driver.quit()
    exit()

result_code = result['code']
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'g-recaptcha-response')))

# 设置响应值
driver.execute_script(f"document.getElementById('g-recaptcha-response').innerHTML = '{result_code}'")
# 触发reCAPTCHA验证回调,通知页面验证码已完成
driver.execute_script("grecaptcha.getResponse()")

# 部分站点需要手动触发验证码区域的验证事件,可尝试添加:
# driver.find_element(By.XPATH,'//div[@class="g-recaptcha"]').click()

其他注意事项

  • 确保页面URL正确:传入solve的url必须是当前页面的完整URL(包含http/https、域名和路径),不能是相对路径或错误地址。
  • 添加重试机制:如果出现ERROR_CAPTCHA_UNSOLVABLE,可以添加最多3次的重试逻辑,因为2captcha的识别偶尔会失败。
  • 规避自动化检测:确保你的Selenium环境没有被网站检测为自动化工具,比如使用undetected-chromedriver替代普通ChromeDriver,或在启动浏览器时添加规避检测的参数,否则网站会发送更复杂的验证码,导致2captcha无法识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:23:40