【问题标题】:How to set a custom name for the user-agent using Selenium and Python如何使用 Selenium 和 Python 为用户代理设置自定义名称
【发布时间】:2020-06-21 16:44:14
【问题描述】:

我正在使用 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

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

【问题讨论】:

标签: python selenium selenium-webdriver webdriver user-agent


【解决方案1】:

用户代理

User-Agentrequest header 是一个特征字符串,可让服务器和网络对等方识别请求的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,因为它违反了规定的格式/语法。


但是,您始终可以使用 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
    

参考文献

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2020-02-15
    • 1970-01-01
    • 2011-06-27
    • 2016-11-13
    • 2011-08-13
    相关资源
    最近更新 更多