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

如何使用request模块处理Cloudflare连接安全验证(403错误)

解决Cloudflare人机验证导致的403状态码问题

你用request模块请求目标站点时返回403,是因为触发了Cloudflare的安全验证——站点要求完成复选框验证后才能继续访问。request是纯HTTP请求库,没法处理这类需要浏览器交互的人机验证,得换用无头浏览器工具来模拟真实用户操作,下面是具体方案:

方案:使用Puppeteer模拟浏览器行为

Puppeteer是Chrome官方的无头浏览器工具,能完整模拟浏览器的渲染、交互行为,自动处理Cloudflare的基础复选框验证。

步骤1:安装Puppeteer

先在项目里安装依赖:

npm install puppeteer

步骤2:替换原有代码

把你的request代码换成以下Puppeteer实现:

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

(async () => {
  // 启动无头浏览器,设置模拟真实浏览器的UA
  const browser = await puppeteer.launch({
    headless: 'new', // 新版无头模式,更接近真实浏览器
    defaultViewport: null,
    args: ['--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"']
  });

  const page = await browser.newPage();
  const url = 'https://www.url.net/';

  try {
    // 访问目标站点,等待页面加载完成(包括验证流程)
    await page.goto(url, { waitUntil: 'networkidle2' });

    // 检查是否有Cloudflare验证框,自动点击(基础复选框验证)
    const checkboxSelector = '#cf-challenge';
    if (await page.$(checkboxSelector)) {
      await page.click(checkboxSelector);
      // 等待验证完成,页面跳转
      await page.waitForNavigation({ waitUntil: 'networkidle2' });
    }

    // 获取页面内容
    const body = await page.content();
    console.log('当前页面URL:', page.url()); // 可通过URL判断是否验证成功

    // 保存页面到文件
    fs.writeFile('index.html', body, (err) => {
      if (err) console.log(err);
      else {
        console.log('文件写入成功');
        console.log('文件内容:');
        console.log(fs.readFileSync('index.html', 'utf8'));
      }
    });

    console.log(body);
  } catch (error) {
    console.error('请求出错:', error);
  } finally {
    // 关闭浏览器
    await browser.close();
  }
})();

关键说明

  • Puppeteer会自动管理Cookie和会话,无需手动处理,能保持验证后的访问状态
  • 若遇到更复杂的验证(如滑块、验证码),可能需要额外处理,但基础复选框验证用上面的代码就能解决
  • 不要频繁请求目标站点,避免触发Cloudflare更严格的安全限制

内容的提问来源于stack exchange,提问作者C.Unbay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:35:44