如何用Python、Selenium结合2captcha提交ReCaptcha Token?无提交按钮解决方案
解决无提交按钮的ReCaptcha验证问题
以下是几种常见的处理方式,你可以根据页面实际情况尝试:
1. 触发Invisible ReCaptcha的回调函数
如果是隐形ReCaptcha(元素带有data-size="invisible"属性),本身就没有提交按钮,验证逻辑依赖回调函数完成:
- 先找到页面中ReCaptcha元素的
data-callback属性值(比如onCaptchaValid) - 直接调用这个全局回调函数并传入token:
window.onCaptchaValid("TOKEN_FROM_2CAPTCHA"); - 如果找不到明确的回调,也可以尝试调用ReCaptcha官方的执行方法:
grecaptcha.execute('你的站点key', {action: 'submit'}).then(function(token) { document.getElementById("g-recaptcha-response").innerHTML = token; // 触发页面后续的表单提交或验证逻辑 });
2. 触发页面本身的表单提交
很多时候ReCaptcha是绑定在页面的表单上,验证通过后需要提交整个表单,而非ReCaptcha自带按钮:
- 找到页面的表单元素,直接调用提交方法:
document.querySelector('form').submit(); - 或者找到表单的提交按钮(通常是
type="submit"的按钮/输入框),模拟点击:document.querySelector('button[type="submit"], input[type="submit"]').click();
3. 手动触发验证事件
有些页面会监听g-recaptcha-response元素的变化来触发验证,设置token后可以手动触发change事件:
const respEl = document.getElementById("g-recaptcha-response"); respEl.innerHTML = "TOKEN_FROM_2CAPTCHA"; // 触发change事件通知页面验证完成 respEl.dispatchEvent(new Event('change'));
4. ReCaptcha v3的特殊处理
v3版本是后台静默验证,不需要前端提交按钮,你只需要在发送页面请求(比如表单提交、API调用)时,把g-recaptcha-response的token作为参数一起传给后端即可。
排查小技巧
- 用浏览器F12打开开发者工具,查看ReCaptcha元素的属性,确认是v2隐形版还是v3版
- 在控制台搜索
grecaptcha或data-callback,定位页面的验证逻辑 - 查看表单的提交事件监听,确认验证通过后触发的动作
内容的提问来源于stack exchange,提问作者JamesHorab
相关产品推荐
相关产品推荐

