GBProxies

如何在Puppeteer中使用认证代理

Chrome将代理主机和端口作为启动标志,Puppeteer通过page.authenticate回答登录提示。

步骤

  1. 使用--proxy-server=host:port启动Chrome
  2. 使用代理用户名和密码调用page.authenticate
  3. 启用请求拦截以阻止图片和字体
  4. 为每个会话ID打开一个浏览器以保持IP不变

示例代码

import puppeteer from "puppeteer";

const browser = await puppeteer.launch({ args: ["--proxy-server=gw.gbproxies.cc:10000"] });
const page = await browser.newPage();
await page.authenticate({ username: "USERNAME-cc-fr-sid-shop1-ttl-30", password: "PASSWORD" });
await page.setRequestInterception(true);
page.on("request", (r) => (["image", "font", "media"].includes(r.resourceType()) ? r.abort() : r.continue()));
await page.goto("https://api.ipify.org");
console.log(await page.content());
await browser.close();

将USERNAME和PASSWORD替换为控制台代理页面中的登录信息。端口10000是住宅HTTP代理;请查看下方每个产品的端口。

提示

  • 阻止图片通常可以将每页的流量减少一半以上
  • 粘性会话ID在整个浏览流程中保持相同的IP

常见问题

为什么Chrome仍然显示登录弹出窗口?

page.authenticate必须在页面的第一次导航之前运行。

如何在Puppeteer中使用认证代理