如何使用 Selenium 和 Python 为用户代理设置自定义名称

How to set a custom name for the user-agent using Selenium and Python

我正在使用 selenium + webdriver 并尝试测试不同的用户代理。我在 Windows 上为 Chrome 添加这样的用户代理,例如:

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")

有些网站显示为unknownbrowser not supported

有没有一种方法可以“重命名”用户代理或创建自定义用户代理,或者网站只知道预设数量的用户代理?

用户代理

User-Agent request header is a characteristic string that lets servers and network peers identify the application, operating system, vendor, and/or version of the requesting user agent.


语法

网络浏览器的常用格式如下:

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

这个用例

虽然您尝试添加特定 的第一个代码可以完美运行:

  • 代码块:

    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,因为它违反了规定的 format/syntax.


但是,您始终可以使用 execute_cdp_cmd(cmd, cmd_args) 更改 User-Agent,如下所示:

  • 代码块:

    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
    

参考资料

您可以在以下位置找到一些相关的详细讨论: