你对Python的请求用户代理支持了解多少?如果你对此知之甚少或一无所知,那么下面的文章就是为你而写。立即进入以学习如何在requests中设置和轮换用户代理。

每当客户端向服务器发送请求时,它必须通过告知Web服务器其名称来进行身份验证 – 有些还包括运行的操作系统甚至软件版本。这种识别方式被称为用户代理,并通过配置HTTP头中的用户代理标头来设置。无论客户端是浏览器、机器人还是由Web服务器自己创建的官方应用程序,都必须发送此标头。
所有流行的客户端都有自己使用的用户代理字符串。如果您是机器人开发者,您也需要知道这对您很重要。在编写机器人代码时,您必须设置此标头。如果不设置,则您的HTTP库将为您设置一个。
本文重点介绍Python requests用户代理,该用户代理以设定通用用户代理字符串而闻名,可以告诉目标网站它是一个机器人。如果你需要爬取网络上受欢迎的目标网站,你必须将其更改为其他内容,这就是本文撰写的原因 – 提供给你如何伪造Python Requests用户代理字符串并进行更改的指南。

使用Python Requests伪造用户代理-概述

Python Requests 是事实上的 HTTP 请求第三方库,因为它简单、易于使用、稳健且具有更好的错误处理能力。除此之外,它的功能之一是它允许您设置虚假的用户代理。使用此功能,您可以将自己标识为流行的网络浏览器,甚至是 Googlebot,以避免被阻止。但是,请求并不强制您设置用户代理标头。但如果您不这样做,它将为您提供默认的用户代理。以下是请求的默认用户代理标头。

Python-requests/x.y.z

如何在Python Requests中设置用户代理

在 Python Requests中设置用户代理所需的步骤很简单。您需要做的就是将其作为键值对添加到字典中,并将其传递给请求中的标头参数。让我引导您完成该方法,包括如何获取要使用的用户代理字符串。在本指南中,我将使用我的浏览器用户代理。

步骤 1:使用 Web 浏览器访问Httpbin 的用户代理字符串 API 页面。对于我来说,我得到了以下答复。

{

  "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Safari/605.1.15"

}

第 2 步:正如您在上面看到的,它以字典形式返回——典型的 API。但您可以看到用户代理字符串 — Mozilla/5.0(Macintosh;Intel Mac OS X 10_15_7)AppleWebKit/605.1.15(KHTML,如 Gecko)版本/14.1 Safari/605.1.15。这告诉 Web 服务器我正在使用带有 Safari 浏览器的 Mac 计算机。

第 3 步:接下来要做的就是使用下面的 pip 命令安装请求。

pip install requests

步骤4:然后导入请求,创建标头字典,将用户代理作为键值对传递,然后将标头作为字典传递。

import requests

headers ={

  "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Safari/605.1.15"

}

user_agent = requests.get(“https://httpbin.org/user-agent”, headers=headers).json()

print(user_agent)

正如您在上面看到的,我使用相同的 httpbin API 请求了我的用户代理,并获得了与我使用浏览器时获得的相同的值。有了这个,我可以成功地说我在 Python 请求中伪造了用户代理,使我看起来好像在使用浏览器,而实际上我正在使用 Python 请求。


如何在 Python Requests中旋转用户代理字符串

更改用户代理固然很好,但在进行网页抓取时,最好拥有一堆用户代理字符串并在其中随机轮换。在本节中,我将向您展示如何在 Python 请求中轮换用户代理字符串。

第 1 步:首先,您需要一堆用户代理字符串。转到 Device Atlas 上的用户代理库 ( https://deviceatlas.com/blog/list-of-user-agent-strings ) 并获取其中的一堆。在这个例子中我将只使用 3 个。

第 2 步:将您选择的内容复制到记事本中,因为稍后您将需要它们。

第 3 步:转到 IDE 并创建一个新的 Python 文件。

第 4 步:导入请求和随机模块

import requests

import random

步骤 5:加载您复制为列表变量的用户代理

user_agent_strings = [

            ‘Mozilla/5.0 (Linux; Android 13; SM-S908B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36’,

            ‘Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36’,

            ‘Mozilla/5.0 (iPhone12,1; U; CPU iPhone OS 13_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/15E148 Safari/602.1’,

]

第 6 步:使用随机函数仅选择一个并将其分配为标头变量中的用户代理

random_number = random.randint(0, len(user_agent_strings)-1)

headers = {User-Agent: user_agent_strings[random_number]}

步骤7:将标头添加为请求中的标头参数

user_agent = requests.get(“https://httpbin.org/user-agent”, headers=headers)

print(user_agent)

第8步:下面是完整代码

import requests

import random

user_agent_strings = [

            ‘Mozilla/5.0 (Linux; Android 13; SM-S908B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36’,

            ‘Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36’,

            ‘Mozilla/5.0 (iPhone12,1; U; CPU iPhone OS 13_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/15E148 Safari/602.1’,

]

random_number = random.randint(0, len(user_agent_strings)-1)

headers = {User-Agent: user_agent_strings[random_number]}

user_agent = requests.get(“https://httpbin.org/user-agent”, headers=headers)

print(user_agent)

关于 Python 请求用户代理的常见问题解答

1. 用户代理标头是我需要设置的唯一标头吗?

用户代理只是您可以设置的标头之一。在大多数网站上,只需设置用户代理就足够了。但有些网站会进一步检查您是否设置了其他标头,如果没有,就会变得可疑。您需要设置的其他一些用户代理包括accept, accept-encoding, and accept-language。您始终可以通过浏览器的开发人员工具检查这些值,以查看浏览器发送的标头。

2. 设置 HTTP 标头会阻止阻塞吗?

仅在 Python 请求中设置 HTTP 标头并不能帮助您防止阻塞。网站使用大量技术来检测和阻止机器人,而用户标题只是其中的一小部分。这是因为它们很容易被欺骗为喜欢的。为了真正防止阻止,您需要使用代理轮换 IP,并且如果您的目标使用验证码来保护其系统,则需要手头有一个验证码解算器。对于某些网站,您还需要使用自动化浏览器。

3. Python 请求适合抓取吗?

就 Python 中的抓取而言,Python 的 requests 是最好的工具之一。它是作为难以使用的 urllib 的包装器而构建的。它支持使用代理、错误处理和其他高级功能。然而,有些任务请求并不适合,因为它缺乏对 Javascript 执行的支持。如果您需要渲染并执行 Javascript 来访问数据,那么 Selenium 是 Python 开发人员的最佳选择。


结    论

从上面可以看出,使用Python的requests库设置和伪造用户代理头非常容易。虽然伪造用户代理对于隐藏客户端很有用,但你也需要知道,如果将其更改为目标发送独特页面设计的用户代理,可能会导致机器人失效。因此,在使用用户代理时,你应该了解所使用的用户代理,以避免代码失效。

这篇文章有用吗?

点击星号为它评分!

平均评分 / 5. 投票数:

到目前为止还没有投票!成为第一位评论此文章。

No more articles