首页 > 解决方案 > 最新版本的 puppeteer-2.1.1 不适用于代理

问题描述

    Running puppeteer with Proxy Authorization failing.

    Puppeteer version: 2.1.1

    const puppeteer = require('puppeteer');
    // Function to call proxy url
    (async () => {
        try {`enter code here`
          let data = [];
          let options = {
            headless: false,
            ignoreHTTPSErrors: true,
            slowMo: 134,
            devtools: true,
            args: [
            '--no-sandbox',
            '--auto-open-devtools-for-tabs',
            '--disable-setuid-sandbox',
            '--disable-dev-shm-usage',
            '--disable-accelerated-2d-canvas',
            '--disable-gpu',
            '--window-size=1920x1200',
            '--proxy-server=proxy.crawlera.com:8010',// proxy url
            '--ignore-certificate-errors',
            '--ignore-certificate-errors-spki-list'
            ]
          }

          const browser = await puppeteer.launch(options);
          let page = await browser.newPage();
          await page.setUserAgent('Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)');
          await page.setViewport({ width: 1920, height: 1200 });
          const key = '<My API Key>:';
          await page.setExtraHTTPHeaders({
              'Proxy-Authorization': 'Basic ' + Buffer.from(key).toString('base64'),
          });

var res = await page.goto(' https://www.example.com/ ', {waitUntil: 'domcontentloaded', timeout: 0});

          return [];
        } catch (e) {
          return e;
        }
    })();

以上适用于 puppeteer 版本 1.18.0 ,但对于 2.1.1 版本失败并给出以下错误错误:net::ERR_INVALID_ARGUMENT

标签: node.js

解决方案


出于某种原因,禁止在较新版本的 chromium 和 puppeteer 中设置其他标头(如 HOST)中的“代理授权”

https://github.com/chromium/chromium/blob/3611052c055897e5ebbc5b73ea295092e0c20141/services/network/public/cpp/header_util_unittest.cc#L75

使用没有此类限制的旧软件版本,例如 Puppeteer 1.17 和捆绑的 Chromium 76.x


推荐阅读