Python 中给请求设置用户代理 User-Agent的方法

 更新时间:2023年06月12日 15:11:31   作者:迹忆客  
本文介绍 HTTP 标头用户代理主题以及如何使用 Python 中的请求设置用户代理,您将了解 HTTP 标头及其在理解用户代理、获取用户代理以及学习使用 Python 中的请求设置用户代理的多种方法方面的重要性,感兴趣的朋友跟随小编一起看看吧

本文介绍 HTTP 标头用户代理主题以及如何使用 Python 中的请求设置用户代理。 您将了解 HTTP 标头及其在理解用户代理、获取用户代理以及学习使用 Python 中的请求设置用户代理的多种方法方面的重要性。

了解 HTTP 标头的工作原理

每个 HTTP 请求和响应都包含一系列称为 HTTP 标头字段的字符串,由客户端应用程序和服务器发送和接收。 HTTP 标头允许将额外信息传输到服务器并让服务器发回该信息。

使用标头可以实现诸如在使用 API 时对自己进行身份验证或传达有关应用程序期望的信息类型的请求之类的事情。

让我们看一些 HTTP 标头的示例:

1.Cache-Control:Cache-Control general-header 字段表示所有缓存系统必须遵循的指令。 HTTP 客户端或服务器可以使用 Cache-Control 通用标头来定义缓存参数或对特定类型的文档发出特定的缓存请求。

提供了以逗号分隔的缓存指令列表。 例如:

Cache-Control : cache-request-directive|cache-response-directive
# OR
Cache-control: no-cache

1.Date :无一例外,每个 HTTP 日期/时间戳都应始终以格林威治标准时间 (GMT) 表示。 HTTP 应用程序可以使用以下三种日期/时间戳表示形式中的任何一种:

Sat, 22 Sep 2022 20:22:37 GMT  ; RFC 822, updated by RFC 1123
Saturday, 22-Sep-22 20:23:37 GMT ; RFC 850, obsoleted by RFC 1036
Sat Sep 22 20:24:37 2022       ; ANSI C's asctime() format

1.User Agent :它返回诸如浏览器版本和发送请求的计算机的系统操作系统等信息。 这是本文将特别关注的标题,说明如何使用请求设置用户代理。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6LX83LDp-1686048711708)(/uploads/allimg/230602/1-230602103244360.png)]

这些标头的大小写无关紧要,因为这些标头不区分大小写,因此短语 User-Agent 也可以写为 user-agent。

让我们看一个如何从 URL 打印标头的示例。 该程序向目标 URL 发送请求,从中获取所有标头,然后打印它们。

import requests
url = 'http://www.tutorialspoint.com/python'
headers = requests.get(url).headers
print(headers)

代码的第一行导入 Python 库包 requests。 创建一个对象变量 url,它存储请求应发送到的网站的 URL。

在变量 headers 中,request.get() 函数用于从 url 中获取标头,然后保存在变量中。 最后,打印可变标题。

这会打印给定 URL 的整个标题字典。

输出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
{'Content-Encoding': 'gzip', 'Age': '1490828', 'Cache-Control': 'max-age=2592000', 'Content-Type': 'text/html; charset=UTF-8', 'Date': 'Sat, 24 Sep 2022 17:50:06 GMT', 'Expires': 'Mon, 24 Oct 2022 17:50:06 GMT', 'Last-Modified': 'Wed, 07 Sep 2022 11:42:58 GMT', 'Server': 'ECAcc (tir/CD76)', 'Strict-Transport-Security': 'max-age=63072000; includeSubdomains', 'Vary': 'Accept-Encoding', 'X-Cache': 'HIT', 'X-Content-Type-Options': 'nosniff', 'X-Frame-Options': 'SAMEORIGIN', 'X-Version': 'June-1 V2', 'X-XSS-Protection': '1; mode=block', 'Content-Length': '9299'}

Process finished with exit code 0

在 Python 中获取用户代理数据

我们已经了解了如何使用 Python 获取整个标题字典。 在学习如何使用请求设置用户代理之前,了解本节很重要。

