Іске қосу деңгейіндегі прокси#
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 МБ-қа дейін; оның HTML және API бірнеше жүз килобайт деп атайды.Бір ГБ желісінде бұл бір ереже шотты 80-нен 90%-ға дейін қысқартады.
Тексеру және ақаулықтарды жою#
- Алдымен IP-эхо қызметін ашып, елді тексеріңіз; содан кейін қаланы іздейтін геолокацияға қараңыз.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDнемесеERR_PROXY_CONNECTION_FAILEDіске қосу кезінде тіркелгі деректері немесе параметр дұрыс емес; шлюз кодын оқу үшін сол URL мекенжайын cURL арқылы тексеріңіз. - WebRTC әдепкі бойынша оны бұғаттаған жағдайда ғана Playward контекстінде өшіріледі; қосу
--disable-webrtcқұпиялылық маңызды болған кезде стильді қатайту немесе STUN блоктау.
Адамдар қоятын сұрақтар#
Әр қойындыда басқа прокси болуы мүмкін бе?
Әрбір контекст мүмкін; контекст ішіндегі қойындылар (беттер) оның проксиімен бөліседі. Сессияға немесе елге бір контекст жасаңыз.
Playward аутентификациясы бар SOCKS5 проксилерін қолдай ма?
Хром SOCKS5 тіркелгі деректерін қабылдамайды; пайдаланушы аты мен құпия сөзі бар порттағы HTTP проксиді 9000 пайдаланыңыз немесе сервердің IP-ін ақ тізімге салыңыз және тіркелгі деректері жоқ socks5://res.proxy-cyber.com:9001 пайдаланыңыз.