1
Aaron7Amelia 2023-04-19 18:46:21 +08:00 1
"系统代理" 类似一个规约。比如某个程序支持“系统代理”,那么程序在运行的时候,会判断当前系统环境变量里有没有 "http_proxy"、"https_porxy" 这种环境变量,如果有的话,那么程序就会使用这个代理。因为“系统代理”并不是一种强制规范,所以有些程序不会去处理这些环境变量
然后回到你说的你自己写命令行进程,想让 tcp 连接走系统代理。我没有 tcp 连接这种代码经验。但是比如,你在 shell 脚本中写了一个 curl 命令行,我想让 curl 走代理,就很简单。因为 curl 这个程序它认”系统代理“,所以只要 curl 程序运行时,系统环境变量中有 "http_proxy" 这类环境变量即可。所以你的程序要走系统代理,就要让它识别关于代理的系统环境 |
2
Aaron7Amelia 2023-04-19 18:59:25 +08:00
@Aaron7Amelia #1 然后我看问题是说通过 Macos 进行设置系统代理。这种方式和我说的用 http_proxy 不太一样。但我个人理解,远离是一样的。通过 Macos 进行设置系统代理,相当于把一些代理信息写到网络的配置文件中,同样会有我上面说的那些问题。就看程序支不支持。
我个人建议还是通过在 shell 终端中 export htt_proxy 这类系统环境变量来实现代理,可能会比较好掌控下范围 |
3
cohen121 OP @Aaron7Amelia 感觉老哥解答。根据你的思路又搜索了一番,系统代理确实是一种约束(或配置),类似于 http_proxy/https_proxy 程序需要在编写时去读取配置(或者使用的网络库已经支持读取这些配置),那么编写后的程序就会支持这些代理,这也解释了为什么有些程序支持系统代理 /http_proxy ,而另一部分不支持。
|