A Seleniumban a proxy hitelesítés nehézzé válik, amikor a böngésző – és nem a weboldal – kér felhasználónevet és jelszót. A helyes megoldás a proxy típusától, a böngészőtől, a Selenium verziójától és attól függ, hogy a hitelesítő adatok megadhatók-e a teszten kívül. Ez az útmutató bemutatja a megbízható Selenium 4 megközelítéseket, azokat a régebbi kerülő megoldásokat, amelyek továbbra is működnek, és azt, hogy miért hibásodik gyakran a riasztáskezelő kód.

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.

Válasszon egy megfelelő hálózatot: A statikus címek kényelmesek az engedélyezőlistázáshoz, míg a rotációs hálózatok nagyméretű gyűjtéshez alkalmasak. lakossági proxy szolgáltatók útmutatója elmagyarázza a gyakorlati különbségeket.

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ó.

JellegzetesHTTP/HTTPS proxySOCKS5 proxy
ForgalomBöngésző webes kérésekhez tervezveTöbb TCP-alapú alkalmazással működik
ProtokolltudatosságÉrti a HTTP kéréseket és fejléceketForgalom továbbítása HTTP szemantika olvasása nélkül
Szelén beállításHTTP és SSL proxy mezők beállításaÁllítsa be a SOCKS végpontot és verzióját
Tipikus felhasználásWebtesztelés, szűrés, gyorsítótárazás, ellenőrzésRugalmas 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Gyakori hibák: 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.