web-dev-qa-db-fra.com

Exécuter Selenium derrière un serveur proxy

J'utilise Selenium pour la simulation automatique de navigateurs et le grattage Web en python, et cela a bien fonctionné pour moi. Mais maintenant, je dois l'exécuter derrière un serveur proxy. Alors maintenant, Selenium ouvre la fenêtre mais ne peut pas ouvrir la page demandée car les paramètres de proxy ne sont pas définis sur le navigateur ouvert. Le code actuel est le suivant (exemple):

from Selenium import webdriver

sel = webdriver.Firefox()
sel.get('http://www.google.com')
sel.title
sel.quit()

Comment puis-je changer le code ci-dessus pour qu'il fonctionne également avec le serveur proxy?

13
Aryabhatt

Vous devez définir les fonctionnalités souhaitées ou le profil du navigateur, comme suit:

profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", "proxy.server.address")
profile.set_preference("network.proxy.http_port", "port_number")
profile.update_preferences()
driver = webdriver.Firefox(firefox_profile=profile)

Voir aussi les discussions connexes:

22
alecxe

La documentation officielle de Selenium ( http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#using-a-proxy ) fournit des instructions claires et utiles sur l’utilisation d’un proxy. Pour Firefox (qui est le navigateur de choix dans votre exemple de code), vous devez procéder comme suit:

from Selenium import webdriver
from Selenium.webdriver.common.proxy import *

myProxy = "Host:8080"

proxy = Proxy({
    'proxyType': ProxyType.MANUAL,
    'httpProxy': myProxy,
    'ftpProxy': myProxy,
    'sslProxy': myProxy,
    'noProxy': '' # set this value as desired
    })

driver = webdriver.Firefox(proxy=proxy)
8
kntonas

Cela fera le travail:

import Selenium
from Selenium.webdriver.common.proxy import *

proxyHost = "my.proxy.Host or IP"
proxyPort = "55555"

fp = webdriver.FirefoxProfile()
fp.set_preference("network.proxy.type", 1)
#fp.set_preference("network.proxy.http", proxyHost) #HTTP PROXY
#fp.set_preference("network.proxy.http_port", int(proxyPort))
#fp.set_preference("network.proxy.ssl", proxyHost) #SSL  PROXY
#fp.set_preference("network.proxy.ssl_port", int(proxyPort))
fp.set_preference('network.proxy.socks', proxyHost) #SOCKS PROXY
fp.set_preference('network.proxy.socks_port', int(proxyPort))
fp.update_preferences()

driver = webdriver.Firefox(firefox_profile=fp)

driver.get("http://www.whatismyip.com/")
3
Pedro Lobito
def install_proxy(PROXY_Host,PROXY_PORT):
    fp = webdriver.FirefoxProfile()
    print PROXY_PORT
    print PROXY_Host
    fp.set_preference("network.proxy.type", 1)
    fp.set_preference("network.proxy.http",PROXY_Host)
    fp.set_preference("network.proxy.http_port",int(PROXY_PORT))
    fp.set_preference("network.proxy.https",PROXY_Host)
    fp.set_preference("network.proxy.https_port",int(PROXY_PORT))
    fp.set_preference("network.proxy.ssl",PROXY_Host)
    fp.set_preference("network.proxy.ssl_port",int(PROXY_PORT))  
    fp.set_preference("network.proxy.ftp",PROXY_Host)
    fp.set_preference("network.proxy.ftp_port",int(PROXY_PORT))   
    fp.set_preference("network.proxy.socks",PROXY_Host)
    fp.set_preference("network.proxy.socks_port",int(PROXY_PORT))   
    fp.set_preference("general.useragent.override","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A")
    fp.update_preferences()
    return webdriver.Firefox(firefox_profile=fp)
0
chowmean