如何使用Selenium和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

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

DebanjanB

用户代理

用户代理 请求头是一个特性串,让服务器和网络对等体标识请求的应用程序,操作系统,供应商和/或版本的用户代理


句法

Web浏览器的常见格式如下:

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),如下所示:

  • 代码块:

    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
    

参考文献

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在mybatis generator中为mapper文件和接口设置自定义名称、后缀?

为使用Rails 4,nginx和passenger的用户设置自定义域

如何使用 Powershell 为组中的用户分配自定义应用程序设置策略?

如何使用ALASQL和XLSX设置自定义标头名称

上传器:如何将自定义文件夹名称设置为与用户ID相同?

如何在app.config中使用“用户设置”和“自定义配置”部分?

在Rails测试上设置自定义用户代理

如何设置Google Analytics(分析)可以读取的自定义用户代理

如何使用 TinyMCE 为自定义组件设置样式?

如何使用Selenium和Python更改用户代理

具有代理的自定义元素,获取和设置

Rails 4.2 / rspec 3.5 / Capybara Webkit-为某些测试设置自定义http用户代理时避免“泄漏”

在Dialogflow中,如何使用Webhook将参数设置为自定义值(不想询问用户)

源块:如何设置代理生成的自定义速率?

CMake 为目标设置自定义配置名称

使用绑定将我的自定义名称服务器设置为我的域

Azure Batch - 为任务设置自定义用户标识

在django 1.8中,如何在设置自定义用户模型时为post_migrate和post_syncdb信号接收者设置发送者?

如何使用Powershell System.Net.WebClient和自定义用户代理字符串保存“浏览器启动的下载”文件?

如何在Cloudfront之间将SSL设置为具有EC2自定义来源的反向代理缓存?

使用自定义JAAS登录模块启动JMX代理,将login()设置为始终返回true

如何在Worklight中的用户身份对象中设置和检索自定义属性?

为过期和锁定的用户创建自定义消息

使用 Jhipster 和 okta 为用户添加自定义字段

如何自定义设置angularjs jsonp回调名称?

如何在Helmchart中设置自定义发布名称

如何设置RabbitMQ连接的自定义名称?

如何在 DJANGO 的自定义 ADMIN 页面中将用户“id”和用户“profile”更新为超级用户

如何使用Django Rest框架和自定义用户模型创建新用户