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?
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:
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)
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/")
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)