लॉन्च-स्तर प्रॉक्सी#
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();प्रत्येक स्वतंत्र वर्कफ़्लो के लिए एक अलग सत्र पहचानकर्ता का उपयोग करें, जहां निर्दिष्ट गेटवे इसका समर्थन करता है। अपने कनेक्शन विवरण में अनुमति अवधि और स्थान मापदंडों की पुष्टि करें। अनुरोध अवधि से पहले एक आवासीय उपकरण डिस्कनेक्ट कर सकता है; एक चिपचिपा सत्र दिनों के लिए उसी आईपी की गारंटी नहीं है। एक निश्चित पते के लिए, एक समर्पित स्थिर उत्पाद की तुलना करें।
Per-context प्रॉक्सी#
एक ब्राउज़र में कई देशों या सत्रों को चलाने के लिए, एक प्लेसहोल्डर प्रॉक्सी के साथ लॉन्च करें और प्रत्येक संदर्भ को अपने आप दे दें। क्रोमियम को प्रति-context प्रॉक्सी के लिए लॉन्च-स्तरीय प्रॉक्सी की आवश्यकता है।
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" } });बाहर निकलने के संदर्भ में मिलान करें#
प्रत्येक संदर्भ को अपने देश के स्थानीय और समय क्षेत्र को दें, इसलिए आईपी, भाषा और घड़ी सहमत हैं: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" बर्लिन संदर्भ के लिए। Mismatches आईपी की तुलना में एक मजबूत बॉट संकेत हैं।
गिगाबाइट बचाओ: क्या आपको आवश्यकता नहीं है उसे अवरुद्ध करें#
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 MB हो सकता है; इसका एचटीएमएल और एपीआई कुछ सौ किलोबाइट्स को कॉल करता है। प्रति जीबी नेटवर्क पर यह एकल नियम बिल को 80 से 90 % तक काटता है।
सत्यापित करें और समस्या निवारण#
- पहले IP-echo सेवा खोलें और देश की जांच करें; फिर शहर के लिए भू-स्थानिक लुकअप को देखें।
- A
net::ERR_TUNNEL_CONNECTION_FAILEDयाERR_PROXY_CONNECTION_FAILEDलॉन्च पर इसका मतलब क्रेडेंशियल या पैरामीटर गलत हैं; गेटवे कोड पढ़ने के लिए cURL के साथ उसी URL का परीक्षण करें। - WebRTC केवल तभी संभव है जब आप इसे ब्लॉक करते हैं, तो Playwright संदर्भों में डिफ़ॉल्ट रूप से अक्षम है; जोड़ें
--disable-webrtcजब गोपनीयता मामलों में स्टाइल सख्त या ब्लॉक एसटीयूएन।
सवाल पूछो#
क्या प्रत्येक टैब में एक अलग प्रॉक्सी हो सकता है?
प्रत्येक संदर्भ कर सकते हैं; एक संदर्भ के अंदर टैब (पृष्ठ) अपने प्रॉक्सी साझा करते हैं। प्रति सत्र या देश एक संदर्भ बनाएं।
क्या Playwright प्रमाणीकरण के साथ ऑक्टा 5 प्रॉक्सी का समर्थन करता है?
क्रोमियम एक्क्स5 क्रेडेंशियल को स्वीकार नहीं करता है; उपयोगकर्ता नाम और पासवर्ड के साथ पोर्ट 9000 पर HTTP प्रॉक्सी का उपयोग करें, या अपने सर्वर IP को व्हाइटलिस्ट करें और socks5://res.proxy-cyber.com:9001 का उपयोग करें क्रेडेंशियल के बिना।