本节说明一个重要的接合点,它专门在 URL 的所有标头中调用用户代理并显示它。

由于用户代理返回浏览器和系统操作系统的数据,这在很大程度上取决于使用什么方法访问网站。 例如,网站 http://httpbin.org/user-agent 在使用不同的浏览器访问时会返回特定的用户代理数据。

当使用 Firefox 访问此 URL 时,用户代理设置为:

使用 Google Chrome 时,用户代理会根据它更改:

但是,当执行使用请求函数的 Python 脚本来获取用户代理时,URL 会返回请求的版本。

在下面的程序中,requests 函数用于获取显示与浏览器不同的结果的用户代理数据:

import requests
r = requests.get('http://httpbin.org/user-agent')
data = r.json()
print(data['user-agent'])

该 URL 返回所使用的 Python 脚本的请求版本。

输出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
python-requests/2.28.1

Process finished with exit code 0

在 Python 中使用请求设置用户代理值

本节将解释如何在 Python 中使用请求添加自定义标头和设置用户代理。 本节介绍四种使用请求设置用户代理的不同方法。

在 Python 中为请求版本 2.12 设置用户代理请求

如果系统运行的python版本运行requests 2.12或更老的版本,那么应该遵循这个方法:

第一个程序展示了如何获取默认标头,然后专门更新它以使用请求设置用户代理。

导入请求库包并在对象变量中设置 URL。 在可变标头中,存储库包请求将使用的默认标头的副本。

将默认标头替换为预期的自定义标头。 因为请求的源代码对默认标头有一个独特的 CaseInsensitiveDict 实现,所以字典变得不区分大小写。

创建一个变量响应,它以获取请求的 URL 为目标并获取 URL 的响应状态。 如果 URL 处于活动状态并正在运行,它会返回代码 - 200,并打印出来。

因为为user-agent设置了自定义的header,所以必须将response里面的数据转换成JSON,这样才能专门访问像user-agent这样的header。

变量响应的 JSON 数据存储在变量数据中。 该程序从数据中搜索用户代理,并打印使用请求的新设置的用户代理。

import requests
url = 'http://httpbin.org/user-agent'
headers = requests.utils.default_headers()
headers.update(
    {
        'User-Agent': 'My User Agent 1.0',
    }
)
response = requests.get(url, headers=headers)
print(response)
data = response.json()
print(data['user-agent'])

输出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
<Response [200]>
My User Agent 1.0

Process finished with exit code 0

在 Python 中为请求版本 2.13 设置用户代理请求

较新版本的请求允许通过创建字典直接更新标头。 在此示例中,程序设置了两个标头 - user-agent 和 from。

两者都是得到更新的有效 HTTP 标头。

request.get() 的值保存在变量 response 内部,类似于上一个程序。 要检查 HTTP 标头用户代理是否正确更新,使用函数 default_user_agent(); 此函数从 URL 中获取默认的用户代理值。

在变量 previous-agent 中,使用 requests 函数保存默认的用户代理。 使用语法 previous_agent = requests.utils.default_user_agent(),打印该值。

我们发送的标头由函数 response.request.headers 访问,因此新更新的用户代理标头使用语法 updated_agent = response.request.headers['user-agent'] 保存在变量 updated_agent 中,然后 它被打印出来。

创建一个新变量 all_headers 来检查所有标头,包括更新的标头。 它再次使用 response.request.headers 函数来存储使用请求的标头。

import requests
url = 'https://httpbin.org/get'
headers = {
    'User-Agent': 'My User Agent 1.0',
    'From': 'youremail@domain.example'
}
response = requests.get(url, headers=headers)
print(response)
previous_agent = requests.utils.default_user_agent()
print("Default user-agent header = ", previous_agent)
updated_agent = response.request.headers['user-agent']
print("Updated user-agent header = ", updated_agent)
all_headers = response.request.headers
print(all_headers)

