您的当前位置:首页正文

MacOS 让终端命令使用全局代理

来源:花图问答

1. 环境

�系统:OS X 10.11.6 (15G31)
��代理软件:shadowsocks

�2. 背景

国内开发者要上外国的网站或下载一些网站上的代码时,一般都是通过代理,但应该有不少人遇到过这种情况:浏览器能打开目标网站,但在终端上却无法 ping 通或下载代码失败。这是因为你设置了代理,网页和软件能通过代理进行访问,但终端却没有走代理路径导致的。

本文则是介绍如何让终端走代理路径来访问目标网站并下载代码,使用的代理软件是 shadowsocks。关于 shadowsocks 的安装与使用本文并不涉及,可用搜索引擎进行查找安装。

3. 安装

  1. 安装 Proxychains :使用 Terminal 运行以下命令
    brew install proxychains-ng

  2. 查看 shadowsocks 本地端口号(端口号默认是 1080)。�打开 ~/.ShadowsocksX/gfwlist.js 文件

    查看端口号
  3. 设置 Proxychains 安装目录下的 proxychains.conf 文件

  4. 打开 proxychains.conf 文件所在位置,在我电脑上为 /usr/local/Cellar/proxychains-ng/4.11/etc/proxychains.conf

  5. 打开 proxychains.conf 文件,并在 [ProxyList] 下面添加 socks5 127.0.0.1 1080(如果 [ProxyList] 下面有其他的内容,则将其删掉或注释掉),1080 即为 shadowsocks 的本地端口号。

  6. 如果使用的 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 disablereboot
4.2.5. 等电脑重启进入桌面后,继续第 5 步。

  1. 在要使用代理的命令前面加上 proxychains4,即可使其命令走代理途径。比如正常情况下运行 curl ,那么让其走代理途径则是 proxychains4 curl ,其他命令同理类推。

4. �参考