Proxy na ravni zagona#
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();Uporabite ločen identifikator seje za vsak neodvisen potek dela, kjer ga dodeljeni prehod podpira. Potrdite dovoljeno trajanje in parametre lokacije v podrobnostih povezave. Domača naprava lahko prekine povezavo pred zahtevanim trajanjem; lepljiva seja ni zagotovilo za isti IP več dni. Za fiksni naslov primerjajte namenski statični izdelek.
Proxyji po kontekstu#
Če želite v enem brskalniku zagnati več držav ali sej, zaženite z ogrado proxy in vsakemu kontekstu dodelite svoj.Chromium potrebuje proxy na ravni zagona za spoštljive proxyje po kontekstih.
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" } });Ujemanje konteksta z izhodom#
Vsakemu kontekstu dodelite krajevno nastavitev in časovni pas države, tako da se IP, jezik in ura ujemajo: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" Neujemanja so močnejši signal za bot kot IP sam po sebi, zato je treba upoštevati tudi to.
Prihranite gigabajte: blokirajte, kar ne potrebujete#
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();
});Upodobljena stran lahko tehta od 3 do 5 MB, njen HTML in API kliče nekaj sto kilobajtov, na omrežju po GB pa to pravilo zmanjša račun za 80 do 90 %.
Preverjanje in odpravljanje težav#
- Najprej odprite storitev IP-echo in preverite državo; nato si oglejte iskanje geolokacije za mesto.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDaliERR_PROXY_CONNECTION_FAILEDPri zagonu pomeni, da so poverilnice ali parameter napačni; preizkusite isti URL s cURL-om, da preberete kodo prehoda. - WebRTC je privzeto onemogočen v kontekstih Playwright le, če ga blokirate; add
--disable-webrtcStyle utrjevanje ali blok STUN, ko je zasebnost pomembna.
Vprašanja, ki jih ljudje postavljajo#
Ali ima lahko vsak zavihek drugačen proxy?
Vsak kontekst lahko; zavihki (strani) znotraj konteksta delijo svoj proxy Ustvarite en kontekst na sejo ali državo.
Ali Playwright podpira SOCKS5 proxy-je s preverjanjem pristnosti?
Chromium ne sprejema poverilnic SOCKS5; uporabite HTTP proxy na vratih 9000 z uporabniškim imenom in geslom ali dodajte IP strežnika na seznam dovoljenih in uporabite socks5://res.proxy-cyber.com:9001 brez poverilnic.