我正在尝试自动访问使用 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 元素后,我想知道如何获取并执行回调以验证输入的令牌。
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;
}, 响应选择器, 代币 )