2015-05-26 13 views
12

Po wielu godzinach szukam, że to niemożliwe.Jak korzystać z uwierzytelnionego serwera proxy w selenowej chromedriver?

Muszę uruchomić Chrome przez selen przy użyciu różnych uwierzytelnionych (nie publicznych) proxy dla każdego uruchomienia.

PROXY_IP = "<some IP address>" 
UID = "<the user id>" 
PWD = "<the password"> 

options = webdriver.ChromeOptions() 
options.add_argument("--proxy-server=%s:%[email protected]%s" % (UID,PWD,PROXY_IP)) 

driver = webdriver.Chrome(executable_path=".\\driver\\chromedriver.exe", 
          chrome_options=options) 
driver.get("<site URL>") 

Chrome rozpalania i wyświetla błąd:

This webpage is not available 
ERR_NO_SUPPORTED_PROXIES 

Jeśli używam proxy publiczną wymagającą żadnego uwierzytelnienia takiego ...

PROXY_IP = "<public proxy IP address>" 

options = webdriver.ChromeOptions() 
options.add_argument("--proxy-server=%s" % PROXY_IP) 

driver = webdriver.Chrome(executable_path=".\\driver\\chromedriver.exe", 
          chrome_options=options) 
driver.get("<site URL>") 

... to działa dobrze i wyświetla witrynę podczas korzystania z serwera proxy.

Próbowałem też wariant z http:// przed identyfikatorem użytkownika:

options.add_argument("--proxy-server=http://%s:%[email protected]%s" % (UID,PWD,PROXY_IP)) 

Fakt Szukałem wszędzie i nie znalazł rozwiązanie pozwala mi wierzyć, nikt może istnieć.

znalazłem to, ale nie mogę sensu z nim:

selenium chromedriver authentication proxy

Nie wiesz co browswermob-proxy jest lub ma robić i jak wdrożyć i przetestować w Pythonie. Nienawidzę układania rozwiązań w bandach, chyba że są absolutnie konieczne.

+0

Właśnie przesłałem raport o błędzie. https://bugs.chromium.org/p/chromedriver/issues/detail?id=1605 –

+0

jakiejkolwiek aktualizacji/rozwiązania? – Toolkit

Odpowiedz

0

Próbowałem dużo czasu, aby zrobić to samo.

Chrome używa tylko proxy systemu operacyjnego, w którym jest zainstalowany. Możesz to sprawdzić, przechodząc do opcji-> znajdź: proxy -> zmień ustawienia proxy

Więc bez dodatkowych dodatków i konfiguracji tych dodatków nie możesz tego zrobić.

Lub możesz zmienić ustawienia proxy serwera - jest to znacznie łatwiejsze.

Możesz również użyć phantomjs - ma ten sam silnik (WebKit) co chrome. używając coś takiego:

String PROXY = proxyIP + ":" + proxyPort; 
String proxyAuth= proxyUser + ":" + proxyPass; 
     OpenQA.Selenium.Proxy proxy = new OpenQA.Selenium.Proxy(); 
        proxy.HttpProxy = PROXY; 
        proxy.FtpProxy = PROXY; 
        proxy.SslProxy = PROXY; 
        proxy.SocksProxy = PROXY; 

    var serviceJS = PhantomJSDriverService.CreateDefaultService(phantomPath); 
    serviceJS.AddArguments("--proxy=" + PROXY, "--proxy-type=http", "--proxy-auth=" + proxyAuth); 
+0

Chrome NIE używa OS proxy, możesz go łatwo ustawić za pomocą 'options.AddArguments (" - proxy-server = ... ")' – Toolkit

+0

@Toolkit czy próbowałeś tego kodu i działa? Próbowałem pracować z chrome proxy z takim kodem i to nie działało dla mnie. To samo dotyczy przeglądarki FF. – Andrew

+0

tak dodanie serwera proxy do ChromeDriver jest trywialne, 'options.AddArguments (" --proxy-server = http: //proxy.com: 111 ");' – Toolkit

0

To tymczasowe rozwiązanie może działać w stanie początkowym: Kod jest w Pythonie: Pobierz wtyczkę pierwszy od sklepu wtyczki Chrome: Proxy Auto-Auth_v2.0.crx

 options = webdriver.ChromeOptions() 
     options.add_extension("./Proxy-Auto-Auth_v2.0.crx")) #this will provide you a window to enter user name and proxy 
     driver = webdriver.Remote(command_executor=selenium_server,desired_capabilities=options.to_capabilities()) 

     or 

     driver = webdriver.Chrome(chrome_options=options) 
1

Sprawdziłem większość rozwiązań w Internecie i żadne z nich nie uwierzytelniało za pomocą funkcji chrome/firefox. Sprawdź ten link: https://github.com/webdriverio/webdriverio/issues/324. Wreszcie tymczasowe rozwiązanie polega na dodaniu do białej listy twojego adresu IP u dostawcy proxy.

+0

Biała lista nie jest rozwiązaniem, jeśli nazwa użytkownika zawiera parametry – Toolkit

Powiązane problemy