Procură la nivel de lansare#
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();Utilizaţi un identificator de sesiune distinct pentru fiecare flux de lucru independent, în cazul în care poarta atribuită o sprijină. Confirmaţi durata permisă şi parametrii de localizare în detaliile de conectare. Un dispozitiv rezidenţial se poate deconecta înainte de durata solicitată; o sesiune lipicioasă nu este o garanţie a aceluiaşi IP pentru zile. Pentru o adresă fixă, comparaţi un produs static dedicat.
Proxime per-context#
Pentru a rula mai multe țări sau sesiuni într-un browser, lansați cu un proxy titular și da fiecare context propriu. Crom are nevoie de proxy la nivel de lansare pentru proxy per-context pentru a fi onorat.
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" } });Se potrivește contextului cu ieșirea#
Oferă fiecare context local și fusul orar al țării sale, astfel încât IP, limba și ceasul sunt de acord: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" pentru contextul Berlinului. Mismatches sunt un semnal bot mai puternic decât IP-ul în sine.
Salvează gigabytes: blochează ceea ce nu ai nevoie#
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();
});O pagină redată poate cântări între 3 și 5 MB; HTML-ul și API-ul său numesc câteva sute de kilobytes. Pe o rețea per-GB această regulă unică reduce proiectul de lege cu 80 la 90 %.
Verificați și depanare#
- Deschideţi mai întâi un serviciu IP-echo şi verificaţi ţara; apoi uitaţi-vă la o căutare geolocaţie pentru oraş.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDsauERR_PROXY_CONNECTION_FAILEDla lansare înseamnă că acreditările sau un parametru sunt greșite; testați același URL cu cURL pentru a citi codul de poartă. - WebRTC este dezactivat în mod implicit în contexte Playwright numai dacă îl blochezi; adăugați
--disable-webrtcStil întărirea sau blocarea STUN atunci când contează intimitatea.
Întrebări pe care oamenii le pun#
Fiecare filă poate avea un proxy diferit?
Fiecare context poate; tab-uri (pagini) într-un context împărtășesc proxy-ul său. Creați un context pe sesiune sau țară.
Suportă Playwright SOCKS5 proxies cu autentificare?
Cromul nu acceptă acreditările SOCKS5; utilizați proxy HTTP pe portul 9000 cu numele de utilizator și parola, sau alb listați serverul IP și utilizați șosete5://res.proxy-cyber.com:9001 fără acreditări.