Geonode logo
Geonode Team

Geonode Team

更新于:2026年10月7日

发布于:2026年9月2日

如何在 Postman 中设置代理

Postman 有两个名为“代理”的功能,它们的作用截然相反。一个是将您的请求通过他人的代理发送出去;另一个则是将 Postman 转变为一个代理,供其他应用程序通过它发送请求。 搜索“Postman 代理”会同时显示这两个功能的文档,这正是导致情况比实际更令人困惑的原因。 本指南将分别介绍这两项功能,此外还涵盖了 HTTPS 捕获所需的证书配置步骤,以及设置错误时会导致请求失败的相关情况。

我们的立场:我们是 Geonode,主要销售代理服务,因此本文的前半部分将介绍如何在 Postman 中使用我们这类产品。 坦率地说,Postman 并不适合需要大量代理操作的工作——它对代理设置的适用范围是全局性的,而非按请求单独设置,因此无法轻松地让一个请求通过代理,而另一个请求直接发送。 它非常适合用于测试代理是否正常工作,以及通过代理探索 API;但对于需要按每次调用进行不同路由的工作负载而言,它并非合适的工具。请先用它来验证配置,然后将实际工作转移到能够提供按请求控制功能的客户端上。

您需要哪项功能?

先确定这一点,剩下的就简单了。

您希望 Postman 通过代理发送请求。 原因:企业代理是连接外部网络的唯一途径,或者您需要通过代理测试 API 以验证地理位置或访问权限。这就是接下来要介绍的 全局代理 配置。

您希望捕获来自其他应用程序的请求。 原因:查看移动应用或浏览器实际发送的内容,或调试第三方集成。这是 Postman 的 内置代理,稍后将详细介绍。Postman 充当中介,其他软件通过它进行通信。

这两者的配置位置不同,解决的问题也互不相关。

配置全局代理

Postman 的 文档 介绍了三种方法。

默认代理 会自动使用系统中已配置的代理。如果您的操作系统已设置代理,Postman 会自动采用该设置,您无需进行任何操作。

系统代理 会明确启用系统代理来处理请求,当您已配置系统代理但 Postman 似乎忽略了该设置时,请检查此选项。

自定义代理 允许您指定其他服务器。若要使用商业代理服务,请选择此选项,该设置位于“设置”中的“代理”选项卡下。

支持的协议比人们预期的要广泛。文档中列出了“HTTP、SOCKS5、SOCKS5H、SOCKS4 和 SOCKS4A 协议”,并明确指出了一项限制:“Postman 仅支持通过 SOCKS 代理发送 HTTP 和 HTTPS 请求。”

其中SOCKS5H这一项值得关注。h变体会将主机名发送给代理进行解析,而非在本地解析,这可以防止在流量经由其他地方传输时,DNS查询泄露到您自己的解析器。如果您专门使用SOCKS来更改您的显示位置,请选择SOCKS5H而非SOCKS5。

身份验证是一个独立的开关。对于需要凭据的代理,文档建议通过在“代理设置”选项卡中输入用户名和密码来“将凭据添加到 Postman 桌面应用”。请注意,此处指的是桌面应用——浏览器版本无法连接到本地网络上的代理。

**“绕过列表”**可让您排除某些主机:“输入以逗号分隔的主机列表。发送到这些主机的请求将不会使用自定义代理。”请在此处填写 localhost、127.0.0.1 以及任何内部主机名,否则发往您自身开发服务器的请求将被路由至代理,从而导致令人困惑的请求失败。

验证是否真正生效

这是大家常会跳过的一步,却能帮你节省一个小时。

向一个会报告其所见地址的服务发送请求:

GET https://api.ipify.org?format=json

先在禁用代理的情况下运行该请求,记下地址;然后启用代理并再次运行。 **如果地址没有变化,说明代理并未生效。**系统不会显示任何错误提示——请求会直接发送并成功。

代理无法生效的三个常见原因:

