linux环境下的各种FQ代理

在使用linux的过程中,免不了要访问外面的网站,虽说很多时候可以配置国内源来解决, 但始终不是好的方案,国内源更新不一定及时、不一定稳定、有被劫持的风险。
我整理了几种常见场景下使用代理从官方地址拉取资源的方法,以供参考。

前提

本地运行了一个shadowsocket或者v2ray之类的客户端,能连上外面的服务器,在本地某个端口有一个socket5代理,本机通过该socket5代理能访问国际互联网。

搭建http代理

privoxy可以将socket5代理转换为http代理, 使用apt或者yum可直接安装。编辑配置文件/etc/privoxy/config,查找 8118 关键字,看有没有以下一行:

1
listen-address  0.0.0.0:8118

privoxy默认会在该端口运行一个http代理,如果没有这一行请添加上。

查找 forward-socks5t, 会发现有这么一行注释:

1
#   forward-socks5t   /               127.0.0.1:9050 .

删除前面的#号取消注释该行,并修改9050端口为socket5代理端口,比如我的socket5端口是1080:

1
forward-socks5t   /               127.0.0.1:1080 .

运行/重启privoxy:

1
sudo systemctl restart privoxy

这样,你的8118端口就有了一个可访问外网的http代理

终端

有了http代理,在终端使用就很简单了,只需在需要的时候设置http_proxy和https_proxy环境变量:

1
2
export http_proxy="127.0.0.1:8118"
export https_proxy="127.0.0.1:8118"

设置了之后当我们在使用curl、wget、pip、git clone http/https、go get 等操作时就都会走http代理了

git

使用git clone命令时,如果使用的ssh协议,是不会走http代理的,这时就需要给git设置代理:

1
2
3
4
5
6
7
8
9
10
11
# http代理:
git config --global https.proxy 'http://127.0.0.1:8118'
git config --global https.proxy 'https://127.0.0.1:8118'

# socks5代理:
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

# 取消代理:
git config --global --unset http.proxy
git config --global --unset https.proxy

一般的,常见的工具和IDE比如docker、apt、yum、npm、yarn、idea、androidstudio等也有相应的代理设置方法,只要我们有http和socks5代理,剩下的只是查文档和资料了。

docker

docker比较特殊,按照官方文档给docker设置代理以后,docker search/pull/push等操作会使用代理,但是docker build过程中下载的资源是不会走代理的,因为build过程中实际上是在一个容器内运行的,需要给容器注入http_proxy/https_proxy环境变量,可以在Dockerfile中用ENV关键字设置,也可以使用build参数注入:

1
docker build  --build-arg http_proxy=http://192.168.1.10:8000 --build-arg https_proxy=http://192.168.1.10:8000 -t nginx_test .

chrome浏览器

在chrome浏览器上可使用插件SwitchyOmega来方便的控制访问某个网站是否使用代理。
如果一开始浏览器并没有使用到代理,就无法从应用商店下载到该插件。现在chrome已经支持http_proxy/https_proxy环境变量了,所以打开一个终端,设置http_proxy和https_proxy变量,再在终端输入google-chrome(google-chrome-stable/google-chrome-dev,不同版本略有差异)启动chrome,chrome便会使用设置的http代理来访问网站,就能去web store下载SwitchyOmega插件,经过简单的配置,就解决了浏览器用代理上网的问题。

其他

如果某些特殊软件既没有代理设置功能,也无法使用环境变量中的http代理,就需要使用VPN了。我没用过,不作说明。

以上, 便是在linux环境下如何搭建http代理和常见软件如何使用到代理的说明,有了能访问国际互联网的能力,GWF不再是我们网络环境中的拦路虎。