Przewodnik po Selenium · 1 min czytania

Konfiguracja proxy Selenium w Pythonie i Javie

Selenium może przekierować przeglądarkę przez proxy w kilku linijkach — ale uwierzytelnione proxy potrzebują rozszerzenia lub pomocnika wychodzącego, ponieważ Chrome nie przyjmuje USER:PASS w wierszu poleceń. Oto niezawodny wzór.

Problem z uwierzytelnianiem w Selenium

Setting an unauthenticated proxy in Selenium is trivial: add --proxy-server=http://host:3128 to Chrome options, or fill Selenium's Proxy object, and you are done. The moment the proxy needs a username and password, that simple path breaks — Chrome refuses credentials inline, and unlike Puppeteer or Playwright, Selenium has no built-in authenticate() hook to answer the 407 challenge.

Solidne, międzyjęzykowe rozwiązanie to mała rozszerzenie Chrome generowane w czasie rzeczywistym, które przenosi twoje dane uwierzytelniające i odpowiada na żądanie autoryzacji proxy za pomocą API webRequest. Działa w trybie headless, nie potrzebuje dodatkowych usług i zachowuje się tak samo w Pythonie i Javie. Z s4m wskazujesz rozszerzenie na proxy.s4m.online:3128 (HTTP) i swoje USER:PASS. Zobacz stronę proxy i przewodnik po autoryzacji dla kontekstu; dla opcji bez autoryzacji podczas testowania, darmowa lista ma otwarte proxy, które możesz bezpośrednio wprowadzić do flagi w wierszu poleceń.

Uwierzytelnione proxy za pomocą wygenerowanej rozszerzenia

Ten pomocnik Pythona pisze jednorazowe rozszerzenie Chrome z Twoimi danymi logowania, a następnie je ładuje. Zastąp USER:PASS przed uruchomieniem.

python
import os, zipfile, tempfile
from selenium import webdriver

HOST, PORT, USER, PASS = "proxy.s4m.online", 3128, "USER", "PASS"

manifest = '{"version":"1.0.0","manifest_version":2,"name":"s4m-proxy",'\
  '"permissions":["proxy","webRequest","webRequestBlocking","<all_urls>"],'\
  '"background":{"scripts":["bg.js"]}}'

bg = ('var c={mode:"fixed_servers",rules:{singleProxy:'
      '{scheme:"http",host:"%s",port:%d}}};'
      'chrome.proxy.settings.set({value:c,scope:"regular"},function(){});'
      'chrome.webRequest.onAuthRequired.addListener('
      'function(d){return {authCredentials:{username:"%s",password:"%s"}};},'
      '{urls:["<all_urls>"]},["blocking"]);') % (HOST, PORT, USER, PASS)

path = os.path.join(tempfile.mkdtemp(), "s4m_proxy.zip")
with zipfile.ZipFile(path, "w") as z:
    z.writestr("manifest.json", manifest)
    z.writestr("bg.js", bg)

opts = webdriver.ChromeOptions()
opts.add_extension(path)
driver = webdriver.Chrome(options=opts)
driver.get("https://api.ipify.org")
print("Exit IP:", driver.find_element("tag name", "body").text)
driver.quit()

# ----- Java (unauthenticated proxy) -----
// Proxy p = new Proxy();
// p.setHttpProxy("proxy.s4m.online:3128");
// ChromeOptions o = new ChromeOptions();
// o.setProxy(p);
// WebDriver driver = new ChromeDriver(o);

Wybór podejścia

Wybierz na podstawie tego, czy proxy wymaga poświadczeń.

Brak autoryzacji? Użyj flagi

Dla nieautoryzowanego proxy wystarczy dodać --proxy-server=http://host:3128 do ChromeOptions lub ustawić obiekt Proxy w Selenium. Nic więcej nie jest potrzebne.

Auth? Wygeneruj rozszerzenie

