What?
通过 proxychains-ng 实现 terminal 代理
Why?
目前的代理功能,大部分底层都是基于 socks5、http 等,然后配合插件如 SwitchyOmega 等,实现在浏览器端代理,或者是全局代理,但问题是在 terminal 下仍然不走代理。即使通过
export http_proxy=http://127.0.0.1:1081 https_proxy=http://127.0.0.1:1081
发现还是不行。这几天终于忍受不了,我觉得一定有人跟我一样的想法,肯定有人已经着手在做这件事情。果然,偶然发现 proxychains-ng 这款开源软件,决定试一下。
How?
经过昨天的实践,经过一顿操作后,发现不行,然后就果断关机下班了。今早到公司再打开 terminal 试下,发现昨天已经成功了。
关闭 Mac 的 SIP
重启 Mac,按住 Option 键进入启动盘选择模式,再按 ⌘ + R
进入 Recovery 模式。实用工具( Utilities )-> 终端( Terminal )。输入命令 csrutil disable
运行。重启进入系统后,终端里输入 csrutil status
,结果中如果有 System Integrity Protection status:disabled
。则说明关闭成功。
brew 安装 proxychains-ng
1 | brew install proxychains-ng |
配置代理
brew 安装后,proxychains-ng 的配置文件在 /usr/local/etc/proxychains.conf
下,在文件最后
1 | ...... |
测试效果
运行命令
1 | proxychains4 curl ipinfo.io |
输出结果如下:
1 | [proxychains] config file found: /usr/local/etc/proxychains.conf |
增加别名
每次使用都需要输入 proxychains4
,显得太长了,增加别名在 .zshrc 下进行优化,
1 | # 增加 alias |
结语
此后,每次在需要翻墙的情况下,只需要在命令前,加上 out
即可。
当然 proxychains-ng 还有更加丰富的功能,貌似可以实现任意软件的翻墙,但由于我不需要,也没有去研究这个,以后有需要再说吧。