如何将 Cloudflare Turnstile 令牌注入 Puppeteer?

问题描述 投票:0回答:1

我正在尝试自动访问使用 Cloudflare Turnstile 的网站。我已经设法从 cf-turnstile-response 获取令牌,但我不知道如何注入它来完成挑战。

背景

使用 Google reCAPTCHA v2,我曾经通过访问 ___grecaptcha_cfg 并运行回调来注入令牌。但是,我找不到类似的 Turnstile 方法。

await page.waitForFunction(() => typeof ___grecaptcha_cfg !== 'undefined' && ___grecaptcha_cfg.clients);
const inyeccion_callback = await page.evaluate((recaptcha_token) => {
    const clients = ___grecaptcha_cfg.clients;
    for (const client of clients) {
        if (typeof client.callback === 'function') {
            client.callback(recaptcha_token);
        }
    }
}, recaptcha_token);

我还没有找到如何访问 Turnstile 设置或运行类似的回调。我从解析服务(如 2Captcha)获得的令牌已设置如下,并且我已手动确认已设置:

document.querySelector('[name="cf-turnstile-response"]').value = 'TOKEN';

但是一旦完成,我不知道如何调用或验证,因为相关网站没有要验证的表单或按钮,它只是等待它被解决才能继续。

将 Cloudflare Turnstile 令牌注入 cf-turnstile-response 元素后,我想知道如何获取并执行回调以验证输入的令牌。

javascript puppeteer cloudflare captcha
1个回答
0
投票

const responseSelector = "#AreaCaptacha input[id*='cf-chl-widget']";
等待 page.evaluate((选择器, 值) => {

const responseSelector = "#AreaCaptacha input[id*='cf-chl-widget']";        
await page.evaluate(
  (selector, value) => {            
    document.querySelector(selector).style.display = 'block'
    document.querySelector(selector).value = value;            
  },
  responseSelector,
  token
)

document.querySelector(selector).style.display = 'block'
document.querySelector(selector).value = value;            

}, 响应选择器, 代币 )

© www.soinside.com 2019 - 2024. All rights reserved.