Mellomtjener på oppstartsnivå#
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();Bruk en distinkt øktidentifikator for hver uavhengige arbeidsflyt, der den tildelte gatewayen støtter det. Bekreft tillatt varighet og plasseringsparametre i dine forbindelsesdetaljer. En hjemmeenhet kan koble fra før forespurt varighet; en fast økt er ikke en garanti for samme IP i dager. For en fast adresse, sammenlign et dedikert statisk produkt.
Per- kontekst mellomtjenere#
For å kjøre flere land eller økter i én nettleser, start med en plassholder-mellomtjener og gi hver kontekst sin egen.Chromium trenger mellomtjeneren på oppstartsnivå for per-kontekst-mellomtjenester for å bli respektert.
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" } });Samsvarer konteksten med utgangen#
Gi hver kontekst den lokale og tidssone for landet, slik at IP, språk og klokke stemmer: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" Mismatch er et sterkere botsignal enn IP-en i seg selv, og kan være en viktig faktor for å identifisere bots.
Spar gigabyte: blokker det du ikke trenger#
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 gjengitt side kan veie 3 til 5 MB, HTML og API kaller noen hundre kilobytes.På en per-GB nettverk denne ene regelen reduserer regningen med 80 til 90%.
Bekreft og feilsøk#
- Åpne en IP-echo tjeneste først og sjekk landet; deretter se på en geolocation oppslag for byen.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDellerERR_PROXY_CONNECTION_FAILEDVed oppstart betyr legitimasjon eller en parameter er feil; test den samme URL-en med cURL for å lese gatewaykoden. - WebRTC er deaktivert som standard i Playwright kontekster bare hvis du blokkerer det; Legg til
--disable-webrtcStil herding eller blokkere STUN når personvernet er viktig.
Spørsmål folk stiller#
Kan hver fane ha en annen proxy?
Hver kontekst kan; faner (sider) i en kontekst deler sin proxy.Lag én kontekst per økt eller land.
Støtter Playwright SOCKS5 proxy med autentisering?
Chromium godtar ikke SOCKS5 legitimasjon; bruk HTTP-mellomtjeneren på port 9000 med brukernavn og passord, eller hvitliste serverens IP og bruk socks5://res.proxy-cyber.com:9001 uten legitimasjon.