How to Handle Proxy Authentication in Selenium Webdriver is easiest when you first identify what is configured, what you are allowed to change, and how you will verify the result. The goal is to pass authorized proxy credentials to Selenium without hard-coding secrets carelessly, with close attention to browser support, credential storage, headless behavior, and test isolation. Skipping those checks can create brittle tests or leak usernames and passwords into source control and logs. This guide walks through the task in a controlled order, explains what each setting means, and includes checks that help you reverse a change or troubleshoot the connection without guessing.
Before You Start: How to Handle Proxy Authentication in Selenium Webdriver
Prepare the required information before changing a device, browser, or application. To pass authorized proxy credentials to Selenium without hard-coding secrets carelessly, confirm the following items and keep a record of the original settings so you can restore them if needed:
- Böngésző támogatás: Alakítsa ezt a funkciót mérhető követelménnyé, és ellenőrizze a kívánt eszköz, cél és működési szabályok alapján.
- Credential storage: Dokumentálja, hogy ki üzemelteti a szolgáltatást, hogyan történik a hozzáférés hitelesítése, milyen adatok naplózhatók, és melyik forgalom marad végponttól végpontig titkosítva.
- Headless behavior: Alakítsa ezt a funkciót mérhető követelménnyé, és ellenőrizze a kívánt eszköz, cél és működési szabályok alapján.
- Test isolation: Alakítsa ezt a funkciót mérhető követelménnyé, és ellenőrizze a kívánt eszköz, cél és működési szabályok alapján.
Mi az a proxy?
A proxy egy közvetítő, amely a böngésződ nevében küld kéréseket webhelyeknek. A cél a proxy IP-címét látja a Seleniumot futtató gép helyett. A tesztelőcsapatok proxykat használnak a regionális tapasztalatok érvényesítésére, a forgalom irányítására ellenőrzött hálózatokon keresztül, a kérések vizsgálatára vagy az automatizált munkaterhelések elosztására.
Egy proxy URL általában tartalmaz egy hosztot és egy portot, például proxy.example.test:8080A privát szolgáltatásokhoz felhasználónév és jelszó is szükséges lehet. A Selenium a böngésző beállításain keresztül konfigurálhatja a proxy végpontot, de a hitelesítési kérdéseket a böngésző vezérli, és nem mindig jelennek meg a WebDriver számára, mint egy hagyományos HTML űrlap.
Csak ott használj automatizálást, ahol erre jogosult vagy, tartsd tiszteletben a weboldal feltételeit, és tartsd távol a hitelesítő adatokat a forráskódtól és a tesztnaplóktól.
A SOCKS és a HTTP Proxy közötti különbség
A HTTP proxyk megértik a webforgalmat, és általában külön HTTP és HTTPS értékekkel vannak konfigurálva. A SOCKS proxyk alacsonyabb szinten működnek, és különböző típusú TCP forgalmat tudnak továbbítani az alkalmazásprotokoll értelmezése nélkül. A SOCKS5 emellett támogatja a hitelesítést, és általában ez az előnyben részesített SOCKS verzió.
| Jellegzetes | HTTP/HTTPS proxy | SOCKS5 proxy |
|---|---|---|
| Forgalom | Böngésző webes kérésekhez tervezve | Több TCP-alapú alkalmazással működik |
| Protokolltudatosság | Érti a HTTP kéréseket és fejléceket | Forgalom továbbítása HTTP szemantika olvasása nélkül |
| Szelén beállítás | HTTP és SSL proxy mezők beállítása | Állítsa be a SOCKS végpontot és verzióját |
| Tipikus felhasználás | Webtesztelés, szűrés, gyorsítótárazás, ellenőrzés | Rugalmas alagútkezelés és nem HTTP forgalom |
A böngészőnek és a proxy szolgáltatónak ugyanazt a metódust kell támogatnia. Egy érvényes végpont nem garantálja, hogy a Selenium automatikusan ki tudja tölteni a natív felhasználónév/jelszó párbeszédpanelt.
Hogyan kezeljük a proxyt a Selenium Webdriverben a Chrome-ban?
Interaktív hitelesítést nem igénylő proxy esetén a Selenium 4 hozzárendelhet egy Proxy kifogásol ChromeOptions. A jelenlegi hivatalos Selenium böngészőbeállítási dokumentáció ezt a képességalapú megközelítést mutatja be.
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
Proxy proxy = new Proxy();
proxy.setHttpProxy("proxy.example.test:8080");
proxy.setSslProxy("proxy.example.test:8080");
ChromeOptions options = new ChromeOptions();
options.setProxy(proxy);
WebDriver driver = new ChromeDriver(options);
driver.get("https://example.com");
SOCKS5 esetén ehelyett a SOCKS végpontot és verziót kell beállítani:
Proxy proxy = new Proxy();
proxy.setSocksProxy("proxy.example.test:1080");
proxy.setSocksVersion(5);
ChromeOptions options = new ChromeOptions();
options.setProxy(proxy);
A hitelesített proxyk használata külön tervezést igényel. A hitelesítő adatok URL-címbe ágyazását a modern böngészők elutasíthatják, és ez titkos információkat is felfedhet. A következő megközelítéseket részesítse előnyben:
- IP-engedélyezési lista: Engedélyezd a CI runner vagy a Selenium Grid csomópont fix nyilvános IP-címét, hogy ne jelenjen meg böngésző párbeszédpanel.
- Helyi átjáró: Helyezzen el egy megbízható továbbító proxyt a tesztgépen. A Selenium helyben, hitelesítő adatok nélkül csatlakozik, és az átjáró upstream módon hitelesíti magát.
- Vezérelt böngészőbővítmény: hozz létre egy belső Chrome-bővítményt, amely konfigurálja a proxyt és megválaszolja a hitelesítési kihívásokat. Csak védett tesztösszetevőből töltsd be.
- Rácsszintű konfiguráció: A hálózatépítést és a titkos kódokat a Selenium csomóponton kell konfigurálni ahelyett, hogy minden teszthez kiosztanánk a hitelesítő adatokat.
Olvasd be a hitelesítő adatokat egy titkos kezelőből vagy környezetspecifikus tesztkonfigurációból. Soha ne véglegesítsd őket Gitbe, ne nyomtasd ki őket konzolkimenetre, és ne szerepeljenek képernyőképeken. Indítás után ellenőrizd a kilépési IP-címet egy jóváhagyott tesztvégponttal, mielőtt folytatnád a csomag használatát.
ERR_PROXY_CONNECTION_FAILED általában azt jelzi, hogy a gazdagép, a port, a protokoll vagy a hálózati elérési út hibás. Ismétlődő 407 Proxy Authentication Required A válaszok hiányzó vagy elutasított hitelesítő adatokat jeleznek.Az AutoIt eszköz használata
Az AutoIt képes automatizálni a Windows párbeszédablakokat egy ablak megkeresésével, hitelesítő adatok beírásával és egy gomb megnyomásával. Ez egykor egy gyakori Selenium megoldás volt, mivel a WebDriver nem tudta működtetni a böngésző által birtokolt hitelesítési ablakokat.
A módszer törékeny: csak Windows rendszeren fut, feloldott interaktív asztalt igényel, az ablakcímektől és az időzítéstől függ, és általában hibát jelez headless konténerekben vagy távoli CI-ügynökökben. Szkripteken vagy folyamatargumentumokon keresztül jelszavakat is felfedhet.
Ha egy régi környezet nem hagy más alternatívát, fordítsd le az AutoIt szkriptet, tárold egy ellenőrzött teszt-összetevő helyen, futásidőben biztonságosan kérd le a hitelesítő adatokat, és várd meg a pontos párbeszédablakot a fix alvó üzemmód használata helyett. Korlátozd ezt a technikát egy elszigetelt Windows futtatófelületre. Karbantartható csomagok esetén az IP-engedélyezési lista, egy átjáró vagy a központilag konfigurált Grid csomópontok biztonságosabb választásnak bizonyulnak.
Figyelmeztetések használata
A Selenium képes kezelni a weboldal kódja által létrehozott JavaScript riasztásokat:
Alert alert = new WebDriverWait(driver, Duration.ofSeconds(10))
.until(ExpectedConditions.alertIsPresent());
alert.accept();
A proxy hitelesítési párbeszédpanel azonban általában egy böngésző Chrome-ja, nem pedig egy JavaScript-riasztás. Ezért driver.switchTo().alert() gyakran dob NoAlertPresentException még akkor is, ha látható a hitelesítő adatok megadására szolgáló ablak. Ugyanez a korlátozás vonatkozik számos HTTP alaphitelesítési párbeszédpanelre.
Csak azután használd a riasztási API-t, miután meggyőződtél arról, hogy a WebDriver felismeri a promptot. Ha nem, akkor távolítsd el a promptot a hálózati konfiguráción keresztül, vagy használd a fent leírt hitelesített proxy megközelítések egyikét. Ez stabilabb, mint a billentyűleütések összehangolása egy olyan ablakkal, amelyet a Selenium nem tud megvizsgálni.
GYIK
Beállíthat a Selenium közvetlenül egy proxyt?
Igen. A Selenium 4 képes HTTP, SSL vagy SOCKS beállításokat átadni a böngésző beállításain és proxy képességein keresztül. Ez konfigurálja a végpontot, de előfordulhat, hogy nem hajt végre böngésző általi hitelesítési kérést.
Miért nem működik a felhasználónév:jelszó@host:port a Chrome-ban?
A modern böngészők blokkolhatják az URL-ekbe ágyazott hitelesítő adatokat, és a szintaxis titkos adatokat szivárogtathat ki a naplókba és az előzményekbe. Használjon helyette IP-engedélyezési listát, biztonságos átjárót vagy ellenőrzött tesztelési infrastruktúrát.
Tudja a Selenium kezelni egy proxy bejelentkezést a switchTo().alert() függvénnyel?
Általában nem. A proxy hitelesítés általában böngésző felhasználói felületén történik, nem pedig JavaScript riasztáson, így a WebDriver azt jelentheti, hogy nincs riasztás.
Működik a proxy hitelesítés a headless Chrome-ban?
Működhet, ha a hitelesítés interaktív prompt nélkül történik. Az IP-engedélyezési lista, a helyi átjáró vagy a csomópont-szintű konfiguráció jobban megfelel a fej nélküli végrehajtáshoz.
Használjam az AutoIt-et a Selenium proxy hitelesítéshez?
Csak korlátozott, régi Windows munkafolyamatokhoz használd. CI-ben törékeny, és kevésbé biztonságos, mint a párbeszédpanel hálózati konfiguráción keresztüli kiküszöbölése.
Melyik proxy típus a legjobb a böngésző automatizálásához?
A jogosult feladattól függ. A HTTP proxyk egyszerűek a webforgalomhoz, a SOCKS5 rugalmas, a lakossági hálózatok pedig segíthetnek a helymeghatározás tesztelésében. Hasonlítsa össze a lehetőségeket a proxy típusok útmutatónkban.
