Playwright と Puppeteer でプロキシを使う:Python と Node(2026)

2026年6月2日公開 · 約9分で読めます

ヘッドレスブラウザは JavaScript をレンダリングできるため、素の HTTP クライアントでは扱えない最近のサイトにも対応できます。しかし、ブラウザであっても、すべてのリクエストは 1 つの IP から送信されており、サイトがそのアドレスにレート制限をかけたりフィンガープリントを取ったりした瞬間に自動化は検知されます。Playwright と Puppeteer でプロキシを使うことで、トラフィックを複数の IP に分散させ、正しく行えば自動化を通常のユーザーのように見せられます。以下が、Python と Node の両方における、実際に動く設定です。

Playwright でプロキシを使う(Python)

プロキシはブラウザ起動時に設定します。認証情報は usernamepassword という別々のフィールドとして渡してください — サーバー URL に認証情報をインラインで埋め込んではいけません。

from playwright.sync_api import sync_playwright

PROXY = {
    "server": "http://gate.jibaoproxy.com:10001",
    "username": "USERNAME",
    "password": "PASSWORD",
}

with sync_playwright() as p:
    browser = p.chromium.launch(proxy=PROXY, headless=True)
    page = browser.new_page()
    page.goto("https://httpbin.org/ip")
    print(page.inner_text("body"))
    browser.close()

JIBAO はゲートウェイで HTTP と SOCKS5 の両方を提供しています。ブラウザ自動化には HTTP エンドポイントを使ってください。Playwright と Puppeteer は認証付きの SOCKS5 プロキシをサポートしていないため、認証付き HTTP が確実な選択肢です。

Playwright でプロキシを使う(Node)

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({
    headless: true,
    proxy: {
      server: 'http://gate.jibaoproxy.com:10001',
      username: 'USERNAME',
      password: 'PASSWORD',
    },
  });
  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  console.log(await page.innerText('body'));
  await browser.close();
})();

ブラウザコンテキストごとに IP をローテーションする

Playwright で最もきれいにローテーションする方法は、BrowserContext ごとに 1 つの IP を割り当てることです。各コンテキストは独立したセッション(独自の Cookie とキャッシュを持つ)なので、それぞれを異なる出口 IP に紐付ければ、1 つのブラウザプロセスから並列の複数アイデンティティを得られます。

from playwright.sync_api import sync_playwright

def ctx_proxy(session_id):
    return {
        "server": "http://gate.jibaoproxy.com:10001",
        "username": f"USERNAME-session-{session_id}",
        "password": "PASSWORD",
    }

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    for i in range(3):
        context = browser.new_context(proxy=ctx_proxy(f"ctx{i}"))
        page = context.new_page()
        page.goto("https://httpbin.org/ip")
        print(i, page.inner_text("body"))
        context.close()
    browser.close()

各コンテキストは異なるスティッキーセッショントークンを使うため、IP はコンテキスト内では安定し(ログインフローに適しています)、コンテキスト間では異なります(多数のアカウントを並列で動かすのに適しています)。これは GoLogin や Dolphin Anty のようなアンチディテクトブラウザが自動化しているパターンです — 当社のアンチディテクトプロキシ設定ガイドを参照してください。

Puppeteer でプロキシを使う(Node)

Puppeteer はプロキシサーバーを Chromium の起動フラグとして設定し、その後 page オブジェクト上で認証します。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: 'new',
    args: ['--proxy-server=http://gate.jibaoproxy.com:10001'],
  });
  const page = await browser.newPage();
  await page.authenticate({ username: 'USERNAME', password: 'PASSWORD' });

  await page.goto('https://httpbin.org/ip');
  console.log(await page.evaluate(() => document.body.innerText));
  await browser.close();
})();

プロキシはプロセスレベルのフラグなので、1 つの Puppeteer ブラウザは 1 つの IP を使います。ローテーションするには、アイデンティティごとに新しいブラウザを起動する(重い)か、接続ごとに IP を変えるゲートウェイ経由でローテーションを行います。

ログインフローのためのスティッキーセッション

セッション Cookie を生成するフローは、その全期間を通じて同じ IP を維持しなければなりません。IP-A で発行された Cookie が突然 IP-B から現れると、セッションハイジャックと判定され、再認証やバンを引き起こします。ログイン済みのアカウントごとに 1 つのコンテキスト(または 1 つのブラウザ)を、1 つのスティッキーセッショントークンに固定したまま、セッション全体にわたって保ってください。

フィンガープリントを忘れずに

住宅用 IP は必要ですが、それだけでは不十分です。サイトはあなたのブラウザの TLS/JA4 ハンドシェイク、HTTP/2 のフレーム順序、canvas、WebGL、navigator プロパティも読み取ります。素のヘッドレス Chromium は navigator.webdriver = true と、最高の IP すら台無しにするヘッドレスのフィンガープリントを漏らします。ステルスプラグインと現実的な起動フラグで対策しましょう。

// Node: puppeteer-extra + stealth
const puppeteer = require('puppeteer-extra');
const Stealth = require('puppeteer-extra-plugin-stealth');
puppeteer.use(Stealth());

// Realistic launch flags
const browser = await puppeteer.launch({
  headless: 'new',
  args: [
    '--proxy-server=http://gate.jibaoproxy.com:10001',
    '--disable-blink-features=AutomationControlled',
    '--window-size=1920,1080',
  ],
});

自分がどのシグナルを漏らしているかを正確に確認するには、自動化したブラウザを JIBAO の無料の JA3/JA4 フィンガープリントチェッカーにかけてみてください。ハンドシェイクがなぜフラグ付けされるのか、より深い仕組みについては、TLS フィンガープリンティングの回避と、完全版の Cloudflare バイパスレシピをお読みください。

検証とデバッグ

ブラウザ自動化に力を

500MB の無料トラフィックと、Playwright と Puppeteer をバンリストから遠ざける住宅用 IP を手に入れましょう。

無料トライアルを始める

すべてのIP製品に対応 · 膨大なノードプールをいつでも利用可能

今すぐ登録して、チャージ額の最大 100% をキャッシュバック

新規ユーザーは登録時に500MBを獲得、さらに初回チャージにボーナスが付きます。期間限定オファーです。