python-2.7 firefox selenium-webdriver proxy-authentication

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

https://addons.mozilla.org/firefox/downloads/latest/close-proxy-authentication/addon-427702-latest.xpi

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 .