由于OS X 10.11之后有SIP安全机制,已经不能够用一条简单的命令来解决,需要关闭SIP或者使用proxychains-ng之类的工具。但是呢,关闭SIP麻烦就算了,居然还有安全问题,像我这种渣渣,真的有点怕把自己给坑了。而privoxy这个软件刚好安装在/usr/local内,就不需要关闭SIP。
privoxy是一个HTTP协议过滤代理,它可以过滤网页,管理cookies,控制访问,除广告等,同时还支持单系统多用户网络。所以我们可以使用privoxy将shadowsocks的socks5代理转为http代理,这样就可以供终端使用了。
搭建梯子
安装并设置shadowsocks
根据之前的账号密码(搭建ss服务器时设置的)设置ss客户端。
ss的默认端口是1080,可以通过命令查看:1
cat ~/.ShadowsocksX/gfwlist.js | grep proxy
其中,proxy对应的socks5代理
安装privoxy
1 | brew install privoxy |
配置privoxy
1 | vim /usr/local/etc/privoxy/config |
在文件末尾输入:1
2listen-address 0.0.0.0:8118
forward-socks5 / localhost:1080 . # 转发socks5协议
第一行是privoxy监听任意IP地址的8118端口,也就是privoxy的默认端口。第二行是ss的默认端口,最后还带有一个空格和句号,也就实现了将socks5代理转为http代理,在爬虫中如果设置代理就可以使用http://127.0.0.1:8118
。
启动privoxy
1 | sudo /usr/local/sbin/privoxy /usr/local/etc/privoxy/config |
查看privoxy进程
1 | ps -ef | grep privoxy |
返回以下内容说明启动成功:
1 | 502 4093 1 0 11:48上午 ?? 0:00.03 privoxy |
关闭privoxy进程的话,直接使用kill ID
(比如这里的ID是4093);以后再启动,需要先进入到/usr/local/etc/privoxy
,不然可能会报找不到配置文件的错误。
查看端口监听是否成功
1 | netstat -an | grep 8118 |
测试shadowsocks
1 | telnet 127.0.0.1 1086 |
使用privoxy
在~/.zshrc
中添加开关函数,也可以使用别名命令。
例如:1
alias proxy='export all_proxy=socks5://127.0.0.1:1080'
完整代码如下:1
2
3
4
5
6
7
8
9
10
11
12function proxy_off(){
unset http_proxy
unset https_proxy
echo -e "已关闭代理"
}
function proxy_on() {
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
export http_proxy="http://127.0.0.1:8118"
export https_proxy=$http_proxy
echo -e "已开启代理"
}
使配置立即生效
1 | source ~/.zshrc |
开启代理
要确保privoxy已经开启
1 | proxy_on |
可以使用以下命令查看IP:1
curl ip.cn
关闭代理
1 | proxy_off |