Proksi level launch-#
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();Gunakan identifikasi sesi yang berbeda untuk setiap aliran kerja independen, dimana gerbang yang diberikan mendukungnya. Konfirmasi durasi dan parameter lokasi yang diizinkan dalam rincian koneksi Anda. Perangkat perumahan dapat terputus sebelum durasi yang diminta; sesi lengket bukan jaminan IP yang sama selama berhari-hari. Untuk alamat tetap, bandingkan produk statis yang berdedikasi.
Proksi per- konteks#
Untuk menjalankan beberapa negara atau sesi dalam satu browser, luncurkan dengan sebuah proksi placeholder dan berikan setiap konteks sendiri. Kromium memerlukan proksi tingkat launch-untuk proksi per- konteks untuk merasa terhormat.
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" } });Cocok dengan konteks ke keluar#
Berikan setiap konteks zona lokal dan waktu negaranya, jadi IP, bahasa dan jam setuju: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" Kesalahan adalah sinyal robot yang lebih kuat daripada IP itu sendiri.
Simpan gigabyte: blok apa yang Anda tidak perlu#
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();
});Sebuah halaman yang ditulis dapat menimbang 3 sampai 5 MB; HTML dan API memanggil beberapa ratus kilobytes. Pada jaringan per- GB aturan tunggal ini memotong tagihan sebesar 80 sampai 90%.
Verifikasi dan ringkas#
- Pertama-tama buka layanan IP-echo dan periksa negara; kemudian lihat pada pencarian geolokasi untuk kota.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDatauERR_PROXY_CONNECTION_FAILEDpada peluncuran berarti kredensial atau sebuah parameter salah; uji URL yang sama dengan cURL untuk membaca kode gateway. - WebRTC dinonaktifkan secara baku dalam konteks Playwright hanya jika Anda memblokirnya; tambahkan
--disable-webrtcgaya mengeras atau blok STUN ketika privasi penting.
Pertanyaan yang orang tanyakan#
Bisakah masing-masing tab memiliki proksi yang berbeda?
Setiap konteks dapat; tab (pages) di dalam konteks berbagi proksinya. Buat satu konteks per sesi atau negara.
Apakah Playwright mendukung proksi SOCKS5 dengan otentikasi?
Chromium tidak menerima kredensial SOCKS5; gunakan proksi HTTP pada port 9000 dengan nama pengguna dan kata sandi, atau whitelist IP server Anda dan gunakan socks5: / / res.proxy-cyber.com: 9001 tanpa kredensial.