Proxy Cấp phóng#
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();Dùng bộ nhận diện phiên chạy riêng cho mỗi luồng làm việc độc lập, nơi mà cổng được chỉ định hỗ trợ nó. Xác nhận khoảng thời gian và thông số vị trí cho phép trong chi tiết kết nối của bạn. Một thiết bị cư trú có thể ngắt kết nối trước khi yêu cầu; một phiên chạy dính không phải là bảo đảm cùng một IP trong ngày. Đối với địa chỉ cố định, hãy so sánh một sản phẩm tĩnh đã đóng.
Giấy proxy cho mỗi văn bản#
Để chạy nhiều quốc gia hay phiên chạy trong cùng một trình duyệt, hãy khởi động với proxy giữ chỗ và cung cấp cho mỗi bối cảnh riêng. Chromium cần proxy phóng để được vinh danh theo từng văn bản.
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" } });Khớp ngữ cảnh để thoát#
Cho mỗi ngữ cảnh và vùng thời gian của đất nước, vì vậy IP, ngôn ngữ và đồng hồ đồng ý: locale=\"de-DE\", timezone_id=\"Europe/Berlin\" Đối với bối cảnh Berlin, sự trùng khớp là một tín hiệu robot mạnh hơn cả IP.
Lưu Gitabyte: ngăn những gì bạn không cần#
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();
});Một trang được vẽ có thể cân nặng 3 đến 5 MB; HTML và ADI gọi vài trămkg. Trên một mạng lưới trên mỗiGB, luật này cắt giảm đơn vị tới 80 đến 90 %.
Kiểm tra và kiểm tra vấn đề#
- Mở một dịch vụ IP-echo trước và kiểm tra quốc gia, sau đó nhìn vào một định vị địa lý tìm kiếm cho thành phố.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDhayERR_PROXY_CONNECTION_FAILEDlúc bắt đầu có nghĩa là xác thực hay tham số là sai; hãy thử nghiệm cùng một địa chỉ URL với cURL để đọc mã cổng. - WebTTC bị tắt theo mặc định trong bối cảnh Playwright chỉ khi bạn chặn nó; thêm
--disable-webrtcPhong cách cứng rắn hoặc ngăn cản STUN khi có vấn đề riêng tư.
Người ta thắc mắc#
Mỗi thẻ có thể có một proxy khác nhau không?
Mỗi ngữ cảnh có thể; duyệt (trang) bên trong một văn cảnh chia sẻ proxy của nó. Tạo một ngữ cảnh cho mỗi phiên chạy hay một quốc gia.
Máy phát nhạc có hỗ trợ SOCKS5 với sự xác thực không?
Chromium không chấp nhận proxy SOCKS5; hãy sử dụng proxy HTTP trên cổng 9000 với tên người dùng và mật khẩu, hoặc danh sách trắng IP của bạn và dùng vớ 5 ký tự.key-poxy.com: 9001 không có giấy phép.