Прокси на ниво стартиране#
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();Използвайте различен идентификатор на сесия за всеки независим работен процес, когато определеният портал го поддържа. Потвърдете разрешената продължителност и параметрите на местоположението в подробностите за вашата връзка. Устройство от дома може да прекъсне връзката преди поисканата продължителност; една прилепнала сесия не е гаранция за един и същи адрес IP в продължение на дни.
Прокси за контекст#
За да стартирате няколко страни или сесии в един браузър, стартирайте с прокси на място и дайте на всеки контекст свой собствен.Хромът се нуждае от проксито на ниво стартиране за да бъдат уважавани проксита по контекст.
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" } });Съответствие на контекста с изхода#
Дайте на всеки контекст локалната и часова зона на неговата страна, така че адресът IP, езикът и часовникът да са съгласувани: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" Несъответствията са по-силен сигнал за ботовете, отколкото самият адрес IP на потребителя.
Спестете гигабайти: блокирайте това, от което не се нуждаете#
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();
});Една изобразена страница може да тежи от 3 до 5 МБ; нейният код и API повикванията са няколкостотин килобайта.В мрежа на ГБ това едно правило намалява сметката с 80 до 90%.
Проверка и отстраняване на неизправности#
- Отворете първо услуга за ехо и проверете страната; след това погледнете търсенето на геолокация за града.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDилиERR_PROXY_CONNECTION_FAILEDпри стартиране означава, че идентификационните данни или параметърът са грешни; тествайте същия адрес с за да прочетете кода на шлюз. - УебРТС е деактивиран по подразбиране в контекста на Плейрайт само ако го блокирате; добавете
--disable-webrtcСтил втвърдяване или блок когато поверителността е от значение.
Въпроси, които хората задават#
Може ли всеки раздел да има различен прокси?
Всеки контекст може да споделя проксито си с разделите (страниците) в рамките на контекста.Създайте един контекст за сесия или държава.
Поддържа ли прокси с удостоверяване?
Chromium does not accept SOCKS5 credentials; use the HTTP proxy on port 9000 with username and password, or whitelist your server IP and use socks5://res.proxy-cyber.com:9001 without credentials.