Jak skonfigurować proxy z autoryzacją w Selenium WebDriver
Updated:
Standardowe flagi ChromeDrivera --proxy-server=http://ip:port ignorują dane logowania user:pass w adresie i wyświetlają blokujące okno logowania. Aby bez problemu używać proxy HTTP(S) VinaProxy z autoryzacją w Selenium, przekaż dane logowania przez selenium-wire lub załaduj małe rozszerzenie tła Chrome onAuthRequired.
http://user:pass@ip:port (selenium-wire / Chrome proxy extension)- 1 IP40 000 VND
- 5+ IP35 000 VND
- 10+ IP25 000 VND
- 20+ IP25 000 VND
- 50+ IP25 000 VND
- 100+ IP25 000 VND
- 200+ IP25 000 VND
- 500+ IP25 000 VND
- 1000+ IP22 000 VND
- 2000+ IP20 000 VND
- 1 IP75 000 VND
- 3+ IP70 000 VND
- 5+ IP65 000 VND
- 10+ IP60 000 VND
- 50+ IP60 000 VND
- 100+ IP60 000 VND
- 200+ IP60 000 VND
- 500+ IP55 000 VND
Dwa niezawodne sposoby autoryzacji proxy w Selenium
Wybierz rozwiązanie dopasowane do Twojego środowiska uruchomieniowego i sterownika przeglądarki:
| Rozwiązanie | Składnia konfiguracji | Zastosowanie |
|---|---|---|
selenium-wire (Python) | seleniumwire_options={'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}} | Najszybsza konfiguracja w Pythonie; obsługuje dynamiczną zmianę proxy w trakcie sesji |
| Rozszerzenie autoryzacji Chrome | Załadowanie spakowanego rozszerzenia obsługującego chrome.webRequest.onAuthRequired | Standardowe Selenium w Pythonie, Javie, C# oraz undetected-chromedriver |
| Migracja do Playwright | browser.newContext({ proxy: { server, username, password } }) | Natywna autoryzacja proxy na poziomie kontekstu bez konieczności używania rozszerzeń |
Wskazówki wydajnościowe dotyczące scrapingu w Selenium przez proxy
- Ustaw
options.page_load_strategy = 'eager', aby WebDriver rozpoczynał interakcję od razu po załadowaniu drzewa DOM, bez oczekiwania na powolne skrypty śledzące podmiotów zewnętrznych - Używaj
--headless=new(Chrome 109+) w trybie headless, aby rozszerzenia Chrome i autoryzacja proxy działały identycznie jak w trybie z interfejsem graficznym - Wyłącz renderowanie obrazów w preferencjach Chrome, jeśli pobierasz wyłącznie dane tekstowe produktów
- Zawsze umieszczaj sterownik w bloku
try / finally: driver.quit(), aby zapobiec powstawaniu osieroconych procesów Chromium
Krok po kroku
- 1
Zainstaluj selenium-wire
Uruchom
pip install selenium-wirew swoim wirtualnym środowisku Pythona. - 2
Zdefiniuj słownik z proxy VinaProxy
Sformatuj swoje dane logowania jako
sw_options = {'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}}. - 3
Uruchom webdriver.Chrome z opcją seleniumwire_options
Zainicjalizuj sterownik:
driver = webdriver.Chrome(seleniumwire_options=sw_options). - 4
Zweryfikuj wyjściowy adres IP
Przejdź pod adres
driver.get('https://vinaproxy.com/api/my-ip')i upewnij się, że odpowiedź JSON zawiera adres IP Twojego proxy.
Często zadawane pytania
Dlaczego `--proxy-server=http://user:pass@ip:port` nie działa w ChromeOptions?
Chromium celowo usuwa user:pass@ z flagi wiersza poleceń --proxy-server. Wykorzystanie selenium-wire, rozszerzenia onAuthRequired lub Playwright skutecznie rozwiązuje ten problem.
Czy w selenium-wire można zmienić proxy bez ponownego uruchamiania Chrome?
Tak. W dowolnym momencie przypisz nowy słownik do driver.proxy = {'http': 'http://...', 'https': 'http://...'}, aby zmienić aktywne proxy nadrzędne w locie.
Czy rozszerzenia proxy Chrome działają w trybie headless?
Tak, o ile podasz flagę --headless=new zamiast starszej --headless.
Uruchamiaj Selenium WebDriver na dużą skalę ze stałymi IP
Błyskawicznie dostępne dedykowane proxy IPv4 i statyczne proxy ISP w 7 krajach.
Kup proxy dla Selenium