Как установить собственное имя для пользовательского агента с помощью Selenium и Python - PullRequest
1 голос
/ 21 июня 2020

Я использую selenium + webdriver и пытаюсь тестировать разные пользовательские агенты. Я добавляю такой пользовательский агент для Chrome на Windows, например:

option = Options()
option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36")

Теперь, когда я вхожу в систему, я вижу данные для входа, он говорит Windows Chrome, но когда я хочу переименовать его в примерно так:

option.add_argument("user-agent=test-user-agent")

или

option.add_argument("user-agent=Mozilla/5.0 (test-user-agent NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36")

Некоторые веб-сайты отображают это как unknown или browser not supported

Есть ли способ «переименовать» user-agent или создать собственный, или есть только предустановленное количество из них, которое знает веб-сайт?

1 Ответ

1 голос
/ 21 июня 2020

User-Agent

User-Agent заголовок запроса - это строка c, которая позволяет серверам и сетевым узлам идентифицировать приложение, операционную систему, поставщик и / или версия запрашивающего пользовательского агента .

Синтаксис

Общий формат для веб-браузеров выглядит следующим образом:

User-Agent: Mozilla/5.0 (<system-information>) <platform> (<platform-details>) <extensions>

Этот вариант использования

В то время как ваша первая попытка кода добавить конкретный c будет работать идеально:

  • Блок кода :

    from selenium import webdriver
    
    options = webdriver.ChromeOptions()
    options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36")
    driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    print(driver.execute_script("return navigator.userAgent;"))
    
  • Вывод в консоль:

    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
    

Но при второй попытке вы не можете переименовать пользователя -Агент , поскольку он нарушает предписанный формат / синтаксис.

Однако вы всегда можете изменить User-Agent с помощью execute_cdp_cmd(cmd, cmd_args) следующим образом:

  • Блок кода:

    from selenium import webdriver
    
    options = webdriver.ChromeOptions()
    options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36")
    driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    print(driver.execute_script("return navigator.userAgent;"))
    # Setting UserAgent as Chrome/83.0.4103.97
    driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'})
    print(driver.execute_script("return navigator.userAgent;"))
    
  • Вывод на консоль:

    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
    

Ссылки

Вы можете найти пару соответствующих подробных обсуждений в:

...