问题描述
因业务需要,需要翻墙对国外某些接口进行调试。于是将 Postman 的 Proxy 设置为本机的 Socks 代理,发送请求时出错 :(
发生环境
- Mac 10.14.6
- Postman 8.10.0
- 本机 Socks 代理:127.0.0.1:1080(运行正常)
问题重现
- 打开 Postman -> Settings -> Proxy
- 去掉勾选:Use the system proxy
- 勾选:Add a custom proxy configuration
- Proxy Type:勾选 HTTP、HTTPS
- Proxy Server:127.0.0.1:1080
- 发送请求,例如:GET 古割.com
得到错误:
Error: tunneling socket could not be established, cause=Parse Error: Expected HTTP/
Parse Error: The server returned a malformed response
解决办法
1. 安装 http-proxy-to-socks https://github.com/oyyd/http-...
npm install -g http-proxy-to-socks
2. 执行命令,运行程序,例如我的:
hpts -s 127.0.0.1:1080 -p 8888
3. 将 Postman Proxy 的 Proxy Server 改为:
127.0.0.1:8888
4. 再次发送请求,成功
GET 古割.com
Status: 200 OK
解决过程
- Socks 代理使用全局模式(未解决)
- 确保本机 Socks 代理的端口正确(端口正确)
- 升级 Postman 为最新版(未解决)
- 在 Windows 系统上测试,验证是否有该问题(Windows 正常,无该问题)
- 古割后,找到该方法:https://github.com/postmanlab...
问题总结
猜测:Postman 的 Proxy 默认应该是 Http 协议,并且无法修改,而我本机的代理为 Socks 协议,协议不匹配导致无法正常工作,所以将 Http 协议转为 Socks 协议,可解决该问题。
希望新版本的 Postman Proxy 早日支持 Socks 协议!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。