node.js - puppeteer 代理

标签 node.js http-proxy puppeteer

我正在尝试将 puppeteer 与我自己的代理一起使用,但我似乎无法让它工作。 我的代理如下所示:

import * as h from 'http';
import * as hp from 'http-proxy';
import * as url from 'url';

const proxy = hp.createProxyServer({});
proxy.on('proxyReq', function (proxyReq, req, res, options) {
    res.setHeader("Derp", "1231");
});

proxy.listen(8899);

h.createServer(function (req, res) {
    const reqUrl = url.parse(req.url);
    const targetHost = reqUrl.protocol + "//" + reqUrl.host;
    proxy.web(req, res, { target: targetHost });
}).listen(3111);

然后,当我启动浏览器时,我会给出以下属性

const baseOptions: LaunchOptions = {
        args:
            [
                "--no-sandbox",
                "--disable-setuid-sandbox",
                `--proxy-server=localhost:3111`,
            ],
        timeout: 0,
        ignoreHTTPSErrors: true
    };

执行 goto 命令失败,并出现以下错误

Error: net::ERR_EMPTY_RESPONSE at http://natashaskitchen.com/
    at navigate (.../node_modules/puppeteer/lib/Page.js:598:37)
    at process._tickCallback (internal/process/next_tick.js:68:7)

如果有人有任何建议,我们将不胜感激,谢谢!

最佳答案

您必须使用page.authenticate()来验证您的代理

https://pptr.dev/#?product=Puppeteer&version=v1.18.1&show=api-pageauthenticatecredentials

这就是我使用 Puppeteer 和经过身份验证的代理的方式,效果非常好!

const launchConfig = {
      headless: true,
      ignoreHTTPSErrors: true,
      args: [`--proxy-server=11.321.4.23:8080`],
    };

    const browser = await puppeteer.launch(launchConfig);
    const page = await browser.newPage();

    await page.authenticate({
      username: 'brucewayne',
      password: 'darkknight',
    });

关于node.js - puppeteer 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51756909/

相关文章:

javascript - 部署全栈 Node 应用 npm/package.json 架构

node.js - 如何使用 node-http-proxy 进行 HTTP 到 HTTPS 的路由?

chef-infra - Windows 上的 Chef-client 因 NoSuchMethodError 失败

javascript - 如何使用 Puppeteer 设置、更改或阻止时区(系统时间)?

javascript - 如何使用 puppeteer 检查 div 是否具有特定的类?

google-chrome-devtools - 了解 Chrome DevTools Performance.getMetrics() 结果

javascript - 如何更改数据库/文件二进制路径?

node.js - 使用具有 root 访问权限的 nodejs 执行 shell 命令

json - 使用 post 方法将新数据添加到服务器不起作用。使用 Reactjs 和 Nodejs

java - 将代理与适用于 Java 的 Google HTTP 客户端库一起使用