Selenium'da proxy kimlik doğrulaması, web sayfası değil de tarayıcı kullanıcı adı ve şifre istediğinde zorlaşır. Doğru çözüm, proxy türüne, tarayıcıya, Selenium sürümüne ve kimlik bilgilerinin test dışında sağlanıp sağlanamayacağına bağlıdır. Bu kılavuz, güvenilir Selenium 4 yaklaşımlarını, eski geçici çözümlerin hala geçerli olduğu durumları ve uyarı işleme kodunun neden sıklıkla başarısız olduğunu açıklamaktadır.

Proxy nedir?

Proxy, tarayıcınız adına web sitelerine istek gönderen bir aracıdır. Hedef, Selenium'u çalıştıran makinenin IP adresi yerine proxy'nin IP adresini görür. Test ekipleri, bölgesel deneyimleri doğrulamak, trafiği kontrollü ağlar üzerinden yönlendirmek, istekleri incelemek veya otomatikleştirilmiş iş yüklerini dağıtmak için proxy'leri kullanır.

Bir proxy URL'si genellikle bir ana bilgisayar ve bağlantı noktası içerir, örneğin: proxy.example.test:8080Özel hizmetler ayrıca kullanıcı adı ve parola gerektirebilir. Selenium, proxy uç noktasını tarayıcı seçenekleri aracılığıyla yapılandırabilir, ancak kimlik doğrulama istemleri tarayıcı tarafından kontrol edilir ve sıradan bir HTML formu gibi her zaman WebDriver'a gösterilmez.

Uygun bir ağ seçin: Statik adresler izin verilenler listesine ekleme için uygundur, dönen ağlar ise büyük ölçekli veri toplama için idealdir. konut vekalet hizmeti sağlayıcıları kılavuzu Pratik farklılıkları açıklıyor.

Otomasyonu yalnızca yetkiniz olan yerlerde kullanın, web sitesi şartlarına uyun ve kimlik bilgilerini kaynak kodundan ve test günlüklerinden uzak tutun.

SOCKS ve HTTP Proxy arasındaki fark

HTTP proxy'leri web trafiğini anlar ve genellikle ayrı HTTP ve HTTPS değerleriyle yapılandırılır. SOCKS proxy'leri daha düşük bir seviyede çalışır ve uygulama protokolünü yorumlamadan farklı türde TCP trafiğini taşıyabilir. SOCKS5 ayrıca kimlik doğrulamayı destekler ve genellikle tercih edilen SOCKS sürümüdür.

KarakteristikHTTP/HTTPS proxySOCKS5 proxy
TrafikTarayıcı web istekleri için tasarlanmıştır.TCP tabanlı birden fazla uygulamayla çalışır.
Protokol farkındalığıHTTP isteklerini ve başlıklarını anlar.HTTP semantiğini okumadan trafiği yönlendirir.
Selenium kurulumuHTTP ve SSL proxy alanlarını ayarlayın.SOCKS uç noktasını ve sürümünü ayarlayın.
Tipik kullanımWeb testi, filtreleme, önbellekleme, incelemeEsnek tünelleme ve HTTP dışı trafik

Tarayıcı ve proxy sağlayıcısının aynı yöntemi desteklemesi gerekir. Geçerli bir uç nokta, Selenium'un yerel kullanıcı adı/şifre iletişim kutusunu otomatik olarak tamamlayabileceğini garanti etmez.

Chrome'da Selenyum Web Sürücüsünde Proxy Nasıl Kullanılır

Etkileşimli kimlik doğrulaması gerektirmeyen bir proxy için Selenium 4, bir atama yapabilir. Proxy itiraz etmek ChromeOptions. akım Selenium tarayıcı seçenekleri resmi dokümantasyonu Bu yetenek tabanlı yaklaşımı göstermektedir.

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 için bunun yerine SOCKS uç noktasını ve sürümünü ayarlayın:

Proxy proxy = new Proxy();
proxy.setSocksProxy("proxy.example.test:1080");
proxy.setSocksVersion(5);

ChromeOptions options = new ChromeOptions();
options.setProxy(proxy);

Kimlik doğrulamalı proxy'ler ek planlama gerektirir. Kimlik bilgilerini bir URL'ye yerleştirmek modern tarayıcılar tarafından reddedilebilir ve gizli bilgileri açığa çıkarabilir. Şu yaklaşımları tercih edin:

  1. IP adreslerinin izin verilenler listesine eklenmesi: Tarayıcıda herhangi bir iletişim kutusu görünmemesi için CI çalıştırıcınızın veya Selenium Grid düğümünüzün sabit genel IP adresini yetkilendirin.
  2. Yerel ağ geçidi: Test makinesine güvenilir bir yönlendirme proxy'si yerleştirin. Selenium, kimlik bilgileri olmadan yerel olarak bağlanır ve ağ geçidi yukarı akışta kimlik doğrulaması yapar.
  3. Kontrollü tarayıcı uzantısı: Proxy'yi yapılandıran ve kimlik doğrulama sorularını yanıtlayan dahili bir Chrome uzantısı oluşturun. Bunu yalnızca korumalı bir test ortamından yükleyin.
  4. Izgara düzeyinde yapılandırma: Kimlik bilgilerini her teste dağıtmak yerine, ağ yapılandırmasını ve gizli bilgileri Selenium düğümünde gerçekleştirin.

