python 2.7 - Cómo configurar la autenticación proxy(usuario y contraseña) usando Python+Selenium
python-2.7 firefox (3)
Estoy usando Firefox WebDriver en Python 2.7 con Selenium. Mi programa Python inicia el navegador Firefox y visita diferentes sitios web cuando ejecuto el programa. Pero, necesito configurar el proxy con autenticación, para que cuando el programa visite cualquier sitio web, lo haga a través del servidor proxy.
Hay algunas preguntas similares sobre SO. Pero, no hay una solución específica para Selenium Firefox WebDriver de Python.
Además de ejecutar Firefox con un perfil que tiene las credenciales guardadas.
Puede hacerlo cargando una extensión que escribe en
loginTextbox
y
password1Textbox
de
chrome://global/content/commonDialog.xul
(la ventana de alerta).
Ya hay algunas extensiones que harán el trabajo.
Por ejemplo:
Close Proxy Authentication
from selenium import webdriver
from base64 import b64encode
proxy = {''host'': HOST, ''port'': PORT, ''usr'': USER, ''pwd'': PASSWD}
fp = webdriver.FirefoxProfile()
fp.add_extension(''closeproxy.xpi'')
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'']))
# ... ssl, socks, ftp ...
fp.set_preference(''network.proxy.no_proxies_on'', ''localhost, 127.0.0.1'')
credentials = ''{usr}:{pwd}''.format(**proxy)
credentials = b64encode(credentials.encode(''ascii'')).decode(''utf-8'')
fp.set_preference(''extensions.closeproxyauth.authtoken'', credentials)
driver = webdriver.Firefox(fp)
Además de la respuesta con extensión.
También puede usar el llenado de formularios para cambiar dinámicamente las credenciales en su proxy. ¡Simplemente cargue la página de extensión, complete el formulario automáticamente y haga clic en guardar!
Hay un ejemplo para Firefox + Python pero sin la autenticación here . Entonces puede encontrar otros parámetros disponibles here en el código fuente. Parece que necesitas lo siguiente:
socksUsername
socksPassword
Por ejemplo:
from selenium import webdriver
from selenium.webdriver.common.proxy import *
myProxy = "host:8080"
proxy = Proxy({
''proxyType'': ProxyType.MANUAL,
''httpProxy'': myProxy, # set this value as desired
''ftpProxy'': myProxy, # set this value as desired
''sslProxy'': myProxy, # set this value as desired
''noProxy'': '''' # set this value as desired
''socksUsername'': = ''''
''socksPassword'': = ''''
})
driver = webdriver.Firefox(proxy=proxy)
o con preferencias:
driverPref = webdriver.FirefoxProfile()
driverPref.set_preference("network.proxy.type", 1)
.
.
.
driverPref.set_preference(''network.proxy.socks'', proxyHost)
driverPref.set_preference(''network.proxy.socks_port'', proxyPort)
driverPref.update_preferences()
driver = webdriver.Firefox(firefox_profile=driverPref)
EDITAR :
Lo volví a mirar y parece que es imposible establecer detalles de autenticación en FF, incluso manualmente. La única forma es recordar los detalles que ya ingresó y que se realizaron mediante 2 parámetros:
signon.autologin.proxy=true
network.websocket.enabled=false
que se puede configurar con el método
set_preference()
.
También puede ver manualmente todas las opciones de FF al navegar por
about:config
.