Cách cấu hình proxy trong Playwright (Node.js & Python)
Cập nhật:
Playwright là thư viện tự động hóa trình duyệt hiện đại nhất hiện nay vì hỗ trợ truyền trực tiếp server, username và password của proxy ngay trong hàm khởi tạo mà không cần cài thêm plugin phụ. Đặc biệt, tính năng Per-Context Proxy cho phép bạn mở hàng chục phiên trình duyệt với hàng chục địa chỉ IP VinaProxy khác nhau bên trong duy nhất 1 tiến trình Chromium.
proxy={ server: 'http://ip:port', username: 'user', password: 'pass' }- 1 IP40.000 ₫
- 5+ IP35.000 ₫
- 10+ IP25.000 ₫
- 20+ IP25.000 ₫
- 50+ IP25.000 ₫
- 100+ IP25.000 ₫
- 200+ IP25.000 ₫
- 500+ IP25.000 ₫
- 1000+ IP22.000 ₫
- 2000+ IP20.000 ₫
- 1 IP50.000 ₫
- 3+ IP40.000 ₫
- 5+ IP40.000 ₫
- 10+ IP32.000 ₫
- 50+ IP30.000 ₫
- 100+ IP30.000 ₫
- 200+ IP30.000 ₫
- 500+ IP25.000 ₫
Cấu hình Proxy ở tầng Browser so với tầng BrowserContext
Trong Playwright, bạn có thể truyền đối tượng proxy ở bước chromium.launch() (áp dụng cho toàn trình duyệt) hoặc truyền riêng lẻ ở từng lệnh browser.new_context() (mỗi Context một IP riêng, tiết kiệm 80% dung lượng RAM so với mở nhiều trình duyệt).
| Thuộc tính trong đối tượng proxy | Giá trị truyền vào | Lưu ý kỹ thuật |
|---|---|---|
server | 'http://ip:port' | Chỉ viết địa chỉ IP và Port kèm tiền tố http:// |
username | 'user' | Tên đăng nhập proxy lấy từ bảng quản lý VinaProxy |
password | 'pass' | Mật khẩu proxy (Playwright tự xử lý xác thực HTTP 407) |
bypass | 'localhost,127.0.0.1' | Danh sách tên miền nội bộ bỏ qua proxy (tùy chọn) |
Lưu ý quan trọng khi chạy Per-Context Proxy trên Windows
- Trên hệ điều hành Windows và macOS, nếu muốn gán proxy riêng cho từng
browser.new_context(proxy=...), bạn vẫn phải truyền một tham sốproxy={'server': 'http://per-context'}giả định lúc gọichromium.launch()để bật bộ định tuyến proxy của Chromium - Đồng bộ luôn
timezone_idvàlocaletrongnew_context()(ví dụ:timezone_id='America/New_York', locale='en-US') khớp với quốc gia của IP - Dùng
page.route('**/*.{png,jpg,jpeg,woff2}', lambda route: route.abort())để chặn tải ảnh tĩnh khi cần tốc độ cào dữ liệu tối đa
Các bước thực hiện
- 1
Lấy thông số ip, port, user, pass từ VinaProxy
Tách 4 thành phần từ dòng
ip:port:user:passtrong trang quản lý của bạn. - 2
Truyền đối tượng proxy vào launch() hoặc new_context()
Trong Python:
context = browser.new_context(proxy={'server': 'http://ip:port', 'username': 'user', 'password': 'pass'}). - 3
Đồng bộ múi giờ và ngôn ngữ cho Context
Thêm
localevàtimezone_idtương ứng với quốc gia của proxy (Việt Nam, Mỹ, Nhật, Anh...). - 4
Mở trang kiểm tra IP để xác nhận
Gọi
page = context.new_page(), truy cậphttps://vinaproxy.com/api/my-ipvà kiểm tra kết quả JSON.
Câu hỏi thường gặp
Tại sao Playwright báo lỗi 'Proxy is only supported when browser is launched with a proxy'?
Khi bạn muốn dùng proxy khác nhau cho từng new_context(), ở bước chromium.launch() đầu tiên bạn cần truyền chromium.launch(proxy={'server': 'http://per-context'}) để báo cho nhân trình duyệt bật chế độ định tuyến động.
Playwright có hỗ trợ cả 3 nhân Chromium, Firefox và WebKit với proxy VinaProxy không?
Có. Cả 3 động cơ chromium, firefox và webkit trong Playwright đều dùng chung cú pháp đối tượng proxy: { server, username, password }.
Một máy chủ 8GB RAM mở được bao nhiêu Context Playwright gắn proxy song song?
Vì một BrowserContext chỉ tốn vài chục MB bộ nhớ, bạn có thể chạy song song 15–30 Context (tương ứng 15–30 proxy tĩnh riêng biệt) trên một VPS 8GB RAM.
Chạy đa luồng Playwright mượt mà với bể proxy tĩnh VinaProxy
Không giới hạn băng thông, hỗ trợ xác thực gốc trên Chromium, Firefox và WebKit.
Mua Proxy cho Playwright