統合

Shifterと一緒に使用する Playwright

ShifterのレジデンシャルおよびISPプロキシを通じてChromium、Firefox、WebKitを実行します。認証情報はインラインで指定でき、サイドカー拡張機能は不要です。Node、Python、Java、.NET全体にわたってファーストクラスのプロキシサポートを提供します。

クイックスタート

インストール

npm install playwright

基本的な使い方

import { chromium } from "playwright";

const browser = await chromium.launch({
  proxy: {
    server: "http://p.shifter.io:443",
    username: "customer-USERNAME-country-us-sid-123ABC",
    password: "PASSWORD",
  },
});

const page = await browser.newPage();
await page.goto("https://ipinfo.io/json");
console.log(await page.textContent("body"));
// {"ip": "154.16.xxx.xxx", "city": "New York", "country": "US", ...}

await browser.close();

機能

認証情報をインラインで指定したネイティブ proxy サポート -- サイドカー拡張機能やブラウザの調整不要
同じ設定がサポートされているすべてのプラットフォームでChromium、Firefox、WebKitに対応しています
コンテキストごとのプロキシ設定により、1つのブラウザインスタンス内で複数の国を混在させることができます
Node、Python、Java、.NET で統一された API -- すべての言語で同じプロキシ辞書
ユーザー名パラメータを使用した 195+ か国での Geo ターゲティング -- 国、地域、都市、ASN
デフォルトはリクエストごとのローテーション。スティッキーセッションには`sid`、N秒間のタイムドピンには`ttl-N`を使用

コンテキストごとのジオターゲティング(1つのブラウザ、複数のリージョン)

各ブラウザコンテキストに独自のプロキシを設定できます。1つのブラウザインスタンス内でUSコンテキスト、UKコンテキスト、JPコンテキストを起動できます -- これはPlaywrightの並列ローカライズドスクレイピングにおける強力な機能です。

import { chromium } from "playwright";

const browser = await chromium.launch();

async function makeContext(country: string, sid: string) {
  return browser.newContext({
    proxy: {
      server: "http://p.shifter.io:443",
      username: `customer-USERNAME-country-${country}-sid-${sid}`,
      password: "PASSWORD",
    },
    userAgent:
      "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
  });
}

const [us, uk, jp] = await Promise.all([
  makeContext("us", "us-001"),
  makeContext("uk", "uk-001"),
  makeContext("jp", "jp-001"),
]);

const [usPage, ukPage, jpPage] = await Promise.all([
  us.newPage(),
  uk.newPage(),
  jp.newPage(),
]);

await Promise.all([
  usPage.goto("https://www.example.com"),
  ukPage.goto("https://www.example.co.uk"),
  jpPage.goto("https://www.example.jp"),
]);

console.log({
  us: await usPage.title(),
  uk: await ukPage.title(),
  jp: await jpPage.title(),
});

await browser.close();

マルチブラウザ(Chromium / Firefox / WebKit)

3つのエンジンすべてで同じプロキシ設定を使用できます。クロスブラウザースクレイピングや、特定のターゲットでボット検出をトリガーしにくいエンジンを選ぶ際に便利です。

import { chromium, firefox, webkit, type BrowserType } from "playwright";

const proxy = {
  server: "http://p.shifter.io:443",
  username: "customer-USERNAME-country-de-city-berlin-sid-456DEF",
  password: "PASSWORD",
};

async function visit(engine: BrowserType, label: string) {
  const browser = await engine.launch({ proxy });
  const page = await browser.newPage();
  await page.goto("https://example.de");
  const title = await page.title();
  await browser.close();
  return { label, title };
}

const results = await Promise.all([
  visit(chromium, "chromium"),
  visit(firefox, "firefox"),
  visit(webkit, "webkit"),
]);

console.log(results);

Playwright テストスイート

playwright.config.tsでShifterを一度設定すれば、すべてのテストがプロキシ経由でルーティングされます。認証情報をソースにコミットしないよう、環境変数を使用してください。

// playwright.config.ts
import { defineConfig } from "@playwright/test";

