命令行如何走代理

上一篇我介绍了如何使用Stunnel作为客户端,GoProxy-VPS作为服务端进行全局代理。但所谓的全局代理,并不针对命令行,比如Mac下的Terminal或者Windows下的CMD。很多情况下,命令行的程序更需要更新。

下面我来介绍一下,在Mac以及Windows环境下如何给命令行设置全局代理。

Mac Terminal

首先,我找了一下Mac下如何安装Stunnel的教程,比较简单的就是使用Homebrew安装,只需要一条命令

1
brew install stunnel

Mac下的Stunnel是没有图形化界面的,不像Windows。但问题是我的Homebrew版本太低的缘故,下载的Stunnel链接已经不存在了,这就很头痛了。而且Homebrew本身又一直更新失败。但是仔细观察会发现,Stunnel官网有源文件包,可以手动编译安装。下载最新的版本,我的是5.49版本

下载完成后,解压然后执行命令安装

1
2
3
cd stunnel-5.49
./configure
make && make install

安装完成后,需要创建stunnel.conf配置文件

1
cp /usr/local/etc/stunnel/stunnel.conf-sample /usr/local/etc/stunnel/stunnel.conf

接下来就是新增你自己的配置,比如我的配置

1
2
3
4
5
6
7
8
; HTTP(S) proxy authenticated with a client certificate
[https]
client = yes
accept = 127.0.0.1:8080
connect = 192.168.80.156:443
verifyChain = yes
;engineId = capi
CAfile = /usr/local/etc/stunnel/server.pem

其中,client=yes代表启用客户端代理,accept=127.0.0.1:8080表示客户端代理的网址和端口,connect=192.168.80.156:443是我的GoProxy-VPS服务运行的网址和端口,verifyChain=yes表示客户端需要验证服务端的证书,CAfile = /usr/local/etc/stunnel/server.pem是我服务端的证书。

当然把verifyChain以及CAfile都注释了的话,客户端就无须验证服务端证书这一步了,始终认为是通过的。而浏览器就无法跳过这一步,因为对浏览器而言,客户端验证服务器证书,是TLS握手中必须的一步。

配置完成之后,运行Stunnel进程

1
sudo stunnel

至此,Mac下的Stunnel客户端就算运行成功了。那么如何配置Terminal走Stunnel代理呢?

很简单,只需要在Terminal中输入两行命令,即可实现代理

1
2
export http_proxy=http://user:pass@ip:port
export https_proxy=http://user:pass@ip:port

如果GoProxy-VPS设置了PAM验证机制,命令行设置代理的时候,就需要带上用户名和密码。其中user是用户名,pass是密码,ip:port是Stunnel客户端配置中的accept参数的值,比如我的就是127.0.0.1:8080

如果密码带有!@等字符,需要使用转义符号\。下面就可以走代理更新你的命令行程序了。

Windows CMD

Windows下安装Stunnel客户端太容易了,配置和Mac下的配置一样,无须更改。主要说说CMD如何实现走代理。其实很简单,打开CMD

1
2
set http_proxy=http://user:pass@ip:port
set https_proxy=http://user:pass@ip:port

设置一下就好了,是不是超级简单。

avatar

chilihotpot

You Are The JavaScript In My HTML