**绕过列表中包含你的目标服务。**检查是否有无意中将该服务纳入其中的条目。

您正在使用 Postman 的浏览器版本,该版本无法访问您本机上的代理。必须使用桌面版应用。

设置位于错误的选项卡中。“默认”、“系统”和“自定义”是独立的选项,若在选中“系统代理”选项时配置“自定义代理”,则不会产生任何效果。

对于基于地理位置的代理,仅检查地址是不够的。请通过结果进行验证——发送一个真正因地区而异的请求,并确认响应是否发生变化。如果查询服务显示正确的国家/地区,而您的 API 却返回了您所在地区的数据,则说明定位并未准确到达应有的目标。

导致请求失败的设置

Postman 中的两项设置会与代理的使用产生交互,从而引发令人困惑的错误。

SSL 证书验证。 如果您的代理拦截了 TLS 流量(企业代理通常会这样做),Postman 会拒绝该证书,因为该证书是由代理自身的证书颁发机构签发的,而非受信任的证书颁发机构签发的。 表现为每次 HTTPS 请求都会出现 TLS 错误。

正确的解决方法是在 Postman 的证书设置中添加您所在组织的 CA 证书。 一种看似诱人的解决方法是全局关闭 SSL 验证,但值得了解这样做会带来什么代价:Postman 中的每个请求都会接受任何证书,包括那些你非常希望知道是否有人在拦截你的 API 请求。如果你必须禁用它,请在充分了解后果的情况下进行,并在之后重新启用。

请求超时。 Postman 的默认请求超时时间相当宽裕,但代理——尤其是家庭代理——会为每次请求增加实际延迟。如果通过代理的请求超时,而直接请求却能正常工作,请先在设置中提高超时时间,再断定代理已损坏。

关于集合运行的补充说明:通过限额代理时,使用大型数据文件运行集合会按每行生成一个请求,而您需要为每个请求付费。事后看来这很明显,但在收到账单时却会让人感到意外。

Postman 的内置代理:捕获流量

另一项功能,而且确实非常实用。

文档 对此有明确说明:“Postman 桌面应用内置了一个代理,可以捕获 HTTP 和 HTTPS 流量。” 它会拦截来自客户端应用程序的请求,将其转发出去,捕获响应,还可以收集 Cookie。

默认端口为 5559。

要让其他设备连接到该代理,文档中列出了三个步骤: 查找计算机的本地 IP 地址,配置设备的无线设置以使用该 IP 地址和代理端口作为 HTTP 代理,以及——特别是对于 iOS 设备——进入“设置”→“Wi-Fi”→点击信息图标→“配置代理”→“手动”,然后输入服务器 IP 地址和端口。

这是解答“这款移动应用到底在发送什么”这一问题的最快途径,否则这个问题会出人意料地棘手。

HTTPS 需要证书。 文档明确指出,该代理“需要在客户端设备上安装 postman-proxy-ca.crt 证书才能捕获安全的 HTTPS 流量”,并且在主机计算机上,“安装该证书可使 Postman 代理捕获来自浏览器和其他客户端应用的安全 HTTPS 流量”。

在操作前请务必理解这意味着什么。您正在安装一个可以为任何域名签发证书的证书颁发机构(CA),而 Postman 随后会解密您的 TLS 流量以便向您展示。这就是整个机制——如果不终止加密,就无法检查加密流量。

有两点后果值得高度重视。操作完成后请立即移除该证书,尤其是在用于处理个人事务的手机上。此外,在证书安装期间,切勿捕获包含重要凭据的流量,因为这些凭据会被解密并显示出来。

使用环境来管理依赖代理的工作

由于 Postman 无法针对每个请求单独更改代理设置,因此实际的解决方法是调整其他所有设置——而它的环境功能非常适合用于此。

将目标基础 URL 放入环境变量中,而不是直接写在请求中。对于所有请求都使用 {{baseUrl}}

