如何在Selenium WebDriver中配置帶認證的代理
更新於:
標準ChromeDriver的 --proxy-server=http://ip:port 參數會自動忽略內嵌的 user:pass 帳密,並跳出阻擋程式運行的登入對話框。若要在Selenium中順暢使用 VinaProxy 認證HTTP(S)代理,建議透過 selenium-wire 帶入認證,或是載入輕量級的Chrome onAuthRequired 背景擴充功能。
http://user:pass@ip:port (selenium-wire / Chrome proxy extension)- 1 個IP₫40,000
- 5+ 個IP₫35,000
- 10+ 個IP₫25,000
- 20+ 個IP₫25,000
- 50+ 個IP₫25,000
- 100+ 個IP₫25,000
- 200+ 個IP₫25,000
- 500+ 個IP₫25,000
- 1000+ 個IP₫22,000
- 2000+ 個IP₫20,000
- 1 個IP₫75,000
- 3+ 個IP₫70,000
- 5+ 個IP₫65,000
- 10+ 個IP₫60,000
- 50+ 個IP₫60,000
- 100+ 個IP₫60,000
- 200+ 個IP₫60,000
- 500+ 個IP₫55,000
在Selenium中實現代理身分認證的兩種可靠方案
根據你的程式語言與所使用的瀏覽器驅動選擇最適合的方案:
| 實作方案 | 配置程式碼語法 | 最佳適用情境 |
|---|---|---|
selenium-wire(Python) | seleniumwire_options={'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}} | Python下最快建置的方案;支援在會話執行中動態熱切換代理IP |
| Chrome Auth 擴充套件 | 載入處理 chrome.webRequest.onAuthRequired 的ZIP擴充套件 | 適用於Python、Java、C#標準Selenium及 undetected-chromedriver |
| 遷移至 Playwright | browser.newContext({ proxy: { server, username, password } }) | 原生支援情境層級代理認證,完全不需額外擴充套件 |
基於代理的Selenium爬蟲效能調校建議
- 設定
options.page_load_strategy = 'eager',使WebDriver在DOM結構互動就緒後立即執行操作,無須枯等第三方追蹤碼載入 - 在無頭模式下使用
--headless=new(Chrome 109+),確保擴充功能與代理認證行為與具介面模式完全一致 - 純文字電商資料擷取時,可透過Chrome偏好設定關閉圖片載入以節省頻寬並提升速度
- 務必將操作流程包裹於
try / finally: driver.quit()區塊中,避免背景殘留無用的Chromium處理程序
操作步驟
- 1
安裝 selenium-wire
在Python虛擬環境中執行
pip install selenium-wire。 - 2
定義你的 VinaProxy 代理字典
依格式設定憑證:
sw_options = {'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}}。 - 3
使用 seleniumwire_options 啟動 Chrome
初始化瀏覽器驅動:
driver = webdriver.Chrome(seleniumwire_options=sw_options)。 - 4
驗證對外IP位址
造訪
driver.get('https://vinaproxy.com/api/my-ip'),確認回傳的JSON資料顯示為購買的代理IP。
常見問題
為什麼在ChromeOptions中設定'--proxy-server=http://user:pass@ip:port'沒有作用?
Chromium核心基於安全理由會主動剔除啟動參數中的 user:pass@ 資訊。使用 selenium-wire、onAuthRequired 擴充套件或改用 Playwright 即可完美解決此問題。
在selenium-wire中能否不重啟Chrome動態更換代理?
可以。隨時在程式碼中將新字典指定給 driver.proxy = {'http': 'http://...', 'https': 'http://...'} 即可即時動態更換上游代理。
Chrome代理擴充套件能在無頭(Headless)模式下運作嗎?
可以,只要加上 --headless=new 參數取代舊版的 --headless,擴充套件即可如常載入並完成認證。
使用不限流量的靜態IP規模化運行Selenium WebDriver
即時開通涵蓋7個熱門國家的專屬IPv4與靜態住宅ISP代理。
購買Selenium代理