export default defineConfig({
  testDir: "./tests",
  workers: 4,

  use: {
    proxy: {
      server: "http://p.shifter.io:443",
      username: process.env.SHIFTER_USER!, // e.g. customer-USERNAME-country-us-sid-test
      password: process.env.SHIFTER_PASS!,
    },
    userAgent:
      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
    viewport: { width: 1920, height: 1080 },
    ignoreHTTPSErrors: false,
  },
});

// tests/products.spec.ts
import { test, expect } from "@playwright/test";

test("US homepage renders", async ({ page }) => {
  await page.goto("https://example.com");
  await expect(page.getByRole("heading", { level: 1 })).toBeVisible();
});

test("Product page parses", async ({ page }) => {
  await page.goto("https://example.com/products/123");
  const price = await page.locator(".price").textContent();
  expect(price).toMatch(/^\$\d+/);
});

Python: スティッキーセッションを使用した chromium.launch

Playwright は言語間で同一です。Python でも同じ辞書形式のプロキシ設定が使用でき、残りの API も Node バージョンと同様です。

# pip install playwright
# playwright install chromium

import asyncio
import secrets
from playwright.async_api import async_playwright

async def main():
    sid = secrets.token_hex(4)

    async with async_playwright() as p:
        browser = await p.chromium.launch(
            proxy={
                "server": "http://p.shifter.io:443",
                "username": f"customer-USERNAME-country-fr-city-paris-sid-{sid}-ttl-300",
                "password": "PASSWORD",
            }
        )

        context = await browser.new_context(
            user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36",
        )

        page = await context.new_page()

        # Multi-step flow — same residential IP across every navigation.
        await page.goto("https://example.fr/login", wait_until="networkidle")
        await page.fill("#email", "user@example.com")
        await page.fill("#password", "secret")
        await page.click("button[type=submit]")
        await page.wait_for_url("**/dashboard")

        rows = await page.locator(".order-row").all_text_contents()
        print(f"Found {len(rows)} orders")

        await browser.close()

asyncio.run(main())
FAQ

よくある質問

Shifter と Playwright の併用に関するよくある質問。

ブラウザ起動オプションの`proxy`フィールドに`server`、`username`、`password`を設定してください。Chromium、Firefox、WebKit共通の形式です。認証情報はインラインで渡され、拡張機能は不要で、ヘッドレスモードでもそのまま動作します。

はい。`proxy` を`browser.newContext()` に渡すと、そのコンテキストはブラウザの他の部分とは異なるプロキシを使用します。これは1つのプロセス内で複数の国を並行してスクレイプする最も簡潔な方法であり、複数のブラウザを起動するよりもはるかにメモリ効率が高いです。

はい。同じプロキシ設定が3つのエンジンすべてで動作します。ターゲットがChrome固有のボット検知を使用している場合、FirefoxやWebKitが有効です。Playwrightはエンジンの切り替えが1行で済む数少ないツールの一つです。

プロキシのユーザー名にセッションIDを追加してください。例:`customer-USERNAME-country-us-sid-123ABC`。そのコンテキスト内のすべてのナビゲーション、リクエスト、タブは同じレジデンシャルIPを再利用します。`ttl-N`を追加すると、N秒まで固定できます。

はい。`playwright.config.ts` の `use.proxy` フィールドを設定してください。それをオーバーライドしないすべてのテストは Shifter プロキシを継承します。認証情報がソース管理に含まれないよう、環境変数を使用してください。

はい。PlaywrightにはPython、Java、.NET向けのファーストパーティクライアントがあります。プロキシ設定は、すべての言語で同じ形式(server、username、password)を使用します。このページの例にはNodeとPythonの両方が示されていますが、同じ設定はどこでも機能します。

始める

でShifterを使い始める Playwright

ShifterのレジデンシャルおよびISP Proxy 205M+を通じてChromium、Firefox、WebKitを操作できます。認証情報をインラインで記述するだけで、拡張機能は不要です。Node、Python、Java、.NETに対応しています。

Shifterを無料で試す数分でセットアップ完了。いつでもキャンセル可能。