2015-05-26 5 views
12

Dopo aver cercato per molte ore, sto iniziando a pensare che sia impossibile.Come utilizzare il proxy autenticato in selenium chromedriver?

Ho bisogno di eseguire Chrome attraverso il selenio utilizzando diversi proxy autenticati (non pubblici) per ogni esecuzione.

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-up sparare e visualizzare l'errore:

This webpage is not available 
ERR_NO_SUPPORTED_PROXIES 

Se uso un proxy pubblico che non richiede l'autenticazione come questo ...

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

... si corre va bene e visualizza il sito mentre si utilizza il proxy.

Ho provato anche una variante con http:// di fronte l'ID utente:

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

Il fatto che ho cercato in lungo e in largo e non ho trovato una soluzione mi porta a credere nessuno possa esistere.

ho trovato questo, ma non riesco a dare un senso di esso:

selenium chromedriver authentication proxy

Non so cosa browswermob-proxy è o dovrebbe fare o il modo di implementare e testare in Python. Odio accumulare soluzioni di cerotto a meno che non siano assolutamente necessarie.

+0

Ho appena inviato una segnalazione di errore. https://bugs.chromium.org/p/chromedriver/issues/detail?id=1605 –

+0

qualsiasi aggiornamento/soluzione? – Toolkit

risposta

0

Ho provato molto tempo a fare lo stesso.

Chrome utilizza solo il proxy del sistema operativo in cui è installato. Puoi verificarlo andando su opzioni-> trova: proxy -> cambia le impostazioni del proxy

Quindi senza add-on aggiuntivi e configurando questo addon non puoi farlo.

Oppure è possibile modificare le impostazioni del proxy del sistema operativo - questo è molto più semplice.

Inoltre è possibile utilizzare phantomjs: ha lo stesso motore (WebKit) come chrome. utilizzando qualcosa di simile:

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 NON sta utilizzando il proxy del sistema operativo, puoi facilmente impostarlo con 'options.AddArguments (" - proxy-server = ... ")' – Toolkit

+0

@Toolkit hai provato questo codice e ha funzionato? Ho provato a lavorare con il proxy Chrome con tale codice e non ha funzionato per me. Lo stesso vale per il browser FF. – Andrew

+0

sì l'aggiunta di proxy a ChromeDriver è banale, 'options.AddArguments (" --proxy-server = http: //proxy.com: 111 ");' – Toolkit

0

Si tratta di una soluzione temporanea potrebbe funzionare in stato iniziale: Codice è in Python: scaricare il plugin prima dal Chrome Store plugin: 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

Ho controllato la maggior parte delle soluzioni sul Web e nessuna di esse è stata autenticata tramite le funzionalità desiderate di chrome/firefox. Controlla questo link: https://github.com/webdriverio/webdriverio/issues/324. Infine, la soluzione temporanea è autorizzare l'indirizzo IP con il provider proxy.

+0

non è una whitelist di una soluzione se il nome utente contiene parametri – Toolkit