Proxy på startniveau#
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();Brug et særskilt sessions-id til hver uafhængig arbejdsgang, hvor den tildelte gateway understøtter det. Bekræft de tilladte varigheds- og placeringsparametre i dine forbindelsesoplysninger. En hjemmeenhed kan afbryde forbindelsen før den ønskede varighed; en fastlåst session er ikke en garanti for samme IP i dagevis. For en fast adresse skal du sammenligne med et dedikeret statisk produkt.
Proxyservere pr. kontekst#
Hvis du vil køre flere lande eller sessioner i én browser, skal du starte med en pladsholderproxy og give hver kontekst sin egen.Chromium har brug for proxy på opstartsniveau til per-kontekst-proxyer for at blive respekteret.
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" } });Match konteksten til exit#
Giv hver kontekst den lokale og tidszonen for dets land, så IP, sprog og ur stemmer overens: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" Mismatch er et stærkere bot signal end IP'en selv, og det kan være svært at se.
Spar gigabyte: bloker det, du ikke har brug for#
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();
});En gengivet side kan veje 3 til 5 MB, dens HTML og API kalder nogle få hundrede kilobytes.På et per-GB netværk denne enkelt regel reducerer regningen med 80 til 90 %.
Bekræft og fejlfind#
- Åbn en IP-echo service først og tjek landet; derefter se på en geolocation opslag for byen.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDellerERR_PROXY_CONNECTION_FAILEDved opstart betyder legitimationsoplysninger eller en parameter er forkert; test den samme URL med cURL til at læse gateway-koden. - WebRTC er deaktiveret som standard i Playwright kontekster kun, hvis du blokerer det; tilføje
--disable-webrtcStil hærdning eller blok STUN når privatlivets fred er vigtigt.
Spørgsmål folk stiller#
Kan hver fane have en anden proxy?
Hver kontekst kan; faner (sider) i en kontekst deler sin proxy.Opret én kontekst pr session eller land.
Understøtter Playwright SOCKS5 proxy'er med godkendelse?
Chromium accepterer ikke SOCKS5-legitimationsoplysninger; brug HTTP-proxy på port 9000 med brugernavn og adgangskode, eller hvidlist din server IP og brug socks5://res.proxy-cyber.com:9001 uden legitimationsoplysninger.