什么是网络代理?

顾名思义,网络代理就是指定网络的出口,让指定的流量走指定的代理服务器。

代理服务器分类?

常见的网络代理有:HTTP代理socks代理,vpn代理,反向代理,ftp代理,pop3代理等等

我们挑选最常见的两种协议来说:

http协议

针对http协议和https协议的代理,用来代理http协议的访问

一些搭建http代理的软件:

socks协议

socks代理:针对会话层的代理,是一个偏底层的协议,它只关注链接,不关注上面是什么应用
socks协议有socks4和socks5两个版本,区别在于socks4只支持TCP,而socks5同时支持TCP和UDP

代理的用途

  1. 共享网络,适用于没有外网ip的机器
  2. 代理加速,通过专门的网络进行网络访问的加速
  3. 隐藏身份,防止攻击,隐藏了自己真实的ip地址,所以可以防止一定程度上的攻击
  4. 用户管理,用来做一些审计的功能

常用软件的代理设置

curl

curl命令同时支持http代理和socks代理

直接用命令参数的方式 curl --proxy 'http://10.10.10.10:8118' http://www.baidu.com

利用.curlrc来设置,这样就不用每次都加上这个参数了

1
2
$ cat ~/.curlrc
socks5 = '10.10.10.10:1080'

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
2
3
4
$ cat ~/.wgetrc
http_proxy = http://10.10.10.10:8118
https_proxy = http://10.10.10.10:8118
use_proxy = on/off # 启用或者不启用代理

可以看到是通过环境变量的方式传递进去的,所以可以通过bash的环境变量来加载

1
2
3
4
5
6
7
$ cat ~/.bashrc
# 不需要认证的情况
export http_proxy=http://10.10.10.10:8118
export https_proxy=http://10.10.10.10:8118

# 需要认证的情况
export http_proxy=http://username:password@http://10.10.10.10:8118

brew

brew底层使用的是curl获取包,因此只需要设置.curlrc就行了

yum

支持http代理,socks5代理没有测试

用centos的管理员肯定不陌生,但是有些包因为众所周知的原因下载不下来,需要挂代理。怎么设置呢?

1
2
3
4
5
6
$ cat /etc/yum.conf
# 在该文件中新加下面的配置项
proxy=http://10.10.10.10:8118
# 代理需要用户名密码,就按照如下设置
proxy_username=test
proxy_password=test

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一样就行了