Способ изменить пользовательский агент Google Chrome в Selenium?

Я пытаюсь найти способ, с помощью которого всякий раз, когда я открываю Chrome через Selenium (в Python) в этом конкретном сценарии, автоматически открывается страница Chrome с другим выбранным пользовательским агентом - в данном случае Microsoft Edge Mobile (но я буду доступ к нему с рабочего стола).

Итак, после некоторого исследования я смог собрать следующий код, который, как я думал, запустит переключение пользовательского агента в Chrome, а затем откроет новую страницу Bing.com:

из селена импорт вебдрайвер

от selenium.webdriver.chrome.options

Параметры импорта opts = Параметры ()

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, как 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/")

Однако код не работает и останавливается перед открытием указанной веб-страницы. Я вполне уверен, что первая половина кода отключена, но я не совсем уверен, как. Любая помощь будет высоко ценится.

2 ответа

Решение

Простой способ использовать произвольный пользовательский агент - использовать Python fake_useragent модуль следующим образом:

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

options = Options()
ua = UserAgent()
userAgent = ua.random
print(userAgent)
options.add_argument(f'user-agent={userAgent}')
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()

Результат 3 последовательного выполнения выглядит следующим образом:

  1. Первое исполнение:

    Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36
    
  2. Второе исполнение:

    Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36
    
  3. Третье исполнение:

    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
    

Вы должны использовать ChromeOptions из 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)

Это должно работать.

Другие вопросы по тегам