的集合,通过切换环境即可将其指向不同的主机,这就是无需修改任何内容即可比较不同地区行为的方式:

{{baseUrl}}/api/products?region={{region}}

为每个场景创建一个环境。 分别设置“直接”环境和“通过代理”环境,每个环境拥有独立的变量,这样你只需通过下拉菜单即可切换上下文。虽然仍需在“设置”中手动切换代理设置本身,但其他所有配置都会随环境自动调整。

将地址验证作为请求保存在集合中。 将 GET https://api.ipify.org?format=json

与真实请求一同保存,意味着只需一次点击即可验证代理,而无需打开新标签页。添加一个测试脚本,使其记录检测结果:

const ip = pm.response.json().ip;
pm.environment.set("observedIp", ip);
console.log("Exit address:", ip);

针对区域相关的内容进行断言,而非针对地址。 对于基于地理位置的任务,有用的验证是响应内容是否确实存在差异:

pm.test("Response is region-specific", function () {
    pm.expect(pm.response.json().currency).to.eql(pm.environment.get("expectedCurrency"));
});

这与代理操作中的其他情况遵循相同原则:IP 查询仅能告诉你查询服务方的判断,而只有目标服务自身的响应才能告诉你定位是否成功。

并且请勿将凭据保存在集合中。 代理凭据应存放在 Postman 的设置中,API 凭据应存放在标记为“秘密”的环境变量中——而非请求中,更不应出现在您打算导出或共享的集合中。除非变量被标记为“秘密”,否则导出的集合会随附其变量值,这很容易导致意外泄露令牌。

不同任务应选用哪种客户端

Postman 是一款功能明确的优秀工具,了解它的局限性有助于节省时间。

**适合使用 Postman 的场景:**交互式探索 API、检查代理是否正常工作、捕获设备流量,以及与同事共享请求集合。

适合使用 curl 的场景: 任何需要复现、脚本化或粘贴到工单中的操作。通过 ``-x`

实现单次请求的代理控制,详细输出可精确显示网络传输内容,且在任何机器上均可执行的命令:

curl -x http://user:pass@proxy.example.com:9000 https://api.ipify.org

`。Postman 可以从任何请求生成 curl 命令,这是从探索阶段过渡到可复现方案的最快途径。

在代码中使用合适的 HTTP 客户端用于: 处理实际高流量场景、按请求路由、重试逻辑或会话管理。Postman 的全局代理设置仅为整个应用程序提供一个统一值,因此对于需要按请求使用不同出口的工作负载,该设置完全无法满足需求。

**实用工作流:**在 Postman 中验证代理是否正常工作,将请求导出为 curl 命令以在 GUI 之外进行确认,然后在代码中实现并添加按请求控制的功能。每个步骤都比在错误的工具中调试前一个步骤更快。

故障排除

不使用代理时请求正常,使用代理时则失败。 首先检查凭据——407状态码表示代理拒绝了您的请求,这与目标服务器返回的401错误属于不同的故障类型。然后检查您的服务商是否使用了IP白名单,而您的当前IP地址未被列入其中。

整体速度很慢。 住宅代理会为每次请求增加真实的延迟,这是物理规律使然,而非故障。在断定系统出现故障之前,请先延长超时时间并进行测试。

每次 HTTPS 请求都出现 TLS 错误。 代理正在拦截 TLS 连接。请添加 CA 证书,而不是禁用验证。

**代理设置似乎被忽略了。**检查绕过列表,确认您正在使用桌面应用,并确认已启用正确的选项——“自定义”、“系统”和“默认”是相互独立的。

抓包显示无内容。 请确认设备处于同一网络中,端口匹配,且您的机器上没有防火墙正在阻挡 5559 端口的入站连接。

HTTPS 捕获显示连接但无内容。 客户端设备上未安装 CA 证书或未信任该证书。在某些平台上,安装证书和信任证书是两个独立的步骤。

