我们在使用 curl 的时候,假如需要用到代理,则我们常常会这么写:
curl --socks5 xxx.xxx.xxx.xxx:xxxx http://example.com/
或者
curl -x "http_proxy://xxx.xxx.xxx.xxx:xxxx" http://example.com/
假如使用频繁嫌麻烦,我们可以在环境变量中设置代理,比如:
export HTTP_PROXY=xxx.xxx.xxx.xxx:xxxx
export HTTPS_PROXY=xxx.xxx.xxx.xxx:xxxx
export NO_PROXY=xxx.xxx.xxx.xxx,qq.com,baidu.com
然后只需简单的 curl http://example.com 即可默认走代理了。类似curl的有很多,大家好像不约而同的都认识 HTTP_PROXY,HTTPS_PROXY,NO_PROXY,ALL_PROXY这些环境变量,这个时候我就纳闷了,这些环境变量究竟出自什么协议使得大家都认识,为什么以前我都不知道?带着这样的问题,我去查了资料,看下面这个链接:
Are HTTP_PROXY, HTTPS_PROXY and NO_PROXY environment variables standard?,里面说得很清楚,原来是:
This is more a convention than a standard. “这更像是一种惯例而非标准。”
下面稍微解释一下这4个惯例的意思:
HTTP_PROXY: 不用解释了,看名字就明白了
HTTPS_PROXY: 不用解释了,看名字就明白了
ALL_PROXY: 假如上面2个是同一个,那么可以用这一个来定义就够了,但是惯例更多的是用上面2个
NO_PROXY: 可以是IP,可以是域名,多个以逗号分隔,比如:xxx.xxx.xxx.xxx,baidu.com,凡是这个列表中的都不进行代理