输出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
<Response [200]>
Default user-agent header =  python-requests/2.28.1
Updated user-agent header =  My User Agent 1.0
{'User-Agent': 'My User Agent 1.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'From': 'youremail@domain.example'}

Process finished with exit code 0

另一种使用请求设置用户代理的方法是像浏览器一样发送请求。 在下面的示例中,在标头变量中,用户代理字段使用浏览器类型的数据进行更新。

import requests
url = 'http://httpbin.org/user-agent'
headers = {'User-Agent': 'user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, '
                         'like Gecko) Chrome/105.0.0.0 Safari/537.36'}
response = requests.get(url.strip(), headers=headers, timeout=10)
previous_agent = requests.utils.default_user_agent()
print("Default user-agent header = ", previous_agent)
updated_agent = response.request.headers['user-agent']
print("Updated user-agent header = ", updated_agent)

输出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
Default user-agent header =  python-requests/2.28.1
Updated user-agent header =  user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

Process finished with exit code 0

另一种使用请求设置用户代理的简单方法是使用模块会话,这样就无需重复设置标头。

对象变量会话使用函数 requests.Session() 加载 URL 会话。 它类似于早期程序使用的 get 请求。

新的用户代理标头通过 session.headers.update() 函数更新。

然后,session.get() 函数从 URL 加载标头信息。 最后,打印 session.headers['user-agent']) 语法以使用请求获取设置的用户代理的更新信息。

import requests
session = requests.Session()
session.headers.update({'User-Agent': 'Custom user agent'})
session.get('https://httpbin.org/headers')
print(session.headers['user-agent'])

程序使用请求和会话设置用户代理后,它会打印会话中加载的更新标头。

输出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
Custom user agent

Process finished with exit code 0

这篇文章已经彻底解释了如何使用请求设置用户代理以及如何获取它们。 阅读完本文后,读者可以轻松地在 Python 中使用 requests 设置 user-agent。

到此这篇关于如何在 Python 中给请求设置用户代理 User-Agent的文章就介绍到这了,更多相关Python User-Agent用户代理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python爬虫之Selenium鼠标事件的实现

    Python爬虫之Selenium鼠标事件的实现

    这篇文章主要介绍了Python爬虫之Selenium鼠标事件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python处理xls文件openpyxl基础操作

    python处理xls文件openpyxl基础操作

    这篇文章主要为大家介绍了python处理xls文件openpyxl基础操作,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 如何利用Pytorch计算三角函数

    如何利用Pytorch计算三角函数

    这篇文章主要介绍了如何利用Pytorch计算三角函数,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Python datetime 如何处理时区信息

    Python datetime 如何处理时区信息

    这篇文章主要介绍了Python datetime 如何处理时区信息,帮助大家更好的用python 处理时间,感兴趣的朋友可以了解下。
    2020-09-09
  • 使用numpy和PIL进行简单的图像处理方法

    使用numpy和PIL进行简单的图像处理方法

    今天小编就为大家分享一篇使用numpy和PIL进行简单的图像处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python 类的私有属性和私有方法实例分析

    Python 类的私有属性和私有方法实例分析

    这篇文章主要介绍了Python 类的私有属性和私有方法,结合实例形式分析了Python面向对象程序设计中类的私有属性与私有方法简单操作技巧,需要的朋友可以参考下
    2019-09-09
  • python opencv调用笔记本摄像头

    python opencv调用笔记本摄像头

    这篇文章主要为大家详细介绍了python opencv调用笔记本摄像头,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • python如何实现全角半角的相互转换

    python如何实现全角半角的相互转换

    这篇文章主要介绍了python如何实现全角半角的相互转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Django Sitemap 站点地图的实现方法

    Django Sitemap 站点地图的实现方法

    这篇文章主要介绍了Django Sitemap 站点地图的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python安装Selenium报错解决之全方位排错指南

    Python安装Selenium报错解决之全方位排错指南

    pip是一个安装Python包的管理工具,很多功能强大、使用方便的Python框架、插件、工具等,都是通过pip来进行安装的,这篇文章主要给大家介绍了关于Python安装Selenium报错解决之全方位排错的相关资料,需要的朋友可以参考下
    2024-08-08

最新评论