**使用正确凭据时仍持续出现 407 错误。**检查密码中是否有需要编码的字符,并确认您的服务提供商是否要求提供凭据——许多提供商提供 IP 白名单替代方案,这会完全从配置中移除凭据,若您的 IP 地址稳定,建议采用此方案。

大家还常问

如何在 Postman 中设置代理?

在桌面应用中,打开“设置”,进入“代理”选项卡,然后选择“自定义代理”并输入主机名和端口号。Postman 还支持自动使用系统代理。如果代理需要凭据,请在同一选项卡中添加。

Postman 支持 SOCKS 代理吗?

支持——文档中列出了 HTTP、SOCKS5、SOCKS5H、SOCKS4 和 SOCKS4A。 需注意的是,仅 HTTP 和 HTTPS 请求可通过 SOCKS 代理发送。建议优先使用 SOCKS5H 而非 SOCKS5,因为 SOCKS5H 在代理端解析主机名,可避免泄露 DNS 查询。

为什么 Postman 忽略了我的代理设置?

通常有以下三种原因:目标主机与绕过列表中的条目匹配;您正在使用浏览器版本而非桌面应用;或者您配置了自定义代理,但当前选中的却是其他代理选项。请通过向会返回您IP地址的服务发送请求来验证。

如何使用 Postman 捕获请求?

使用内置代理(默认端口为 5559)。查找计算机的本地 IP 地址,将客户端设备配置为通过该端口使用该 IP 作为 HTTP 代理;若需捕获 HTTPS 请求,请在设备上安装 postman-proxy-ca.crt 证书。

为什么在 Postman 中使用代理时会出现 SSL 错误?

这是因为代理在拦截 TLS 连接并提交其自身的证书,而 Postman 不信任该证书。请在 Postman 的证书设置中添加您组织的 CA 证书。禁用 SSL 验证虽然可行,但会影响此后所有请求,这将带来显著的性能开销。

能否在 Postman 中为每个请求设置不同的代理?

不可以。代理设置是全局适用的,这也是 Postman 不适合处理需要为每个请求设置不同出口的工作负载的主要原因。请使用基于代码的客户端来处理此类需求,并在编写代码前使用 Postman 验证代理是否正常工作。

Postman 的代理设置与其“捕获代理”有何区别?

代理设置是将 Postman 自身的请求路由到外部代理。捕获代理则使 Postman 充当其他应用程序发送请求时经过的中转代理,以便您查看它们传输的内容。两者方向相反,配置也互不相关。

安装 Postman CA 证书安全吗?

这是一种有意的权衡。该证书允许 Postman 解密您的 HTTPS 流量,而这是检查流量的唯一途径——这也意味着任何拥有该证书的实体都可以为任何域名签发受信任的证书。在需要捕获流量时安装它,完成后将其移除,并在证书生效期间避免处理敏感凭据。

总结

这个话题中的混淆完全是命名问题。Postman 的代理设置会将您的请求通过他人的代理发送;而 Postman 的捕获代理则使 Postman 成为其他应用程序的中介。花十秒钟确定您需要哪一种,就能省去阅读错误文档的麻烦。

对于第一种情况,请使用桌面应用,在“设置”中配置自定义代理,将 localhost 加入绕过列表,并——这是关键一步——通过向会返回您 IP 地址的服务发送请求来验证,因为一个毫无作用的代理设置根本不会产生任何错误。

对于第二种方案,需使用 5559 端口并在客户端设备上安装 CA 证书。请注意,该证书的存在是为了让 Postman 能够解密您的流量,任务完成后请将其移除。

同时要清楚 Postman 的局限性。它对代理设置采用全局应用,因此完全无法实现按请求的路由。请利用它来确认代理是否正常工作,将请求导出为 curl 格式以便在 GUI 之外进行验证,然后在代码中构建真正的解决方案——这比试图让交互式工具完成脚本化任务要高效得多。