プロキシを使用して起動して認証する#
import puppeteer from "puppeteer";
const browser = await puppeteer.launch({
headless: true,
args: ["--proxy-server=http://res.proxy-cyber.com:9000", "--no-first-run"],
});
const page = await browser.newPage();
await page.authenticate({ username: "USER-cc-us-sid-run1-ttl-30m", password: "PASS" });
await page.goto("https://api.ipify.org", { waitUntil: "domcontentloaded", timeout: 45000 });
console.log(await page.evaluate(() => document.body.innerText));
await browser.close();割り当てられたゲートウェイがサポートする独立したワークフローごとに、個別のセッション ID を使用します。接続の詳細で、許可されている期間と場所のパラメーターを確認してください。住宅用デバイスは、要求された期間が経過する前に切断される可能性があります。スティッキー セッションは、何日間も同じ IP を保証するものではありません。固定アドレスの場合はスタティック専用品と比較してください。
ブラウザごとに 1 つのプロキシ#
起動レベルの --proxy-server 設定は、ブラウザのデフォルト ルーティングに適用されます。現在の Puppeteer は、page.authenticate() を通じて提供される資格情報を使用して、browser.createBrowserContext() で proxyServer もサポートしています。異なるプロキシ設定には個別のコンテキストを使用し、永続プロファイルには個別のユーザー データ ディレクトリを使用します。各コンテキスト内での終了を確認します。
画像、フォント、メディアをブロックする#
await page.setRequestInterception(true);
page.on("request", (req) => {
const t = req.resourceType();
if (["image", "media", "font", "stylesheet"].includes(t)) return req.abort();
req.continue();
});一貫性#
- セット
Accept-Language出口の国へのタイムゾーン:page.setExtraHTTPHeaders({\"Accept-Language\": \"de-DE,de;q=0.9\"})そしてpage.emulateTimezone(\"Europe/Berlin\"). - WebRTC リークを無効にする
--force-webrtc-ip-handling-policy=disable_non_proxied_udp起動引数に。 - アカウントごとに 1 つのブラウザを維持します。アカウントが復帰デバイスのように見える必要がある場合は、そのユーザー データ ディレクトリを再利用します。
遭遇するであろうエラー#
| 症状 | 原因 | 修正 |
|---|---|---|
| net::ERR_TUNNEL_CONNECTION_FAILED | ゲートウェイが接続を拒否しました: 資格情報、パラメータ、または終了なし | cURL -v で再現してゲートウェイ コードを読み取ります |
| net::ERR_PROXY_AUTH_UNSUPPORTED / プロンプト | ナビゲーション後に呼び出されるauthenticate() | goto の前に page.authenticate を呼び出す |
| どのブラウザでも同じ IP | 同じセッション ID が再利用される | ブラウザごとに異なる -sid- を使用するか、省略します。 |
| 最初のロードが非常に遅い | 世帯出口と重いページ | リソースをブロックします。タイムアウトを 45 秒に増やす |
人々が尋ねる質問#
Puppeteer はパスワード付きで SOCKS5 を使用できますか?
Chrome は SOCKS5 認証をサポートしていません。 page.authenticate でポート 9000 の HTTP プロキシを使用するか、サーバー IP をホワイトリストに登録して --proxy-server=socks5://res.proxy-cyber.com:9001 を渡します。