Launch-level proxy#
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "http://res.proxy-cyber.com:9000",
"username": "USER-cc-us-sid-run1-ttl-30m",
"password": "PASS",
})
page = browser.new_page()
page.goto("https://api.ipify.org")
print(page.inner_text("body"))
browser.close()import { chromium } from "playwright";
const browser = await chromium.launch({
proxy: { server: "http://res.proxy-cyber.com:9000", username: "USER-cc-us-sid-run1-ttl-30m", password: "PASS" },
});
const page = await browser.newPage();
await page.goto("https://api.ipify.org");
console.log(await page.innerText("body"));
await browser.close();Pro každý nezávislý pracovní postup použijte odlišný identifikátor relace, pokud to přiřazená brána podporuje. V podrobnostech o připojení potvrďte povolenou dobu trvání a parametry umístění. Domácí zařízení se může odpojit před požadovaným časem trvání; stálá relace nezaručuje stejnou IP adresu po několik dní.
Per-context proxy#
Chcete-li v jednom prohlížeči spustit více zemí nebo relací, spusťte jej pomocí proxy zástupného symbolu a přiřaďte každému kontextu vlastní.Chromium potřebuje pro respektování proxy na úrovni spouštění proxy na úroveň spouštěni.
browser = p.chromium.launch(proxy={"server": "http://per-context"})
de = browser.new_context(proxy={"server": "http://res.proxy-cyber.com:9000", "username": "USER-cc-de-city-berlin-sid-de1-ttl-30m", "password": "PASS"})
us = browser.new_context(proxy={"server": "http://res.proxy-cyber.com:9000", "username": "USER-cc-us-state-tx-sid-us1-ttl-30m", "password": "PASS"})const browser = await chromium.launch({ proxy: { server: "http://per-context" } });
const de = await browser.newContext({ proxy: { server: "http://res.proxy-cyber.com:9000", username: "USER-cc-de-city-berlin-sid-de1-ttl-30m", password: "PASS" } });
const us = await browser.newContext({ proxy: { server: "http://res.proxy-cyber.com:9000", username: "USER-cc-us-state-tx-sid-us1-ttl-30m", password: "PASS" } });Přizpůsobit kontext výstupu#
Každému kontextu dejte locale a časové pásmo jeho země, aby se IP, jazyk a čas shodovaly: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" Neshody jsou silnějším signálem pro boty než samotná IP adresa, která je v tomto případě důležitější.
Ušetřete gigabajty: blokujte to, co nepotřebujete#
def block(route):
if route.request.resource_type in {"image", "media", "font", "stylesheet"}:
return route.abort()
return route.continue_()
page.route("**/*", block)await page.route("**/*", (route) => {
const t = route.request().resourceType();
return ["image", "media", "font", "stylesheet"].includes(t) ? route.abort() : route.continue();
});Vykreslená stránka může mít 3 až 5 MB, její HTML a API volání několik set kilobajtů, v síti s GB datovým tarifem toto pravidlo snižuje účet o 80 až 90 %.
Ověřování a řešení problémů#
- Nejprve otevřete službu IP-echo a zkontrolujte zemi; pak se podívejte na vyhledávání geolokace pro město.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDneboERR_PROXY_CONNECTION_FAILEDPři spuštění znamená, že přihlašovací údaje nebo parametr jsou nesprávné; otestujte stejnou URL pomocí cURL pro čtení kódu brány. - WebRTC je ve výchozím nastavení zakázán v kontextech Playwright pouze tehdy, pokud jej blokujete; přidat
--disable-webrtcstyl kalení nebo blok STUN, když je soukromí důležité.
Otázky, které lidé kladou#
Může mít každá karta jiný proxy server?
Každý kontext může sdílet proxy server, karty (stránky) uvnitř kontextu mohou sdílet stejné proxy servery.
Podporuje Playwright proxy SOCKS5 s ověřením?
Chromium nepřijímá SOCKS5 přihlašovací údaje; použijte HTTP proxy na portu 9000 s uživatelským jménem a heslem, nebo whitelist IP serveru a použijte socks5://res.proxy-cyber.com:9001 bez přihlašování.