node.js - 最新版本的 puppeteer-2.1.1 不适用于代理
问题描述
Running puppeteer with Proxy Authorization failing.
Puppeteer version: 2.1.1
const puppeteer = require('puppeteer');
// Function to call proxy url
(async () => {
try {`enter code here`
let data = [];
let options = {
headless: false,
ignoreHTTPSErrors: true,
slowMo: 134,
devtools: true,
args: [
'--no-sandbox',
'--auto-open-devtools-for-tabs',
'--disable-setuid-sandbox',
'--disable-dev-shm-usage',
'--disable-accelerated-2d-canvas',
'--disable-gpu',
'--window-size=1920x1200',
'--proxy-server=proxy.crawlera.com:8010',// proxy url
'--ignore-certificate-errors',
'--ignore-certificate-errors-spki-list'
]
}
const browser = await puppeteer.launch(options);
let page = await browser.newPage();
await page.setUserAgent('Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)');
await page.setViewport({ width: 1920, height: 1200 });
const key = '<My API Key>:';
await page.setExtraHTTPHeaders({
'Proxy-Authorization': 'Basic ' + Buffer.from(key).toString('base64'),
});
var res = await page.goto(' https://www.example.com/ ', {waitUntil: 'domcontentloaded', timeout: 0});
return [];
} catch (e) {
return e;
}
})();
以上适用于 puppeteer 版本 1.18.0 ,但对于 2.1.1 版本失败并给出以下错误错误:net::ERR_INVALID_ARGUMENT
解决方案
出于某种原因,禁止在较新版本的 chromium 和 puppeteer 中设置其他标头(如 HOST)中的“代理授权”
使用没有此类限制的旧软件版本,例如 Puppeteer 1.17 和捆绑的 Chromium 76.x
推荐阅读
- javascript - 如何将子查询添加到带有轴的查询结果中
- xslt - 如何使用 XSLT 向 XML 有效负载添加不同的名称空间
- javascript - 当 API 在控制台中填充但无法在前端填充时,可能是什么原因?
- python - 使用 GDC 客户端工具包下载 TCGA 数据时出错
- awk - 从字段中删除特定单词
- doctrine-orm - 如何使用 Doctrine 2 DQL ON 覆盖默认的 JOIN 条件
- php - Woocommerce 设置客户提供的注释也返回 html 标签
- c# - 如何将 Excel 表格数据迭代到 DataGridView?
- c# - 使用依赖于记录器的选项验证器创建依赖于选项的自定义记录器时出现循环依赖异常
- c# - 有没有办法缩短重复数学