Proxy na razini pokretanja#
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();Koristite različit identifikator sesije za svaki neovisni tijek rada, ako ga dodijeljeni pristupnik podržava. Potvrdite parametre dopuštenog trajanja i lokacije u detaljima veze. Uređaj u kućanstvu može se isključiti prije traženog trajanja; trajna sesija ne jamči isti IP danima. Za fiksnu adresu usporedite namjenski statički proizvod.
Proxyji po kontekstu#
Da biste pokrenuli više zemalja ili sesije u jednom pregledniku, pokrenite s proxyjem za rezervirano mjesto i dajte svakom kontekstu svoj vlastiti.Chromiumu je potreban proxy na razini pokretanja za poštivanje proxyja po kontekstu.
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" } });Poravnaj kontekst s izlazom#
Dajte svakom kontekstu lokalnu i vremensku zonu njegove zemlje, tako da se IP, jezik i sat slažu: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" Nepodudarnosti su jači signal za bot nego sam IP, a to je ono što se zove "bot signal".
Uštedite gigabajte: blokirajte ono što vam ne treba#
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();
});Renderirana stranica može težiti 3 do 5 MB; njezin HTML i API pozivi nekoliko stotina kilobajta, a na mreži po GB-u ovo jedno pravilo smanjuje račun za 80 do 90%.
Provjera i otklanjanje poteškoća#
- Prvo otvorite uslugu IP-echo i provjerite zemlju; zatim pogledajte geolokacijsko pretraživanje za grad.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDiliERR_PROXY_CONNECTION_FAILEDPri pokretanju znači vjerodajnice ili parametar su pogrešni; testirati isti URL s cURL za čitanje koda gateway. - WebRTC je standardno onemogućen u Playwright kontekstima samo ako ga blokirate; dodajte
--disable-webrtcStil otvrdnjavanje ili blok STUN kada je privatnost važna.
Pitanja koja ljudi postavljaju#
Može li svaka kartica imati drugačiji proxy?
Svaki kontekst može; kartice (stranice) unutar konteksta dijele svoj proxy.Stvorite jedan kontekst po sesiji ili zemlji.
Podržava li Playwright SOCKS5 proxyje s provjerom autentičnosti?
Chromium ne prihvaća SOCKS5 vjerodajnice; koristite HTTP proxy na portu 9000 s korisničkim imenom i lozinkom, ili uvrstite IP poslužitelja na popis dozvoljenih i koristite socks5://res.proxy-cyber.com:9001 bez vjerodajnica.