Kimlik bilgilerini bir gizli veri yöneticisinden veya ortama özgü test yapılandırmasından okuyun. Bunları asla Git'e kaydetmeyin, konsol çıktısına yazdırmayın veya ekran görüntülerine eklemeyin. Başlatıldıktan sonra, pakete devam etmeden önce çıkış IP adresini onaylanmış bir test uç noktasıyla doğrulayın.

Yaygın arıza: ERR_PROXY_CONNECTION_FAILED Genellikle ana bilgisayarın, bağlantı noktasının, protokolün veya ağ yolunun yanlış olduğunu gösterir. Tekrarlanan 407 Proxy Authentication Required Yanıtlar, eksik veya reddedilmiş kimlik bilgilerini gösteriyor.

AutoIt aracını kullanarak

AutoIt, bir pencereyi bularak, kimlik bilgilerini girerek ve bir düğmeye basarak Windows iletişim kutularını otomatikleştirebilir. Bu, bir zamanlar Selenium'un yaygın bir geçici çözümüydü çünkü WebDriver, tarayıcıya ait kimlik doğrulama pencerelerini çalıştıramıyordu.

Bu yöntem kırılgandır: yalnızca Windows'ta çalışır, kilidi açılmış etkileşimli bir masaüstü gerektirir, pencere başlıklarına ve zamanlamaya bağlıdır ve genellikle başsız konteynerlerde veya uzaktan CI aracılarında başarısız olur. Ayrıca komut dosyaları veya işlem argümanları aracılığıyla parolaları da ortaya çıkarabilir.

Eski bir ortamda başka alternatif yoksa, AutoIt betiğini derleyin, kontrollü bir test dosyası konumunda saklayın, çalışma zamanında kimlik bilgilerini güvenli bir şekilde alın ve sabit bir bekleme süresi kullanmak yerine tam iletişim kutusunu bekleyin. Bu tekniği izole edilmiş bir Windows çalıştırıcısıyla sınırlandırın. Bakımı kolay test paketleri için IP adres listeleme, ağ geçidi veya merkezi olarak yapılandırılmış Grid düğümleri daha güvenli seçeneklerdir.

Uyarıları Kullanma

Selenium, web sayfası kodu tarafından oluşturulan JavaScript uyarılarını işleyebilir:

Alert alert = new WebDriverWait(driver, Duration.ofSeconds(10))
    .until(ExpectedConditions.alertIsPresent());
alert.accept();

Ancak, proxy kimlik doğrulama iletişim kutusu normalde bir JavaScript uyarısı değil, tarayıcı arayüzüdür. Bu nedenle, driver.switchTo().alert() sık sık fırlatır NoAlertPresentException Kimlik doğrulama istemi görünür olsa bile bu durum geçerlidir. Aynı sınırlama birçok HTTP temel kimlik doğrulama iletişim kutusu için de geçerlidir.

WebDriver'ın istemi tanıdığından emin olduktan sonra uyarı API'sini kullanın. Tanımazsa, istemi ağ yapılandırması aracılığıyla kaldırın veya yukarıda açıklanan kimlik doğrulamalı proxy yaklaşımlarından birini kullanın. Bu, Selenium'un inceleyemediği bir pencereyle tuş vuruşlarını koordine etmekten daha kararlıdır.

SSS

Selenium doğrudan proxy ayarı yapabilir mi?

Evet. Selenium 4, tarayıcının seçenekleri ve proxy özelliği aracılığıyla HTTP, SSL veya SOCKS ayarlarını iletebilir. Bu, uç noktayı yapılandırır ancak tarayıcıya ait kimlik doğrulama istemini tamamlamayabilir.

Chrome'da username:password@host:port sorgusu neden çalışmıyor?

Modern tarayıcılar URL'lere gömülü kimlik bilgilerini engelleyebilir ve sözdizimi gizli bilgilerin günlük kayıtlarına ve geçmişe sızmasına neden olabilir. Bunun yerine IP adres listeleme, güvenli bir ağ geçidi veya kontrollü test altyapısı kullanın.

Selenium, switchTo().alert() ile proxy oturum açma işlemini yönetebilir mi?

Genellikle hayır. Proxy kimlik doğrulaması genellikle JavaScript uyarısı yerine tarayıcı arayüzü üzerinden yapılır, bu nedenle WebDriver herhangi bir uyarı olmadığını bildirebilir.

Chrome'un başsız (headless) modunda proxy kimlik doğrulaması çalışıyor mu?

Kimlik doğrulama etkileşimli bir istem olmadan çözüldüğünde çalışabilir. IP izin listesi, yerel ağ geçidi veya düğüm düzeyinde yapılandırma, başsız yürütme için daha uygundur.

Selenium proxy kimlik doğrulaması için AutoIt kullanmalı mıyım?

Yalnızca kısıtlı eski Windows iş akışları için kullanın. Sürekli entegrasyonda kırılgandır ve ağ yapılandırması yoluyla diyaloğu ortadan kaldırmaktan daha az güvenlidir.

Tarayıcı otomasyonu için en iyi proxy türü hangisidir?

Bu, yetkilendirilen göreve bağlıdır. HTTP proxy'leri web trafiği için basittir, SOCKS5 esnektir ve ev ağları konum testine yardımcı olabilir. Proxy türleri kılavuzumuzdaki seçenekleri karşılaştırın.