1. 环境
�系统:OS X 10.11.6 (15G31)
��代理软件:shadowsocks
�2. 背景
国内开发者要上外国的网站或下载一些网站上的代码时,一般都是通过代理,但应该有不少人遇到过这种情况:浏览器能打开目标网站,但在终端上却无法 ping
通或下载代码失败。这是因为你设置了代理,网页和软件能通过代理进行访问,但终端却没有走代理路径导致的。
本文则是介绍如何让终端走代理路径来访问目标网站并下载代码,使用的代理软件是 shadowsocks
。关于 shadowsocks
的安装与使用本文并不涉及,可用搜索引擎进行查找安装。
3. 安装
-
安装
Proxychains
:使用Terminal
运行以下命令
brew install proxychains-ng
-
查看
查看端口号shadowsocks
本地端口号(端口号默认是1080
)。�打开~/.ShadowsocksX/gfwlist.js
文件
-
设置
Proxychains
安装目录下的proxychains.conf
文件 -
打开
proxychains.conf
文件所在位置,在我电脑上为/usr/local/Cellar/proxychains-ng/4.11/etc/proxychains.conf
-
打开
proxychains.conf
文件,并在[ProxyList]
下面添加socks5 127.0.0.1 1080
(如果[ProxyList]
下面有其他的内容,则将其删掉或注释掉),1080
即为shadowsocks
的本地端口号。
-
如果使用的 OS X 系统 是
10.11
以下,则跳过这一步,直接进入第 5 步。由于 OS X 的新版本引入了一个新机制SIP (System Integrity Protection)
,即使 Root 权限也不能对一些二进制进行修改,这些二进制是在/System,/bin,/sbin,/usr (except /usr/local)
中的。这就影响了proxychains
的作用范围,不在上述目录中的二进制可以使用proxychains
,而在其中的就不行了。从目前的资料有来,有以下两种解决方法:
4.1. 把所有命令都放在/bin里,把/bin放在路径里
4.2. 关闭 SIP
4.2.1. 重启电脑;
4.2.2. 在重启的界面上按住 Command 键和 R 键进入 recovery mode
;
4.2.3. 左上角通用工具选择终端;
4.2.4. 在终端上分别运行:csrutil disable
和 reboot
;
4.2.5. 等电脑重启进入桌面后,继续第 5 步。
- 在要使用代理的命令前面加上
proxychains4
,即可使其命令走代理途径。比如正常情况下运行curl
,那么让其走代理途径则是proxychains4 curl
,其他命令同理类推。