常用的终端命令的代理指南
什么是网络代理?
顾名思义,网络代理就是指定网络的出口,让指定的流量走指定的代理服务器。
代理服务器分类?
常见的网络代理有:HTTP代理,socks代理,vpn代理,反向代理,ftp代理,pop3代理等等
我们挑选最常见的两种协议来说:
http协议
针对http协议和https协议的代理,用来代理http协议的访问
一些搭建http代理的软件:
- privoxy : https://www.privoxy.org/, 最新版本为3.0.26
- cow : https://github.com/cyfdecyf/cow
socks协议
socks代理:针对会话层的代理,是一个偏底层的协议,它只关注链接,不关注上面是什么应用
socks协议有socks4和socks5两个版本,区别在于socks4只支持TCP,而socks5同时支持TCP和UDP
- 协议介绍:https://juejin.im/entry/5999ad616fb9a0247321824a
- 基于GO的socks5代理实现:https://www.jianshu.com/p/172810a70fad
- 基于ssh的socks5代理:
ssh -NTfD 127.0.0.1:7070 test@11.22.33.44
参考ssh端口转发 - 大家最常用到的shadowsocks在本地监听的就是socks代理 127.0.0.1:1080
代理的用途
- 共享网络,适用于没有外网ip的机器
- 代理加速,通过专门的网络进行网络访问的加速
- 隐藏身份,防止攻击,隐藏了自己真实的ip地址,所以可以防止一定程度上的攻击
- 用户管理,用来做一些审计的功能
常用软件的代理设置
curl
curl命令同时支持http代理和socks代理
直接用命令参数的方式 curl --proxy 'http://10.10.10.10:8118' http://www.baidu.com
利用.curlrc
来设置,这样就不用每次都加上这个参数了
1 | cat ~/.curlrc |
wget
额外知识点:wget -c 参数可以启用断点续传的功能
-Y, –proxy=on/off 临时打开或关闭代理,不用每次修改rc文件了
wget 只支持http协议代理,不支持socks协议代理
直接用命令参数的方式 wget -e'http_proxy=http://10.10.10.10:8118' http://resoure.com/xxx.tgz
利用.wgetrc
来设置,这样就不用每次都加上这个参数了
1 | cat ~/.wgetrc |
可以看到是通过环境变量的方式传递进去的,所以可以通过bash的环境变量来加载
1 | cat ~/.bashrc |
brew
brew底层使用的是curl获取包,因此只需要设置.curlrc
就行了
yum
支持http代理,socks5代理没有测试
用centos的管理员肯定不陌生,但是有些包因为众所周知的原因下载不下来,需要挂代理。怎么设置呢?
1 | cat /etc/yum.conf |
git
支持http代理,socks5代理没有测试
通过命令来配置 git config –global http.proxy 'http://10.10.10.10:8118'
通过环境变量 export http_proxy=http://10.10.10.10:8118
当然也可以写到.bashrc
里面
go get
go get
命令底层用的git,所以只要跟git一样就行了