¿Manera de cambiar el agente de usuario de Google Chrome en Selenium?

Resuelto theCrabNebula asked hace 6 años • 2 respuestas

Estoy tratando de encontrar una manera de que cada vez que abro Chrome a través de Selenium (en Python) en este script en particular, la página de Chrome se abra automáticamente con otro agente de usuario seleccionado; en este caso, Microsoft Edge Mobile (pero lo haré). accediendo a él desde el escritorio).

Entonces, después de investigar un poco, pude armar el siguiente código, que pensé que ejecutaría un cambio de agente de usuario en Chrome y luego abriría una nueva página de Bing.com:

from selenium import webdriver 
from selenium.webdriver.chrome.options

import Options opts = Options()
opts.add_argument("user-agent=Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166")
driver = webdriver.Chrome(chrome_options=opts)
driver = webdriver.Chrome("D:\_")
driver.get("https://www.bing.com/")

Sin embargo, el código no parece funcionar y se detiene antes de abrir la página web designada. Estoy bastante seguro de que la primera mitad del código no funciona, pero no estoy muy seguro de cómo. Cualquier ayuda sería profundamente apreciada.

theCrabNebula avatar Mar 30 '18 04:03 theCrabNebula
Aceptado

Una forma sencilla de utilizar un agente de usuario aleatorio sería utilizar fake_useragentel módulo de Python de la siguiente manera:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from fake_useragent import UserAgent

options = Options()
ua = UserAgent()
user_agent = ua.random
print(user_agent)

options.add_argument(f'--user-agent={user_agent}')
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\ChromeDriver\chromedriver_win32\chromedriver.exe')
driver.get("https://www.google.co.in")
driver.quit()

El resultado de 3 ejecuciones consecutivas es el siguiente:

  1. Primera ejecución:

    Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36
    
  2. Segunda ejecución:

    Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36
    
  3. Tercera ejecución:

    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17
    
undetected Selenium avatar Mar 29 '2018 21:03 undetected Selenium

Deberías usar ChromeOptions de selenium.webdriver:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--user-agent="Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166"')
driver = webdriver.Chrome(chrome_options=chrome_options)

Esto debería funcionar.

Tim Woocker avatar Mar 29 '2018 21:03 Tim Woocker