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

本地Puppeteer爬取含reCaptcha v2页面正常,生产环境被识别为机器人

解决reCaptcha v2服务器环境验证拦截问题

问题场景

本地Windows 10+Chrome环境下可正常完成目标网页的reCaptcha v2验证,但部署到CentOS 7服务器或GCP Ubuntu 20计算实例时,点击reCaptcha复选框会触发拦截提示:

Your computer or network may be sending automated queries To protect our users, we can't process your request right now For more detaile vigit pur_heWppge.

即使在服务器上通过Xvfb设置headless: false,问题仍未解决。当前使用的Puppeteer配置如下:

browser = await puppeteer.launch({
    args: ["--no-sandbox", "--disable-setuid-sandbox",
           "--disable-blinkfeatures=AutomationControlled",
           "--no-first-run", "--no-proxy-server"],
    //headless: false
    headless: 'new'
}); 

let page = await browser.newPage();
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,  like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0');


const customHeaders = {
    'Accept-Language': 'es,es-ES;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'Sec-Ch-Ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
    'Sec-Ch-UA-Platform': '"Windows"',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0'
};
await page.setExtraHTTPHeaders(customHeaders);
await page.goto(url);

可实施的Puppeteer配置优化

1. 补充浏览器启动参数

在args数组中添加更多模拟真实浏览器环境的参数,减少自动化特征暴露:

args: [
    "--no-sandbox", 
    "--disable-setuid-sandbox",
    "--disable-blinkfeatures=AutomationControlled",
    "--no-first-run", 
    "--no-proxy-server",
    "--start-maximized", // 模拟窗口最大化状态
    "--disable-web-security", // 降低安全限制导致的异常检测
    "--disable-features=VizDisplayCompositor", // 消除无头模式下的渲染差异
    "--disable-dev-shm-usage", // 解决服务器共享内存不足问题
    "--disable-extensions", // 禁用扩展,避免特征识别
    "--disable-plugins-discovery", // 跳过插件扫描流程
    "--disable-background-timer-throttling", // 禁用后台定时器节流,匹配真实用户环境
    "--disable-backgrounding-occluded-windows", // 禁止后台窗口挂起
    "--disable-renderer-backgrounding" // 禁止渲染进程后台化
]

2. 深度隐藏自动化特征

通过页面脚本覆盖浏览器的自动化检测变量,让环境更接近真实用户:

await page.evaluateOnNewDocument(() => {
    // 覆盖navigator.webdriver属性
    Object.defineProperty(navigator, 'webdriver', {
        get: () => undefined,
    });
    // 模拟真实Chrome的runtime对象
    window.chrome = { runtime: {} };
    // 模拟多个浏览器插件
    Object.defineProperty(navigator, 'plugins', {
        get: () => Array.from({ length: 5 }, () => ({ name: 'Plugin' })),
    });
    // 匹配Accept-Language设置的语言列表
    Object.defineProperty(navigator, 'languages', {
        get: () => ['es-ES', 'es', 'en'],
    });
});

3. 优化页面加载与用户行为模拟

  • 调整页面加载策略,等待网络稳定后再操作:
    await page.goto(url, {
        waitUntil: 'networkidle2', // 等待网络空闲(仅2个以下请求)
        timeout: 60000 // 延长超时时间,避免加载不完整
    });
    
  • 添加随机延迟和真实用户交互动作,避免机械操作:
    // 随机鼠标移动
    await page.mouse.move(Math.random() * 200, Math.random() * 200);
    // 随机延迟500-1500ms
    await page.waitForTimeout(Math.floor(Math.random() * 1000) + 500);
    // 滚动到reCaptcha元素并hover
    const recaptchaBox = await page.$('.g-recaptcha');
    await recaptchaBox.scrollIntoView();
    await page.waitForTimeout(300);
    await recaptchaBox.hover();
    // 点击复选框
    await recaptchaBox.click();
    

4. 统一HTTP头与用户代理

移除重复的User-Agent配置,修正请求头中的转义引号问题:

const customHeaders = {
    'Accept-Language': 'es,es-ES;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'Sec-Ch-Ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
    'Sec-Ch-UA-Platform': '"Windows"',
    'Sec-Fetch-Site': 'same-origin'
};
// 仅在一处设置User-Agent,避免冲突
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0');
await page.setExtraHTTPHeaders(customHeaders);

5. 切换无头模式类型

新版headless: 'new'的自动化特征更易被识别,尝试切换到旧版无头模式或非无头模式(配合Xvfb):

browser = await puppeteer.launch({
    args: [...],
    headless: true, // 旧版无头模式
    // 或使用非无头:headless: false(需Xvfb支持)
    defaultViewport: null // 使用系统默认视口,模拟真实窗口尺寸
});

内容的提问来源于stack exchange,提问作者nelson mundaca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:44:53