Node.js/Puppeteer无提交按钮场景下通过callback提交hCaptcha token问询
无提交按钮站点hCaptcha token提交方案(Puppeteer/Node.js环境)
你已经完成的token填充逻辑是正确的,无需调整,接下来可以通过以下两种方式完成验证提交:
方法1:调用已找到的hCaptcha回调函数
如果你已经通过调试拿到了站点绑定的hCaptcha验证回调(包括你提到的包含execute部分的函数),直接在Puppeteer的页面上下文执行该回调即可,示例代码如下:
// response为你从2captcha获取到的验证解 await page.evaluate((captchaToken) => { // 替换为你实际调试得到的回调函数,以下为常见示例 // 1. 如果是hCaptcha官方暴露的执行方法 window.hcaptcha.execute(captchaToken); // 2. 如果是站点自定义的验证回调函数 // window.customHcaptchaCallback(captchaToken); }, response);
回调执行后站点会自动完成验证逻辑,进入后续流程。
方法2:触发事件模拟用户完成验证行为
如果暂时找不到明确的回调函数,可以通过触发对应DOM元素的常用事件,让站点检测到验证已完成,示例代码如下:
await page.evaluate(() => { const hcaptchaTextarea = document.querySelector('textarea[name="h-captcha-response"]'); // 依次触发输入、变更、失焦事件,触发站点的表单校验逻辑 hcaptchaTextarea.dispatchEvent(new Event('input', { bubbles: true })); hcaptchaTextarea.dispatchEvent(new Event('change', { bubbles: true })); hcaptchaTextarea.dispatchEvent(new Event('blur', { bubbles: true })); // 针对你测试的鞋类发售站点,额外触发hCaptcha容器的验证完成事件 const hcaptchaWrapper = document.querySelector('.h-captcha'); hcaptchaWrapper.dispatchEvent(new Event('verified', { bubbles: true })); // 可选:如果站点是表单提交逻辑,直接触发表单提交事件 // document.querySelector('form').dispatchEvent(new Event('submit', { bubbles: true })); });
测试场景补充说明
你提到的测试站点为单页应用,验证完成后表单会自动解锁提交权限,你可以在执行上述逻辑后等待1-2秒,再检测表单是否可提交,或者直接调用站点挂载在window对象下的报名提交方法。
内容的提问来源于stack exchange,提问作者S..
相关产品推荐
相关产品推荐

