【问题标题】:How/When/Where do you set headers when using Puppeteer with a proxy to request an HTTPS site?使用带有代理的 Puppeteer 请求 HTTPS 站点时,如何/何时/在何处设置标头?
【发布时间】:2019-10-29 18:26:57
【问题描述】:

在 puppeteer 中使用无头浏览器时遇到问题。

我需要为我正在路由的代理设置一个标头。这不是问题。 Puppeteer 有一个方法 .setExtraHTTPHeaders() 可以让这变得非常简单。

但是,如果我请求的页面使用 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');

【问题讨论】:

    标签: node.js puppeteer


    【解决方案1】:

    也许您可以添加要在代理 URL 中传递的身份验证?

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

    【讨论】:

    • 也试试这个:blog.apify.com/…
    • 身份验证不是问题。我遇到了其他自定义标头被忽略的问题。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多