使用Proxychains给你的Shell加上代理
Proxychains是啥?
他是一个命令行预加载器,用于挂钩动态链接程序中的套接字,并通过一个或多个socks / http代理重定向它。
GitHub地址 链接
MacOS和Linux系本身通过Shadowsocks代理之后,通过PAC名单可以识别出要代理的域名。但要求代理应用必须支持Sock5,如果不支持,那么也没有办法通过Shadowsocks代理。我们的Shell控制台环境是不支持Sock代理的,只支持HTTP代理。如果我们不在终端设置 http_proxy
代理,那么我们的Shell控制台是无法通过Shadowsocks代理的。
附 终端设置 http_proxy
代理方法
其实如果不嫌麻烦,我们可以通过在终端设置http_proxy
来将Sock代理换成HTTP代理。这样Shell环境也可以曲线救国而使用Shadowsocks代理啦。
1 | export http_proxy='http://localhost:8888' |
取消代理
1 | unset http_proxy |
如果有兴趣也可以将这个命令放在.bashrc
或者.zshrc
中,让我们的Shell控制台全局代理启动更加方便一些。
首先你的有自己的小飞机(Mac)
通过Proxychains代理的首先你的有自己的Shadowsocks。这里推荐搭建Shadowsocks-R环境(SSR),因为SSR比普通的Shadowsocks增加了协议和混淆,稳定性更高。
ShadowsocksX-NG 下载这个ShadowsocksX-NG,输入你的SSR配置即可。首先保证你的浏览器能够被ShadowsocksX-NG代理,因为浏览器是默认支持Sock协议的。
如果你是Linux系,你可以借助sslocal
命令开启自己的Shadowsocks,具体的参数就不在此文中详细介绍
使用Proxychains4
安装(Mac)
1 | brew install proxychains-ng |
安装完成之后你将有proxychains4命令
安装(Linux)
1 | git clone https://github.com/rofl0r/proxychains-ng.git |
配置参数
修改/usr/local/etc/proxychains.conf
中的配置(Mac brew安装)
注意:Linux系不会默认生成conf文件,需要将上工程中./src/proxychains.conf 里面的配置Copy到目录中
如果proxychain4命令不手动制定配置文件路径,它会自动寻找配置。
1 | [ProxyList] |
这就可以了么?
proxychains4配置生效之后,我们在终端使用proxychains4 加上命令就可以在终端代理了。但是这真的可以代理了么???答案是MacOS不行,而Linux系的同学已经OK了。
测试测试:
1 | proxychains4 curl ip.cn |
结果:
1 | 当前 IP:42.120.102.128 来自:浙江省杭州市 阿里云 |
修改苹果SIP(System Integrity Protection)设置
如果是Linux系的 此时你应该成功代理了 忽略下文
macOS 10.11后,苹果加入SIP设置就会导致部分命令是执行不成功的,就包括使用socks的proxychains4。如果我们要解决这个问题,我们就要关掉SIP。
- 重启Mac,按下
Command+R
直到出现Apple Logo。 - 选择
实用工具
->终端
。 - 输入命令
csrutil disable
。出现类似于“成功禁用SIP”的意思就表示成功了。
如果还要打开SIP,最后的步骤csrutil enable
即可
测试关闭SIP之后的Proxychains4
测试测试:
1 | proxychains4 curl ip.cn |
结果:
1 | 当前 IP:42.3.27.177 来自:香港特别行政区 香港电讯 |
如果看到的ip是境外的ip,这样即可成功在命令行中通过proxychains4代理啦。此时如果关掉proxychains4。
测试测试:
1 | curl ip.cn |
结果:
1 | 当前 IP:42.120.102.128 来自:浙江省杭州市 阿里云 |