Puppeteer - 通过具有身份验证的代理连接到 HTTPS 网站不起作用

问题描述 投票:0回答:1

过去两天我一直在尝试解决这个问题,但未能成功。我到处都查过了,但仍然没有解决方案..这是代码:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');

puppeteer.use(StealthPlugin());

const PROXY_SERVER_IP = 'IP.IP.IP.IP';
const PROXY_SERVER_PORT = '1234';
const PROXY_USERNAME = 'username';
const PROXY_PASSWORD = 'password';

(async () => {
  const browser = await puppeteer.launch({
    args: [`--proxy-server=http://${PROXY_SERVER_IP}:${PROXY_SERVER_PORT}`],
  });
  const page = await browser.newPage();

  await page.authenticate({
    username: PROXY_USERNAME,
    password: PROXY_PASSWORD,
  });

  await page.goto('https://www.google.ca/', {
    timeout: 0,
  });

  await page.screenshot({ path: 'test4.png', fullPage: true });

  await browser.close();
})();

我在 page.goto() 调用上遇到导航超时错误,因为它由于某种原因挂起。我不明白为什么。当我放置不需要身份验证的代理时,它就可以工作。由于这个问题,我正在考虑切换到另一种无头解决方案,我非常感谢一些帮助。

authentication https proxy puppeteer headless-browser
1个回答
0
投票

所以我想通了。事实证明,由于某种原因,代理确实很糟糕。 Axios 和 cURL 之所以能够快速响应,是因为它们只是获取初始 HTML 代码,与无头浏览器不同,它们实际上并不对 HTML 文本执行任何操作。使用无头浏览器,它们实际上也会发出对资源(css、图像等)和任何其他网络请求的所有请求,并且所有请求都通过代理,因此速度要慢得多。当我尝试不同的代理(需要身份验证的代理)时,速度要快得多。

© www.soinside.com 2019 - 2024. All rights reserved.