如何用Puppeteer连接代理服务器?多种配置尝试后仍失败
Puppeteer 21.1.1 代理配置失败解决方案
全局代理(启动浏览器时生效)
你之前的方式一参数格式有误,正确的--proxy-server参数需要用等号连接地址,且无需添加http://前缀。调整后的代码:
const browser = await puppeteer.launch({ headless: false, defaultViewport: null, args: [ '--start-fullscreen', '--proxy-server=ip:port' // 替换为实际代理IP和端口 ] });
隐身上下文代理(仅该上下文内页面生效)
方式二的问题在于没有使用创建好的隐身上下文打开页面,仅创建上下文不会自动应用到原有页面。正确流程:
const browser = await puppeteer.launch({ headless: false, defaultViewport: null, args: ['--start-fullscreen'] }); // 创建带代理的隐身上下文 const proxyContext = await browser.createIncognitoBrowserContext({ proxyServer: 'ip:port' // 替换为实际代理IP和端口,无需http://前缀 }); // 必须通过该上下文打开页面才会走代理 const page = await proxyContext.newPage();
验证代理是否生效
打开页面后访问httpbin.org/ip,查看返回的IP地址是否与代理IP一致:
await page.goto('http://httpbin.org/ip'); const ipInfo = await page.$eval('pre', el => el.textContent); console.log(ipInfo);
额外排查点
- 先通过
curl -x ip:port http://httpbin.org/ip测试代理本身是否可用,排除代理服务故障。 - 确保代理地址无拼写错误,端口号正确。
内容的提问来源于stack exchange,提问作者Flechas
相关产品推荐
相关产品推荐

