过去两天我一直在尝试解决这个问题,但未能成功。我到处都查过了,但仍然没有解决方案..这是代码:
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() 调用上遇到导航超时错误,因为它由于某种原因挂起。我不明白为什么。当我放置不需要身份验证的代理时,它就可以工作。由于这个问题,我正在考虑切换到另一种无头解决方案,我非常感谢一些帮助。
所以我想通了。事实证明,由于某种原因,代理确实很糟糕。 Axios 和 cURL 之所以能够快速响应,是因为它们只是获取初始 HTML 代码,与无头浏览器不同,它们实际上并不对 HTML 文本执行任何操作。使用无头浏览器,它们实际上也会发出对资源(css、图像等)和任何其他网络请求的所有请求,并且所有请求都通过代理,因此速度要慢得多。当我尝试不同的代理(需要身份验证的代理)时,速度要快得多。