1

问题描述
因业务需要,需要翻墙对国外某些接口进行调试。于是将 Postman 的 Proxy 设置为本机的 Socks 代理,发送请求时出错 :(

发生环境

  • Mac 10.14.6
  • Postman 8.10.0
  • 本机 Socks 代理:127.0.0.1:1080(运行正常)

问题重现

  1. 打开 Postman -> Settings -> Proxy
  2. 去掉勾选:Use the system proxy
  3. 勾选:Add a custom proxy configuration
  4. Proxy Type:勾选 HTTP、HTTPS
  5. Proxy Server:127.0.0.1:1080
  6. 发送请求,例如:GET 古割.com
  7. 得到错误:

    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

解决过程

  1. Socks 代理使用全局模式(未解决)
  2. 确保本机 Socks 代理的端口正确(端口正确)
  3. 升级 Postman 为最新版(未解决)
  4. 在 Windows 系统上测试,验证是否有该问题(Windows 正常,无该问题)
  5. 古割后,找到该方法:https://github.com/postmanlab...

问题总结
猜测:Postman 的 Proxy 默认应该是 Http 协议,并且无法修改,而我本机的代理为 Socks 协议,协议不匹配导致无法正常工作,所以将 Http 协议转为 Socks 协议,可解决该问题。

希望新版本的 Postman Proxy 早日支持 Socks 协议!


秦浩然
3 声望0 粉丝