2015-05-26 8 views
12

Nachdem ich viele Stunden gesucht habe, fange ich an zu denken, dass das unmöglich ist.Wie authentifizierten Proxy in Selenchromedriver zu verwenden?

Ich muss Chrome Selen mit verschiedenen authentifizierten (nicht öffentlichen) Proxy für jeden Lauf ausführen.

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 wird Feuer-up und zeigt den Fehler:

This webpage is not available 
ERR_NO_SUPPORTED_PROXIES 

Wenn ich einen öffentlichen Proxy verwenden keine Authentifizierung wie dies erforderlich ist ...

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>") 

... es läuft gut und zeigt die Website während der Verwendung des Proxy.

Ich versuchte auch eine Variante mit http:// vor der Benutzer-ID:

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

Die Tatsache, dass ich weit und breit habe gesucht und habe keine Lösung führt mich zu glauben, keine existieren könnte gefunden.

Ich tat dies finden, aber ich kann nicht Sinn machen aus ihm heraus:

selenium chromedriver authentication proxy

nicht sicher, was browswermob-proxy ist oder tun soll oder wie in Python implementieren und zu testen. Ich hasse es, Pflaster-Lösungen aufzustapeln, wenn sie nicht unbedingt notwendig sind.

+0

Ich habe gerade einen Fehlerbericht eingereicht. https://bugs.chromium.org/p/chromedriver/issues/detail?id=1605 –

+0

jede Aktualisierung/Lösung? – Toolkit

Antwort

0

Ich habe viel Zeit versucht, das Gleiche zu tun.

Chrome verwendet nur den Proxy des Betriebssystems, auf dem es installiert ist. Sie können es überprüfen, indem Sie Optionen-> finden: Proxy -> Proxy-Einstellungen ändern

Also ohne zusätzliche Addons und die Konfiguration dieser Addons können Sie dies nicht tun.

Oder Sie können Ihre OS-Proxy-Einstellungen ändern - das ist viel einfacher.

Sie können auch Phantomjs verwenden - es hat die gleiche Engine (WebKit) wie Chrome. mit so etwas wie folgt aus:

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 verwendet KEINEN OS-Proxy, Sie können ihn einfach über 'options.AddArguments (" - proxy-server = ... ") setzen. – Toolkit

+0

@Toolkit Haben Sie diesen Code probiert und es funktioniert? Ich habe versucht, mit Chrome-Proxy mit einem solchen Code zu arbeiten, und es hat nicht für mich funktioniert. Das gleiche gilt für den FF-Browser. – Andrew

+0

ja, Hinzufügen von Proxy zu ChromeDriver ist trivial, 'options.AddArguments (" --proxy-server = http: //proxy.com: 111 ");' – Toolkit

0

dies eine vorübergehende Lösung ist in Anfangszustand funktionieren könnte: -Code ist in Python: Downloaden Sie das Plugin zuerst aus Chrom-Plug-Speicher: Proxy-Auto-Auth_v2.0.crx

1

Ich habe für die meisten Lösungen im Internet überprüft und für keine von ihnen Authentifizierung über Chrome/Firefox gewünschten Funktionen funktioniert. Überprüfen Sie diesen Link: https://github.com/webdriverio/webdriverio/issues/324. Schließlich besteht die vorübergehende Lösung darin, Ihre IP-Adresse mit dem Proxy-Provider zu verbinden.

+0

Whitelisting ist keine Lösung, wenn der Benutzername Parameter enthält – Toolkit

Verwandte Themen