将Puppeteer与代理一起使用以请求HTTPS站点时,如何/何时/在何处设置标头?

时间:2019-10-29 18:26:57

标签: node.js puppeteer

在puppeteer中使用无头浏览器时,我遇到了一个问题。

我需要为要路由通过的代理设置标头。这不是问题。 Puppeteer具有.setExtraHTTPHeaders()方法,使此操作非常容易。

但是,如果我请求的页面使用的是HTTPS(在大多数情况下是HTTPS),那么我的代理将永远不会看到此标头,因为它显然会在通过时被加密。

这是否有可能实现?如果可以,怎么办?

下面是我一直在使用的一个简单示例。如果我使用 http 请求httpbin.org/ip网站,那么它可以完美运行。如果我通过 https 请求它,那么它可以工作,但是我的标头在中间丢失并且不起作用。

                const browser = await puppeteer.launch({
                    headless: true,
                    ignoreHTTPSErrors: true,
                    args: [
                        '--no-sandbox',
                        `--proxy-server=my.proxy.url:00000`
                    ]
                });

                const page = await browser.newPage();

                await page.setExtraHTTPHeaders({
                    'SOME_HEADER_TO_SET': 'VALUE'
                });

                await page.goto('https://httpbin.org/ip');

1 个答案:

答案 0 :(得分:0)

也许您可以改为将身份验证添加到代理URL中?

const browser = await puppeteer.launch({
    headless: true,
    ignoreHTTPSErrors: true,
    args: [
        '--no-sandbox',
        '--proxy-server=username:password@my.proxy.url:00000'
        ]
    });