Puppeteerで認証付きプロキシを使用する方法
Chromeはプロキシホストとポートを起動フラグとして受け取り、Puppeteerはpage.authenticateでログインプロンプトに対応します。
手順
- --proxy-server=host:portでChromeを起動
- プロキシのユーザー名とパスワードでpage.authenticateを呼び出し
- リクエストインターセプションを有効にして画像とフォントをブロック
- 固定IPにはセッションIDごとに1つのブラウザを開く
コード例
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をコンソールのProxiesページのプロキシログインに置き換えてください。ポート10000は住宅用HTTPです。各製品のポートは以下を参照してください。
ヒント
- 画像をブロックするとページあたりのトラフィックが半分以上削減されることが多い
- 固定セッションIDはブラウジングフロー全体で同じIPを維持します
よくある質問
なぜChromeにログインポップアップが表示されるのですか?
page.authenticateはそのページの最初のナビゲーション前に実行する必要があります。