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

使用Selenium结合Anticaptcha API填充reCAPTCHA后无法提交响应的技术求助

解决reCAPTCHA验证响应提交失败的问题

看起来你已经成功通过Anticaptcha拿到了reCAPTCHA的验证响应,但在提交环节踩了几个常见的坑,我来帮你梳理并修正:

核心问题分析

  1. 错误地刷新页面:填充完响应后直接调用driver.refresh()会完全重置页面状态,之前写入的验证响应会被清空,自然无法触发后续跳转。
  2. 未切回主页面上下文:你一开始切换到了reCAPTCHA的iframe,但后续操作主页面元素时没有切回主文档,导致脚本根本找不到目标元素。
  3. 仅获取元素变量未执行提交动作:你只是定义了captchaSubmitEl变量,但没有调用点击或提交方法,相当于找到了元素却没触发它的核心功能。

修正后的实现代码

下面是调整后的完整代码,我标注了关键修复点:

# 完成验证码任务后,先切回主页面上下文(因为之前切换到了reCAPTCHA的iframe)
driver.switch_to.default_content()

# 获取验证响应并填充到隐藏的input字段
response = job.get_solution_response()
# 注意:部分页面用innerHTML,部分用value,两种写法都可以尝试
driver.execute_script("document.getElementById('g-recaptcha-response').value='{}';".format(response))
# 备选写法:driver.execute_script("document.getElementById('g-recaptcha-response').innerHTML='{}';".format(response))

# 触发reCAPTCHA的官方验证回调
# reCAPTCHA本身需要确认响应有效性,调用grecaptcha.submit()会启动验证流程
driver.execute_script("if (typeof grecaptcha !== 'undefined') { grecaptcha.submit(); }")

# 等待验证完成(生产环境建议用WebDriverWait替代time.sleep,更稳定)
import time
time.sleep(2)

# 触发页面的提交按钮
submit_btn = driver.find_element_by_id('captcha-submit')
submit_btn.click()

额外优化建议

  • 恢复site_key自动提取:你注释掉了通过正则从url中提取site_key的代码,建议恢复这部分逻辑,这样代码能适配页面site_key变化的场景,不用硬编码。
  • 使用显式等待提升稳定性:替换time.sleep()为WebDriverWait,比如等待提交按钮可点击,能避免网络延迟导致的元素未加载问题:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'captcha-submit'))).click()
    
  • 适配自定义回调场景:有些网站会给reCAPTCHA绑定自定义回调函数(在data-callback属性中),如果grecaptcha.submit()无效,可以尝试调用这个自定义回调:
    # 获取页面绑定的自定义回调函数名
    callback_name = driver.find_element_by_class_name('g-recaptcha').get_attribute('data-callback')
    driver.execute_script("{}();".format(callback_name))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:57:29