Python Selenium WebDriver 如何设置请求头用户代理(User-Agent)参数

news/2025/1/16 1:53:24/

在本文中,将演示如何为浏览器设置用户代理,以及如何在Python Selenium WebDriver中读取用户代理。测试中的许多方案都需要操作用户代理。

什么是用户代理?

User-Agent 请求标头包含一个特征字符串,该字符串允许网络协议对等方标识请求软件用户代理的应用程序类型、操作系统、软件供应商或软件版本。它显示在 HTTP 请求标头中,不适用于响应标头。所有浏览器都支持它。

简而言之,用户代理是客户端(用户)的身份。

用户代理的通过格式:

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

Example:

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:63.0) Gecko/20100101 Firefox/63.0

Selenium 没有实现任何直接方法来读取请求或响应标头。

注意:要运行以下示例,您需要在 PATH 环境变量中设置浏览器驱动程序路径详细信息,或者在创建浏览器实例时必须将浏览器驱动程序路径传递给executable_path变量。

获取用户代理值

Selenium没有任何直接的方法可以从WebDriver实例查询用户代理。我们需要使用执行javascript内置方法来执行此操作,并传递返回user-agent的脚本。

浏览器启动后,我们可以通过执行以下代码行来获取用户代理

# Store it in a variable and print the value
agent = driver.execute_script("return navigator.userAgent")
print(agent)
# directly print the value
print(driver.execute_script("return navigator.userAgent"))

Firefox 中的用户代理设置:

要更改 Firefox 浏览器的用户代理,请在 Firefox 配置文件中设置变量“general.useragent.override”,并在创建 Firefox WebDriver 实例时使用此配置文件。

from selenium import webdriverprofile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", "[user-agent string]")
# Below is tested line
# profile.set_preference("general.useragent.override", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:63.0) Gecko/20100101 Firefox/63.0")driver = webdriver.Firefox(profile)

Chrome 中的用户代理设置:

在 Chrome 中,必须使用Options 对象来设置用户代理值。

from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsopts = Options()
opts.add_argument("user-agent=[user-agent string]")
# Below is tested line
# opts.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36")driver = webdriver.Chrome(chrome_options=opts)

Alternative way to pass driver path along with other details:
可选地,在传递驱动路径时,同时传递其它数据,如下

driver = webdriver.Firefox(profile, executable_path="path to geckodriver")
driver = webdriver.Chrome(chrome_options=opts, executable_path="path to chromedriver")

注:没有编写用户代理字符串的标准方式; 不同的Web浏览器使用不同的格式(有些格式大不相同),并且许多Web浏览器在其用户代理数据中添加了大量信息。


http://www.ppmy.cn/news/282645.html

相关文章

数据结构与算法·第7章【图】

图 大部分定义都在离散数学II中学过了&#xff0c;所以对于已知或常见的我不多赘述 弧或边带权的图分别称作有向网或无向网。若边或弧的个数 e<nlogn&#xff0c;则称作稀疏图&#xff0c;否则称作稠密图。对有向图&#xff0c;若任意两个顶点之间都存在一条有向路径&…

再一次安装anygrasp

1&#xff0c;anaconda 2&#xff0c;新建py3.6.2的环境 因为anygrasp 要求 pytorch 1.6 太老了&#xff0c;而且对应的cuda 都是cuda 11以下的版本 我是笔记本带3060&#xff0c;只能cuda11以上。 为了解决这个问题&#xff0c;感谢史驭舒大佬提供的思路 他复现用的环境是…

2023年5月青少年机器人技术等级考试理论综合试卷(三级)

青少年机器人技术等级考试理论综合试卷&#xff08;三级&#xff09;2023.06 分数&#xff1a; 100 题数&#xff1a; 30 一、 单选题(共 20 题&#xff0c; 共 80 分) 1.如图所示电路&#xff0c; 下列说法正确的是&#xff1f; &#xff08; &#xff09; A.电路中电阻 R3 和…

Mysql数据库入门基础篇--sql语句简单使用

Mysql数据库入门基础篇--sql语句简单使用 &#x1f53b;一、数据库创建、删除、选择1.1 &#x1f343; create database 创建数据库1.2 &#x1f343; 使用 mysqladmin 创建数据库1.3 &#x1f343; drop 命令删除数据库--一般不建议在数据库执行delete、drop等命令1.4 &#x…

二分查找法搜寻元素 Leetcode35, Leetcode69

二分查找法 ( Binary Search ) 常用于在 有序数组 中 按值查找 某个元素&#xff0c;返回其索引。二分查找可以极大提高搜索效率&#xff0c;其时间复杂度是 O(log N) &#xff08;N 为数组长度&#xff09;。我最近在 Leetcode 做了一些二分查找的题目&#xff0c;花了一些时间…

联合索引详解

联合索引详解 前言 在数据库中&#xff0c;索引是一种重要的数据结构&#xff0c;用于提高查询效率。而联合索引是一种特殊的索引类型&#xff0c;它可以同时索引多个列。联合索引在实际应用中非常常见&#xff0c;但是很多人对它的理解还不够深入。本文将从联合索引的定义、…

深入理解深度学习——注意力机制(Attention Mechanism):注意力汇聚与Nadaraya-Watson 核回归

分类目录&#xff1a;《深入理解深度学习》总目录 《深入理解深度学习——注意力机制&#xff08;Attention Mechanism&#xff09;&#xff1a;基础知识》介绍了框架下的注意力机制的主要成分&#xff1a; 查询&#xff08;自主提示&#xff09;和键&#xff08;非自主提示&am…

机器学习 | 支持向量机SVM | 概念了解向

概念了解向&#xff0c;参考视频&#xff1a; 【小萌五分钟】机器学习 | 支持向量机 SVM &#x1f4da;最大间隔分类器 如下图有两种不同颜色的点。我需要一个分类器告诉我&#xff0c;假设在下图中新加入一个点&#xff0c;应该将它分类至红点还是蓝点。考虑加入一条决策边界…