在这篇关于 Postman 用户代理的文章中,您将学习:
- 为什么您应该设置 User-Agent 头
- Postman 默认的用户代理是什么样的
- 如何在 Postman 请求中更改用户代理
- 如何在 Postman 中实现用户代理轮换
让我们开始吧!
为什么设置自定义用户代理如此重要
User-Agent
头用于标识向服务器发出 HTTP 请求的客户端。它通常包含有关客户端机器和/或发出请求的应用程序的详细信息。通常,这个头由网络浏览器、HTTP 客户端或任何执行网络请求的软件设置。
下面是 Chrome 在请求网页时设置的 User-Agent
字符串的示例:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
浏览器的 User-Agent
头包括多个组件:
Mozilla/5.0
:最初用于表示与 Mozilla 浏览器的兼容性,现在包含此前缀以实现更广泛的兼容性。Macintosh; Intel Mac OS X 10_15_7
:指定操作系统(Mac OS X 10_15_7
)和平台(Intel Mac)。AppleWebKit/537.36
:指的是 Chrome 使用的渲染引擎。- (
KHTML, like Gecko
):表示与 KHTML 和 Gecko 布局引擎的兼容性。 Chrome/127.0.0.0
:表示浏览器名称和版本。Safari/537.36
:表明与 Safari 的兼容性。
服务器通常读取 User-Agent
头,以确定他们接收到的请求是来自浏览器还是其他软件。
网络爬虫机器人常犯的一个错误是使用默认的或非浏览器的 User-Agent
字符串。这会导致被反机器人保护技术拦截,因为它们可以识别请求来自机器人。有关更多信息,请参阅我们的 网络爬虫的用户代理 指南。
Postman 的默认用户代理是什么?
Postman 是全球数百万用户使用的最流行的桌面 HTTP 客户端之一。与大多数其他 HTTP 客户端一样,它会在每个请求上自动设置一个默认的 User-Agent 头。具体来说,您可以通过检查自动生成的 Postman 头来观察此行为:
如您所见,Postman 默认的用户代理遵循以下格式:
PostmanRuntime/x.y.z
“PostmanRuntime” 标识了 Postman 应用程序,而“x.y.z”是当前的版本号。
要验证上述字符串确实是默认的 Postman 用户代理,可以对 httpbin.io/user-agent
端点执行一个 GET 请求。该 API 端点返回传入请求的 User-Agent
头,帮助您识别任何 HTTP 客户端使用的用户代理。
请注意,API 返回的用户代理与 Postman 默认设置的用户代理相匹配。具体来说,Postman 的用户代理是:
PostmanRuntime/7.41.0
正如您所见,Postman 使用的用户代理字符串与 Chrome 等浏览器设置的用户代理字符串大不相同。当服务器接收到带有此类头的请求时,反机器人系统很可能会阻止它们。
这是因为这些解决方案会监控传入的请求,寻找指示机器人活动的模式,例如异常的用户代理。这就是为什么在 Postman 中修改默认用户代理如此重要!
如何更改 Postman 用户代理
现在是时候看看如何在 Postman 中设置自定义用户代理了。
在单个请求上设置用户代理
Postman 允许您通过手动指定 User-Agent
头来更改单个 HTTP 请求的用户代理。
注意:Postman 自动生成的头不能直接修改。
进入“Headers”选项卡,添加一个新的 User-Agent
头:
Postman 将使用您 User-Agent
头的值覆盖自动生成的默认用户代理。请记住,HTTP 头是大小写不敏感的,因此您也可以将您的头称为 user-agent
或其他任何大小写。
通过对 httpbin.io/user-agent
端点执行 GET 请求来检查该方法是否有效:
太棒了!API 返回的用户代理与自定义的 User-Agent 头匹配。
在整个集合上设置用户代理
Postman 集合是一组 API 请求,通常共享共同的特征,例如目标服务器或范围。特别是,集合中的端点可能具有类似的配置。因此,Postman 支持定义在集合中每个请求之前或之后执行的自定义脚本。
让我们看看如何使用此机制为 Postman 集合中的所有请求设置自定义用户代理!
要创建和处理 Postman 集合,您必须先登录您的账户。如果您还没有这样做,创建一个 Postman 账户。
现在,假设您有一个名为“HTTPBin”的集合,其中包含按文件夹组织的 HTTPBin 端点:
执行 /user-agent
端点的请求,您将获得默认的 Postman 用户代理:
是时候通过定义一个设置自定义 User-Agent
头的预请求脚本来更改它了。预请求脚本是 Postman 在运行集合中的请求之前执行的 JavaScript 脚本。
按照以下说明创建用于设置用户代理的预请求脚本。
双击您的集合,进入“Scripts”选项卡,选择“Pre-request”选项:
在编辑器中,粘贴以下代码:
pm.request.headers.add({
key: "User-Agent",
value: "<your-user-agent>"
});
将 <your-user-agent>
字符串替换为您要使用的用户代理的值,如下所示:
pm.request.headers.add({
key: "User-Agent",
value: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
});
pm.request.headers.add()
是 Postman API 中用于向请求添加特定头的特殊函数。
点击“Save”按钮应用更改。
再次执行 /user-agent
端点的请求:
这次,返回的用户代理将是脚本中设置的,而不是默认的 Postman 用户代理。任务完成!
取消设置用户代理
User-Agent
自动生成的头是可选的,您实际上可以取消选中它。取消选中后,Postman 将不再发送 User-Agent
头。
通过向 httpbin.io/headers
端点发送请求来验证,这个端点返回传入请求的所有头:
请注意,端点返回的 headers 对象不包括 User-Agent
键。
注意:不建议取消设置 User-Agent
头,因为几乎所有的网络请求通常都包括该头。
在 Postman 中实现用户代理轮换
仅仅用浏览器的 User-Agent
头替换默认的 Postman User-Agent
头可能不足以绕过反机器人系统。特别是当您从同一 IP 地址发送大量具有相同头的请求时,这种情况尤其如此。
为了降低在 Postman 中被检测为机器人的风险,您必须使您的请求有所不同。一种实用的方法是对每个请求使用不同的 User-Agent
,这称为用户代理轮换。这种方法降低了您的请求被标记为自动化的可能性。
在这个分步部分中,您将学习如何在 Postman 中实现用户代理轮换!
步骤 1:获取用户代理列表
访问 WhatIsMyBrowser.com 等网站,填充一个有效的用户代理列表:
const userAgents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",
"Mozilla/5.0 (Linux; Android 10; HD1913) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.103 Mobile Safari/537.36 EdgA/127.0.2651.82",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 17_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/127.0.6533.107 Mobile/15E148 Safari/604.1",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 14.6; rv:129.0) Gecko/20100101 Firefox/129.0",
// other user agents...
];
提示:该数组包含的真实用户代理越多,轮换的机会就越大。
步骤 2:随机选择一个用户代理
使用 JavaScript 的 Math
API 从列表中随机选择一个用户代理:
const userAgent = serAgents[Math.floor(Math.random() * userAgents.length)];
这行代码的作用如下:
Math.random()
生成一个 0 到 1 之间的随机数。- 生成的数字然后乘以
userAgents
数组的长度。 Math.floor()
将结果向下取整为小于或等于源数的最大整数。结果数对应于从 0 到userAgents.length - 1
的索引。- 该索引用于从用户代理数组中访问一个随机项。
- 随机选择的用户代理被分配给一个变量。
步骤 3:定义 User-Agent 头
使用 pm.request.headers.add()
来定义一个带有随机 userAgent
值的 User-Agent
头:
pm.request.headers.add({
key: "User-Agent",
value: userAgent
});
集合的 HTTP 请求现在将具有一个轮换的 User-Agent
头。
步骤 4:整合所有代码
以下是用于用户代理轮换的最终 Postman 预请求脚本:
// a list of valid user agents
const userAgents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",
"Mozilla/5.0 (Linux; Android 10; HD1913) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.103 Mobile Safari/537.36 EdgA/127.0.2651.82",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 17_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/127.0.6533.107 Mobile/15E148 Safari/604.1",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 14.6; rv:129.0) Gecko/20100101 Firefox/129.0",
// other user agents...
];
// randomly extract a user agent from the list
const userAgent = userAgents[Math.floor(Math.random() * userAgents.length)];
// set the random user agent header
pm.request.headers.add({
key: "User-Agent",
value: userAgent
});
将其添加到您的集合中,并通过针对 httpbin.io/user-agent
端点来验证其是否工作。执行几次请求,您将看到用户代理在轮换:
太好了,返回的用户代理不断变化。
就是这样!您现在知道如何实现 Postman 用户代理轮换逻辑了。
进一步阅读
更改默认的用户代理并非 Postman 所独有,而适用于所有 HTTP 客户端和浏览器自动化工具。请查看我们的指南:
- cURL 用户代理指南:设置和更改
- Wget 用户代理指南:设置和更改
- Python Requests 用户代理指南:设置和更改
- Selenium 用户代理指南:设置和更改
- Node.js 用户代理指南:设置和更改
结论
在本文中,您了解了为什么要设置 User-Agent
头,并检查了默认的 Postman 用户代理是什么样的。您学习了如何覆盖该值并实现用户代理轮换以躲避基本的反机器人机制。然而,更高级的系统仍然能够阻止您的请求。为了防止 IP 被封禁,您可以在 Postman 中使用代理,但即使这样也可能不够!
为了获得更完整的解决方案,试试网络抓取API——一种您可以从 Postman 或任何其他 HTTP 客户端调用的新一代爬取 API。它通过内置的 IP 和用户代理轮换等功能,有效绕过反爬取和反机器人措施。网络爬取从未如此简单!
立即注册,开始您的免费试用。