You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Puppeteer处理复选框:实现Cloudflare人机验证复选框点击

用Puppeteer点击Cloudflare「稍等片刻」页面的人机验证复选框

Cloudflare的人机验证复选框通常位于#challenge-form表单内,你提供的原代码中使用的#select-all-checkbox选择器并不匹配实际的验证元素,以下是修正后的实现方案:

核心注意点

  • Cloudflare会针对无头浏览器做检测,建议设置真实的用户代理来降低被识别的概率
  • 必须等待验证元素完全加载后再执行点击操作,避免因元素未就绪导致报错
  • 若验证元素嵌入在iframe中,需要先切换到对应的iframe再进行操作

修正后的代码

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
  // 启动浏览器,配置接近真实浏览器的环境
  const browser = await puppeteer.launch({
    args: ['--no-sandbox'],
    headless: 'new', // 新版无头模式更难被检测
    defaultViewport: null // 使用默认视口,模拟真实窗口尺寸
  });
  const page = await browser.newPage();

  // 设置真实用户代理,规避Cloudflare的无头浏览器检测
  await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36');

  const url = process.argv[2];
  await page.goto(url, { waitUntil: 'networkidle2' }); // 等待网络空闲,确保验证页面加载完成

  try {
    // 等待Cloudflare验证复选框加载,使用标准选择器定位
    const checkbox = await page.waitForSelector('#challenge-form input[type="checkbox"]', { timeout: 10000 });
    await checkbox.click();

    // 等待验证完成,处理页面跳转或当前页面验证完成的情况
    await page.waitForNavigation({ waitUntil: 'networkidle2', timeout: 30000 }).catch(() => {
      console.log('验证完成,未触发页面跳转');
    });

    // 保存验证后的页面内容
    const pageContent = await page.content();
    fs.writeFileSync('wpresponse.txt', pageContent);
  } catch (error) {
    console.error('处理Cloudflare验证时出错:', error);
  } finally {
    await browser.close();
  }
})();

代码说明

  1. 浏览器配置:启用新版无头模式、设置真实用户代理,尽可能模拟真实浏览器环境,减少被Cloudflare拦截的概率
  2. 页面加载策略:使用networkidle2等待网络空闲,确保Cloudflare的验证页面完全渲染完成
  3. 验证元素定位:#challenge-form input[type="checkbox"]是Cloudflare人机验证页面的标准元素选择器,能精准定位到复选框
  4. 验证等待逻辑:点击复选框后等待页面跳转,若没有跳转则视为验证在当前页面完成,继续后续操作
  5. 错误处理:通过try-catch块捕获超时、元素未找到等异常,避免程序直接崩溃

内容的提问来源于stack exchange,提问作者Dhruv Vyas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 02:01:12