Selenium爬取网站遇reCAPTCHA问题:已获API数据却无法触发验证
reCAPTCHA无提交按钮时的验证触发方案
以下是针对无提交按钮的reCAPTCHA验证页面的具体解决步骤:
触发reCAPTCHA官方回调函数
多数无提交按钮的页面会依赖reCAPTCHA的回调机制触发内容显示。首先找到页面中reCAPTCHA组件的data-callback属性值,这就是验证完成后要调用的函数名。直接在控制台或爬虫代码中调用该函数并传入你的验证token即可:// 获取回调函数 const captchaElement = document.querySelector('.g-recaptcha'); const callbackName = captchaElement.getAttribute('data-callback'); const callbackFn = window[callbackName]; // 传入token触发回调 callbackFn('你的验证token');手动注入token并触发页面校验
有些页面会通过读取隐藏输入框的token值来判断验证状态。先找到名为g-recaptcha-response的输入框,注入你的token,再触发页面的校验逻辑:// 注入token到对应输入框 document.querySelector('input[name="g-recaptcha-response"]').value = '你的验证token'; // 触发页面的校验事件,比如input或change事件 document.querySelector('input[name="g-recaptcha-response"]').dispatchEvent(new Event('change'));直接修改DOM显示隐藏内容
如果页面仅通过DOM类或样式控制内容显示,可以直接操作DOM显示目标内容,同时同步存储token到页面依赖的存储位置(如localStorage或cookie):// 显示隐藏内容 document.getElementById('target-hidden-content').classList.remove('hidden'); // 同步存储token(根据页面实际存储字段调整) localStorage.setItem('captcha_valid_token', '你的验证token');调用页面全局校验函数
部分页面会定义全局的验证状态检查函数,比如checkCaptchaValidity(),直接调用该函数即可让页面重新检测验证状态:// 调用全局校验函数 if (window.checkCaptchaValidity) { window.checkCaptchaValidity(); }
内容的提问来源于stack exchange,提问作者Asha Karthikeyan
相关产品推荐
相关产品推荐

