hre*_*tic 5 javascript recaptcha node.js puppeteer
我试图从我试图抓取的网站上解决验证码问题
通常它的工作方式是,验证码位于表单内,我将验证码数据发送到解决验证码 api(我使用 DBC),它们返回一个令牌
我将令牌放入验证码输入中(#g-recaptcha-response),即使当我提交表单时绿色支票没有出现,它也会被接受
但是当验证码以另一种方式解决时,该网站会自动显示我想要抓取的信息,当验证码的绿色勾号出现时,页面会更新新信息
所以我的问题是,当我将令牌放入验证码输入中时,是否有任何方法可以在不提交表单的情况下触发验证码已解决事件(或者当绿色检查出现时发生的任何情况。我猜测是某种回调)?
编辑 :
通过探索 recaptcha 配置探索我发现了这个
___grecaptcha_cfg.clients[0].L.L.callback
Run Code Online (Sandbox Code Playgroud)
这指向这一点
function verifyCallback(e)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何调用它
async function init_puppeteer() {
const global_browser = await puppeteer.launch({headless: false , slowMo : 10 , args: ['--no-sandbox', '--disable-setuid-sandbox' , ]});
const page = await global_browser.newPage();
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
await page.setViewport({width: 1200, height: 1500});
try {
await page.goto('https://example.com', {timeout: 60000})
.catch(function (error) {
throw new Error('TimeoutBrows');
});
await page.waitForSelector('input[name="url"]');
await page.type('input[name="url"]', 'example.com' , {delay: 10})
await page.click('button.css-117i75i-button');
await page.waitForSelector('#g-recaptcha' ,{visible : true });
const datakey = await page.$eval('#g-recaptcha' , el => el.getAttribute('data-sitekey'));
const cap = await solvecaptcha(datakey ,page.url() );
await page.$eval('#g-recaptcha-response', (el , cap ) => el.value = cap , cap );
console.log('done!');
}
catch(e)
{
console.log('--------ERRRO--------------------------');
console.log(e);
await page.close();
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了答案,以防万一有人遇到这个问题,只需在浏览器控制台中使用此对象___grecaptcha_cfg来查找我的回调就在这里
___grecaptcha_cfg.clients[0].L.L.callback
Run Code Online (Sandbox Code Playgroud)
但对于其他网站它可以有不同的结构
所以基本上在我收到令牌并将其放入 #g-recaptcha-response` 后,我调用了这个函数并将令牌作为参数传递
let js = `___grecaptcha_cfg.clients[0].L.L.callback("${cap}")`;
await page.evaluate(js);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3761 次 |
| 最近记录: |