说下背景:*nix 系统有个 约定,在我们可以通过环境变量配置 http_proxy
, https_proxy
指定程序走代理服务器,用 no_proxy
指定不走代理的域名。
手上有一台躲在公司防火墙背后的 Linux 开发机,默认只能访问内网资源,访问外网资源需要走一个公共的 HTTP 代理,shell 层面默认已经配好了正确的 http_proxy
/ https_proxy
/ no_proxy
环境变量,大部分程序都可以正常走代理发请求。
但这里遇到问题,一些比如 node
, npm
等的程序,运行时不会按约定读取环境变量的代理配置,结果导致无法访问外网资源。
为了解决这个问题,我这里用了 proxychains 来强行指定程序走公共代理服务器发送请求访问。
比如说假设有一个不走代理的 curl 命令:
curl baidu.com
我在命令前缀加上proxychains4
,就可以强行让 curl 走代理。
proxychains4 curl baidu.com
对于只发送单一请求的程序(如 wget, curl)这样还是可以的,但遇到既要请求内网资源又要请求外网资源的程序,就没法切换了,目前看 proxychains 并未支持这种情况的配置。
有没有什么简单方便的办法,可以用类似 proxychains 的语法执行命令,但流量可以按照 http_proxy
/ https_proxy
/ no_proxy
的配置来确定是否走代理呢?