พร็อกซีระดับการเรียกให้ทํางาน#
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();ใช้ตัวระบุวาระการทํางานแต่ละตัวแบบแยกต่างหาก โดยเกตเวย์ของแต่ละค่า จะรองรับการทํางานแบบมีการกําหนดไว้ คุณยืนยันค่าช่วงเวลา และค่าที่ตั้งของตําแหน่งต่าง ๆ ในรายละเอียดการเชื่อมต่อของคุณ อุปกรณ์ที่พักสามารถยุติการทํางานได้ก่อนที่จะมีการเรียกดูระยะเวลาที่ต้องการ ซึ่งวาระการทํางานแบบกํามะหยี่นั้นไม่ใช่การรับประกันหมายเลขไอพีเดียวกันสําหรับที่อยู่คงที่ ให้เปรียบเทียบผลิตภัณฑ์แบบคงที่ที่ทํางานอยู่
ใบรับรองสําหรับข้อความ#
เพื่อทํางานหลายประเทศหรือหลายวาระในเบราว์เซอร์หนึ่งตัว ให้ทําการเรียกดูตําแหน่งพร็อกซี และให้แต่ละบริบทของมัน ครอเมียมต้องการพร็อกซีระดับการเปิดตัวสําหรับวัตถุประสงค์ต่อบรรทัด
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 MB; ภาษา HTML และ API เรียกข้อมูลได้ไม่กี่ร้อยกิโลไบต์ บนเครือข่ายต่อ GB กฎข้อแรกนี้ตัดบิลได้เพียง 1 ตัว ด้วย 80 ถึง 90%
ตรวจสอบและยิงปัญหา#
- เปิดบริการ IP-Echo ก่อน และตรวจสอบประเทศ จากนั้นดูที่การค้นหาพื้นที่ภูมิศาสตร์ของเมือง
- A
net::ERR_TUNNEL_CONNECTION_FAILEDหรือERR_PROXY_CONNECTION_FAILEDเมื่อเปิดตัว หมายถึง access หรือพารามิเตอร์ผิด; ทดสอบที่อยู่ URL เดียวกันกับ CUR เพื่ออ่านรหัสเกต - WebRTC จะถูกปิดโดยปริยายในบริบทของPlaywright เท่านั้นหากคุณจะบล็อคมัน และเพิ่ม
--disable-webrtcรูปแบบของการแข็งตัวหรือบล็อก Stun เมื่อความเป็นส่วนตัวที่สําคัญ
คําถามที่คนถาม#
แต่ละแท็บจะมีพร็อกซีที่แตกต่างออกไปได้ไหม?
แต่ละบริบททําได้; แท็บ (หน้า) ภายในบริบท จะใช้พร็อกซีร่วมกัน สร้างบริบทหนึ่งตัวต่อวาระ หรือประเทศ
Playwright รองรับพร็อกซี SOCKL5 ด้วยการตรวจสอบสิทธิ์หรือไม่?
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.