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

如何点击invisible-recaptcha v2确认按钮?已通过JS回调函数解决

解决reCAPTCHA验证后的提交问题

你已经通过python-capmonster获取到验证响应并填入g-recaptcha-response文本域,但reCAPTCHA不会自动识别该值,需要手动触发验证流程,无需点击iframe内的验证/跳过按钮,具体解决方案如下:

核心逻辑说明

reCAPTCHA v2的验证机制是:填入有效响应值后,需触发其内部的验证回调,或让页面感知到响应已填入,才能完成验证并解锁后续的结账按钮。

具体实现代码

  1. 触发文本域变更事件
    仅填入值无法让reCAPTCHA感知到内容变化,需通过JavaScript触发input事件:
# 原有填入响应的代码
driver.execute_script('document.getElementById("g-recaptcha-response").innerHTML = "%s"' % response)
# 触发文本域变更事件
driver.execute_script('''
    const textarea = document.getElementById("g-recaptcha-response");
    const inputEvent = new Event('input', { bubbles: true });
    textarea.dispatchEvent(inputEvent);
''')
  1. 调用reCAPTCHA的验证回调函数
    每个reCAPTCHA组件都绑定了回调函数,可通过data-callback属性获取并调用:
# 获取当前reCAPTCHA组件的回调函数名
callback_func = driver.execute_script('''
    const recaptchaWidget = document.querySelector('.g-recaptcha');
    return recaptchaWidget.getAttribute('data-callback');
''')
# 调用回调函数完成验证
if callback_func:
    driver.execute_script(f'{callback_func}("{response}");')
  1. 定位并点击页面结账按钮
    完成reCAPTCHA验证后,页面结账按钮会从禁用变为可用,直接定位点击即可:
# 需根据目标页面实际元素调整选择器,以下为示例
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 等待结账按钮可点击
checkout_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[data-testid="checkout-button"]'))
)
checkout_btn.click()

注意事项

  • 不要操作iframe内的reCAPTCHA按钮,你已通过capmonster完成人机验证,触发回调即可完成流程。
  • 若页面存在多个reCAPTCHA组件,需确保定位到当前触发验证的那个widget。
  • 若上述方法无效,可尝试调用grecaptcha.render重新渲染组件并传入响应值,但这种场景极少出现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:02:33