接入指南
Postman 代理设置(含 Newman)
Postman 把两种代理设置分开:一种是应用自己上网要用的代理,另一种是发送 API 请求时经过的代理。HOST 和 PORT 要填在第二种里。下面的界面名称依据 Postman 官方文档中的桌面版说明;命令行集合运行器 Newman 已经在本地代理上测试过。
开始之前
- Postman 桌面版。Postman 文档说明网页版无法配置默认代理,以下步骤针对桌面版。
- Newman 那一步需要带 npx 的 Node.js,npx 第一次运行时会下载 Newman。
- 服务页面上的 HOST、PORT、USERNAME 和 PASSWORD。
你的连接信息
登录控制台,打开你购买的服务。服务页面上会显示该服务的主机、端口、用户名和密码。ProxyPanda 没有一个统一的固定地址,所以每次都请从那里复制。指南中的代码使用下面这些占位符,请逐一替换成你自己的值。
- HOST
- 该服务的代理地址,按服务页面上显示的原样填写。
- PORT
- 要连接的端口。请和主机一起复制,因为不同服务的端口可能不同。
- USERNAME
- 你的代理登录名。它与你登录控制台所用的邮箱是分开的。
- PASSWORD
- 请完整复制。住宅代理在控制台中选择的选项会附加在密码末尾,凭记忆手动输入的密码会丢失这些选项。
把你用来连接的 IP 地址加入服务的白名单,就可以不用用户名和密码。这时代码里只需要 HOST 和 PORT。
示例都使用 HTTP,它可以通过加密隧道访问 https 网站。SOCKS5 同样可用:住宅代理的端口两种都接受,ISP 和数据中心代理在控制台里切换协议。
步骤
打开 Proxy 选项卡
点击顶栏的 Settings 图标,选择 Settings,再打开 Proxy 选项卡。你的代理填在 Proxy configurations for sending requests 下面。上方的 Default proxy configuration 是给你所在网络强制要求的代理用的。
开启自定义代理配置
打开 Use custom proxy configuration。Use proxy for 下保持 HTTP 和 HTTPS 都选中。Proxy server 选 HTTP,填入 HOST,前面不要加 http://,旁边填 PORT。打开 Proxy auth,填写 USERNAME 和 PASSWORD。
Settings › Proxy Use custom proxy configuration: On Use proxy for: HTTP, HTTPS Proxy server: HTTP HOST PORT Proxy auth: On Username: USERNAME Password: PASSWORD Proxy bypass: (leave empty)保持 Use system proxy 关闭
Postman 文档说明两个开关都打开时以自定义代理为准;把系统代理关掉,就不用猜请求到底走了哪一个。Proxy bypass 接受以逗号分隔的主机列表,列表里的主机不走代理,例如运行在 localhost 上的 API。
发送一个测试请求
新建一个指向 https://api.ipify.org?format=json 的 GET 请求并发送。响应里的 ip 字段就是网站看到的地址。关闭 Use custom proxy configuration 后再发一次,地址应该变回你自己的。
用 Newman 让集合经代理运行
Newman 不读取应用里的代理设置,它的文档列出的是 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 环境变量。从 Postman 把集合导出为 JSON 文件,设置变量后运行;--verbose 会打印每个响应的正文,ip 字段就会显示在终端里。这里密码写在 URL 中,其中的 @、: 或 / 需要做百分号编码。
terminal export HTTPS_PROXY="http://USERNAME:PASSWORD@HOST:PORT" npx newman run ip-check.postman_collection.json --verbose unset HTTPS_PROXY
轮换 IP 与粘性 IP
测试中,Newman 为每个请求都新开一条 CONNECT 隧道:用 -n 3 运行三轮,产生了三条隧道。住宅代理选“随机 IP”时,一次运行中的每个请求都可能来自不同的地址。
集合先登录、再调用要求同一客户端的接口时,请用“粘性 IP”,或者 ISP、数据中心 IP,让整次运行保持同一个地址。
桌面版如何复用连接,官方没有说明。依赖任何一种行为之前,先连续发送几次 ipify 请求,对比返回的地址。
常见错误与解决办法
请求仍然从你自己的地址发出
Postman 文档提到,操作系统里设置了 http_proxy、https_proxy、HTTP_PROXY 或 HTTPS_PROXY 时,应用会改用系统代理,忽略自己的代理设置。删除这些变量,或把它们指向你的代理,然后重启 Postman。
代理返回 407 Proxy Authentication Required
Proxy auth 没有打开,或者登录信息和服务页面不一致。打开 Proxy auth,重新粘贴 USERNAME 和 PASSWORD,注意前后不要带空格。
Newman: tunneling socket could not be established, cause=connect ECONNREFUSED
Newman 在 HOST:PORT 上没有找到在监听的程序。把变量和服务页面对照一遍,并确认服务仍然有效。
Newman 报错 Error: Unknown object type "asyncfunction" 后退出
测试中,代理用 407 拒绝错误密码时,Newman 6.2.2 就以这条信息崩溃。它看起来像是集合出了问题,实际要改的是登录信息:重新复制,并对变量里的特殊字符做百分号编码。
Postman 里有个设置讲的是抓取流量
Postman 另有一个内置代理,用来捕获其他应用发出的请求。那是独立的功能,与让你的请求经过 HOST 和 PORT 无关。
其他接入指南
有不明白的词? 术语表用大白话解释。
卡在某一步了?
把命令和报错贴到 Discord,记得先删掉密码。那里的人大多遇到过这些错误。