Indítási szintű proxy#
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();Használjon külön munkamenet-azonosítót minden független munkafolyamathoz, ha a hozzárendelt átjáró támogatja. A kapcsolat részleteiben ellenőrizze az engedélyezett időtartamot és helyparamétereket. Egy otthoni eszköz a kért időtartam előtt leválhat; egy ragacsos munkamenet nem garantálja, hogy napokig ugyanazt az IP-címet használja. Rögzített cím esetén hasonlítsa össze a dedikált statikus termékeket.
Per-context proxy-k#
Ha több országot vagy munkamenetet szeretne futtatni egy böngészőben, indítsa el a programot helyőrző proxyval és adjon meg minden kontextusnak sajátját.A Chromiumnak szüksége van az indítási szintű proxyra a kontextusonkénti proxyk tiszteletben tartásához.
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" } });A kontextus megfeleltetése a kimenetnek#
Adja meg minden kontextusnak az országának helyi beállításait és időzónáját, hogy az IP, a nyelv és az óra megegyezzen: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" A nem egyező IP-címek erősebb botjelzést jelentenek, mint maga az IP.
Gigabájt mentése: blokkolja, amire nincs szüksége#
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();
});Egy renderelt oldal 3-5 MB, a HTML és API hívásai néhány száz kilobájt, egy GB-os hálózaton ez az egyetlen szabály 80-90%-kal csökkenti a számlát.
Ellenőrzés és hibaelhárítás#
- Nyisson meg egy IP-echo szolgáltatást, és ellenőrizze az országot; majd nézze meg a város geolokációs keresését.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDvagyERR_PROXY_CONNECTION_FAILEDAz indításkor megjelenő hiba azt jelenti, hogy a hitelesítő adatok vagy egy paraméter helytelen; ugyanazt az URL-t tesztelje cURL segítségével az átjáró kódjának beolvasásához. - A WebRTC alapértelmezés szerint le van tiltva a Playwright kontextusokban, csak akkor, ha blokkolja; add
--disable-webrtcStílus keményítés vagy blokk STUN, ha a magánélet számít.
Kérdések, amiket az emberek feltesznek#
Minden lapon lehet más proxy?
Minden kontextusban lehetnek lapok (oldalak), amelyek megosztják a proxy-t, munkamenetenként vagy országonként egy kontextust hozhat létre.
Támogatja a Playwright a SOCKS5 proxykat hitelesítéssel?
A Chromium nem fogadja el a SOCKS5 hitelesítő adatokat; használd a HTTP proxyt a 9000-es porton felhasználónévvel és jelszóval, vagy engedélyezd a szerver IP címét és használd a socks5://res.proxy-cyber.com:9001 címet hitelesítő adatok nélkül.