Dla proxy USER:PASS, dostarcz mały rozszerzenie runtime, które odpowiada na onAuthRequired. Działa bezgłowo i zachowuje się tak samo w różnych językach.

Punkt końcowy HTTP dla przeglądarek

Użyj proxy.s4m.online:3128 (HTTP). Uwierzytelnione SOCKS5 w przeglądarce jest zawodowe, więc zachowaj SOCKS5 dla CLI i klientów bibliotecznych.

Zachowaj rozszerzenie w prywatności

Wygenerowane rozszerzenie osadza twoje dane uwierzytelniające w pliku tymczasowym. Zapisz go w prywatnym katalogu tymczasowym i usuń po zakończeniu działania.

Niezawodność i uczciwe oczekiwania

Selenium obsługuje prawdziwą przeglądarkę, co jest zarówno jego siłą, jak i kosztem: jest cięższy niż surowy klient HTTP, więc utrzymuj sesje celowe i szybko zamykaj sterowniki. Jeśli potrzebujesz tylko HTML, klient HTTP za proxy jest znacznie tańszy — zobacz scraping z użyciem requests. Sięgaj po Selenium, gdy wymagane jest renderowanie JavaScript lub prawdziwa interakcja użytkownika.

Jak zawsze, proxy zmienia Twój adres IP, a nie Twój odcisk palca. Proxysy s4m to datacenter — idealne do testów funkcjonalnych, monitorowania i umiarkowanego scrapingu, ale wykrywalne jako datacenter na wrogich stronach. Gdy logowanie lub lista dozwolonych adresów oczekuje jednego stabilnego adresu, dodaj dedykowany osobisty adres IP. Dla nowszych projektów rozważ Playwright, którego natywna autoryzacja proxy całkowicie unika tańca z rozszerzeniami. Weryfikuj wyjścia za pomocą narzędzi i przeczytaj dokumentację API, aby zautomatyzować rotację poświadczeń.

FAQ

Pytania, odpowiedzi

Dlaczego nie mogę umieścić USER:PASS w flagach proxy Selenium?

Chrome ignoruje dane uwierzytelniające w flagach --proxy-server i zamiast tego wywołuje natywny monit o uwierzytelnienie, na który przeglądarka bez interfejsu nie może odpowiedzieć. Niezawodnym rozwiązaniem jest mała rozszerzenie Chrome, które odpowiada na onAuthRequired Twoją nazwą użytkownika i hasłem.

Czy jest prostszy sposób na nieautoryzowane proxy?

Tak. Bez poświadczeń możesz po prostu dodać --proxy-server=http://host:3128 do ChromeOptions lub wypełnić obiekt Proxy w Selenium w Javie. Rozszerzenie jest potrzebne tylko wtedy, gdy proxy wymaga USER:PASS.

Czy powinienem używać SOCKS5 czy HTTP z Selenium?

Użyj punktu końcowego HTTP na porcie 3128 dla przeglądarek. Uwierzytelnione SOCKS5 w przeglądarce jest niewiarygodne; zachowaj SOCKS5 dla klientów wiersza poleceń i bibliotek.

Czy Playwright byłby łatwiejszy?

Często, tak. Playwright przyjmuje dane uwierzytelniające proxy natywnie w swoim obiekcie proxy, więc całkowicie pomijasz rozszerzenie. Selenium wciąż jest odpowiednim wyborem, gdy twój projekt już na nim polega.

Przekierowuj przeglądarki przez proxy

Uwierzytelnione serwery proxy w centrum danych na proxy.s4m.online, gotowe do użycia z Selenium za pomocą wygenerowanej rozszerzenia. Płatność metrowa, płacisz za to, co zużyjesz, z opcją dedykowanego IP dla stabilnych logowań.

Ludzie znaleźli tę stronę, szukając

Rzeczywiste frazy wyszukiwania, na które ta strona odpowiada — powiązane otwierają stronę, która je szczegółowo omawia.