Shifter verwenden mit Playwright
Führen Sie Chromium, Firefox und WebKit über Shifters Residential- und ISP-Proxys — Anmeldedaten inline, keine Sidecar-Erweiterung erforderlich. Erstklassige Proxy-Unterstützung für Node, Python, Java und .NET.
Schnellstart
Installieren
npm install playwright Grundlegende Nutzung
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(); Funktionen
Beispiele
Kontextbezogenes Geo-Targeting (ein Browser, viele Regionen)
Jeder Browser-Kontext kann seinen eigenen Proxy haben. Starten Sie einen US-Kontext, einen UK-Kontext und einen JP-Kontext innerhalb einer Browser-Instanz — Playwrights herausragendes Merkmal für paralleles lokalisiertes Scraping.
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(); Multi-Browser (Chromium / Firefox / WebKit)
Dieselbe Proxy-Konfiguration für alle drei Engines. Nützlich für browserübergreifendes Scraping oder um die Engine auszuwählen, die bei einem bestimmten Ziel am wenigsten wahrscheinlich Bot-Erkennung auslöst.
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 Test Suite
Konfigurieren Sie Shifter einmalig in playwright.config.ts, damit jeder Test über den Proxy geleitet wird. Verwenden Sie Umgebungsvariablen für die Anmeldedaten, damit diese nicht in die Versionsverwaltung gelangen.
// 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 mit Sticky Session
Playwright ist sprachübergreifend identisch. Dieselbe wörterbuchförmige Proxy-Konfiguration in Python — und der Rest der API spiegelt die Node-Version wider.
# 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()) Häufig gestellte Fragen
Häufige Fragen zur Verwendung von Shifter mit Playwright.
Übergeben Sie ein `proxy`-Feld in den Browser-Startoptionen mit `server`, `username` und `password`. Dieselbe Struktur gilt für Chromium, Firefox und WebKit. Anmeldedaten werden inline übergeben — keine Erweiterung erforderlich, und es funktioniert im Headless-Modus sofort.
Ja. Übergeben Sie `proxy` an `browser.newContext()`, und dieser Kontext verwendet einen anderen Proxy als der Rest des Browsers. Dies ist der sauberste Weg, um mehrere Länder parallel innerhalb eines Prozesses zu scrapen — deutlich speichereffizienter als das Starten mehrerer Browser.
Ja. Dieselbe Proxy-Konfiguration funktioniert für alle drei Engines. Firefox und WebKit sind nützlich, wenn ein Ziel Chrome-spezifische Bot-Erkennung einsetzt — Playwright ist eines der wenigen Tools, bei dem der Wechsel der Engine eine einzeilige Änderung ist.
Fügen Sie dem Proxy-Benutzernamen eine Sitzungs-ID hinzu — zum Beispiel `customer-USERNAME-country-us-sid-123ABC`. Jede Navigation, Anfrage und jeder Tab innerhalb dieses Kontexts verwendet dieselbe Residential IP. Fügen Sie `ttl-N` hinzu, um sie für bis zu N Sekunden festzuhalten.
Ja. Setzen Sie das Feld `use.proxy` in `playwright.config.ts`. Jeder Test, der es nicht überschreibt, erbt den Shifter-Proxy. Verwenden Sie Umgebungsvariablen für die Anmeldedaten, damit diese nicht in die Versionsverwaltung gelangen.
Ja — Playwright hat offizielle Clients für Python, Java und .NET. Die Proxy-Konfiguration verwendet dieselbe Struktur (server, username, password) in jeder Sprache. Die Beispiele auf dieser Seite zeigen sowohl Node als auch Python, aber dieselbe Einrichtung funktioniert überall.
Shifter verwenden mit Playwright
Steuern Sie Chromium, Firefox und WebKit über Shifters 205M+ Residential- und ISP-Proxys - Anmeldedaten direkt im Code, keine Erweiterungen erforderlich. Funktioniert mit Node, Python, Java und .NET.