Cách gắn proxy có xác thực user:pass vào Selenium WebDriver
Cập nhật:
Khi điều khiển Chrome hoặc Firefox bằng Selenium WebDriver, cờ dòng lệnh --proxy-server=http://ip:port mặc định của Chrome không cho phép truyền trực tiếp username và password, dẫn tới việc trình duyệt bật bảng hỏi mật khẩu làm treo kịch bản Headless. Để gắn mượt mà proxy của VinaProxy vào Selenium, bạn dùng selenium-wire hoặc nạp tiện ích tự động phản hồi sự kiện onAuthRequired.
http://user:pass@ip:port (selenium-wire / Chrome proxy extension)- 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 IP75.000 ₫
- 3+ IP70.000 ₫
- 5+ IP65.000 ₫
- 10+ IP60.000 ₫
- 50+ IP60.000 ₫
- 100+ IP60.000 ₫
- 200+ IP60.000 ₫
- 500+ IP55.000 ₫
2 phương pháp truyền proxy user:pass vào Selenium ChromeDriver
Tùy theo kiến trúc dự án hiện tại của bạn, hãy chọn một trong hai cách tiếp cận chuẩn dưới đây để Chrome tự động đăng nhập proxy:
| Phương pháp trong Selenium | Cách khai báo | Khi nào nên dùng |
|---|---|---|
Cách 1: Thư viện selenium-wire | seleniumwire_options = {'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}} | Nhanh nhất trong Python, hỗ trợ đổi proxy động ngay giữa phiên chạy |
| Cách 2: Chrome Auth Extension (.zip) | Đóng gói manifest.json + background.js bắt sự kiện webRequest.onAuthRequired | Dùng với selenium chuẩn trên Java, C#, Python hoặc undetected-chromedriver |
| Đổi sang Playwright | browser.new_context(proxy={'server': ..., 'username': ..., 'password': ...}) | Khuyên dùng nếu bạn viết mới vì hỗ trợ xác thực gốc không cần plugin |
Mẹo tối ưu tốc độ tải trang khi chạy Selenium qua proxy
- Thiết lập
options.page_load_strategy = 'eager'để Selenium thao tác ngay khi cây DOM tải xong mà không chờ các script quảng cáo bên thứ ba - Tắt tải hình ảnh bằng
prefs = {'profile.managed_default_content_settings.images': 2}nếu script chỉ cần lấy dữ liệu văn bản HTML - Kết hợp cờ
--disable-blink-features=AutomationControlledđể giảm khả năng bị phát hiện WebDriver - Đóng trình duyệt bằng
driver.quit()trong khốifinally:để không làm rò rỉ tiến trình Chrome ngầm
Các bước thực hiện
- 1
Cài đặt selenium-wire hoặc tạo gói tiện ích xác thực
Trong môi trường Python, chạy lệnh
pip install selenium-wire(hoặc chuẩn bị file.zipchứa scriptonAuthRequired). - 2
Khai báo thông tin proxy của VinaProxy
Tạo cấu hình
options = {'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}}từ thông số trong bảng quản lý. - 3
Khởi tạo trình điều khiển webdriver.Chrome
Gọi
driver = webdriver.Chrome(seleniumwire_options=options)để trình duyệt khởi chạy qua cổng proxy. - 4
Kiểm tra địa chỉ IP hiển thị trên trình duyệt
Chạy
driver.get('https://vinaproxy.com/api/my-ip')và kiểm tra nội dung trang trả về đúng IP đã gắn.
Câu hỏi thường gặp
Tại sao viết `--proxy-server=http://user:pass@ip:port` trong ChromeOptions lại không chạy?
Nhân Chromium cố tình bỏ qua phần user:pass@ trong cờ dòng lệnh --proxy-server vì lý do bảo mật tiến trình hệ điều hành. Do đó bạn bắt buộc phải dùng selenium-wire, tiện ích mở rộng onAuthRequired hoặc chuyển sang Playwright.
Làm sao đổi sang proxy khác mà không cần tắt mở lại cửa sổ Chrome trong selenium-wire?
Bạn chỉ cần gán lại thuộc tính driver.proxy = {'http': 'http://user2:pass2@ip2:port2', 'https': 'http://user2:pass2@ip2:port2'} ngay trong lúc trình duyệt đang mở.
Chạy Selenium ở chế độ `--headless=new` có nạp được tiện ích xác thực proxy không?
Có. Chế độ --headless=new (từ Chrome 109 trở lên) hỗ trợ nạp đầy đủ Chrome Extensions giống hệt chế độ có giao diện.
Trang bị proxy tĩnh tốc độ cao cho dàn Selenium WebDriver
Proxy IPv4 riêng & Static ISP không giới hạn băng thông tại 7 quốc gia.
Mua Proxy cho Selenium