Saltar al contenido

Cambiar el agente de usuario para el controlador web de Selenium

Solución:

No hay forma en Selenium de leer los encabezados de solicitud o respuesta. Puede hacerlo indicando a su navegador que se conecte a través de un proxy que registre este tipo de información.

Configuración del agente de usuario en Firefox

La forma habitual de cambiar el agente de usuario para Firefox es establecer la variable "general.useragent.override" en su perfil de Firefox. Tenga en cuenta que esto es independiente del selenio.

Puede indicarle a Selenium que use un perfil diferente al predeterminado, como este:

from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", "whatever you want")
driver = webdriver.Firefox(profile)

Configuración del agente de usuario en Chrome

Con Chrome, lo que desea hacer es usar el user-agent opción de línea de comando. Nuevamente, esto no es una cosa de Selenium. Puede invocar Chrome en la línea de comando con chrome --user-agent=foo para configurar el agente al valor foo.

Con Selenium lo configura así:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
opts = Options()
opts.add_argument("user-agent=whatever you want")

driver = webdriver.Chrome(chrome_options=opts)

Ambos métodos anteriores fueron probados y se encontró que funcionan. No conozco otros navegadores.

Obtener el agente de usuario

Selenium no tiene métodos para consultar el agente de usuario desde una instancia de WebDriver. Incluso en el caso de Firefox, no puede descubrir el agente de usuario predeterminado comprobando qué general.useragent.override sería si no se establece en un valor personalizado. (Esta configuración no existe antes de que se establezca en algún valor).

Sin embargo, una vez que se inicia el navegador, puede obtener el agente de usuario ejecutando:

agent = driver.execute_script("return navigator.userAgent")

los agent La variable contendrá el agente de usuario.

Para aprovechar la útil respuesta de Louis …

Configuración del agente de usuario en PhantomJS

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
...
caps = DesiredCapabilities.PHANTOMJS
caps["phantomjs.page.settings.userAgent"] = "whatever you want"
driver = webdriver.PhantomJS(desired_capabilities=caps)

El único problema menor es que, a diferencia de Firefox y Chrome, esto no no devolver su configuración personalizada:

driver.execute_script("return navigator.userAgent")

Entonces, si alguien descubre cómo hacer eso en PhantomJS, edite mi respuesta o agregue un comentario a continuación. Salud.

Esta es una solución breve para cambiar la solicitud UserAgent sobre la marcha.

Cambiar UserAgent de una solicitud con Chrome

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

driver = webdriver.Chrome(driver_path)
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent":"python 2.7", "platform":"Windows"})
driver.get('http://amiunique.org')

luego devuelve tu useragent:

agent = driver.execute_script("return navigator.userAgent")

Algunas fuentes

El código fuente de webdriver.py de SeleniumHQ (https://github.com/SeleniumHQ/selenium/blob/11c25d75bd7ed22e6172d6a2a795a1d195fb0875/py/selenium/webdriver/chrome/webdriver.py) extiende sus funcionalidades a través del Protocolo Chrome Devtools

def execute_cdp_cmd(self, cmd, cmd_args):
        """
        Execute Chrome Devtools Protocol command and get returned result

Podemos usar Chrome Devtools Protocol Viewer para enumerar funcionalidades más extendidas (https://chromedevtools.github.io/devtools-protocol/tot/Network#method-setUserAgentOverride) así como el tipo de parámetros a usar.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *