前言
作为程序员,有时候在终端环境下也需要翻墙的能力,因此继续折腾一下。
环境
macOS Sierra 10.12.3
流程
安装privoxy
通过Wiki-Shadowsocks可知,ss使用的是Socks5代理方式。网上搜索的得到的结果是在mac环境下推荐使用privoxy这个的工具。
使用brew安装privoxy
1 | » ~ brew install privotxy |
会提示权限问题
install: /usr/local/etc/…: Permission denied
可使用以下指令修改/usr/local目录的所有者与组
1 | » ~ sudo chown -R "$USER":admin /usr/local |
但这么做合适吗?
因为/usr/local是用来存放用户自己安装的程序,我认为应该没问题
重新执行安装privoxy的指令。
安装成功
配置privoxy
打开配置文件/usr/local/etc/privoxy/config
到添加以下两行配置
1 | listen-address 0.0.0.0:8118 |
注意不要忘了后面的 . , ss的默认端口为1080
为什么是8118
从上图可知privoxy的默认端口为8118
开启privoxy
1 | » ~ /usr/local/sbin/privoxy /usr/local/etc/privoxy/config |
查看是否成功开启8118端口进行监听
1 | » ~ netstat -na | grep 8118 |
设置代理服务器
1 | export http_proxy='http://localhost:8118' |
为了避免每次开机都能生效,可以将上面两句配置添加到.zshrc/.bashrc_profile中
效果图
用curl访问google
关于原理
Socks5代理转化成http代理给命令行终端使用?
根据整个流程的配置下来,我觉得这样的描述好像有哪儿说不通。
- 用终端curl www.google.com,终端走的是https请求
- 因为配置https_proxy所以会走本机的8118端口
- 而privoxy监听了8118又会把请求派发(Forwarding)给1080的ss,让ss去请求
通过privoxy将原来走http的请求变成了走Socks5代理
副产品
在/usr/local/etc/privoxy/config配置文件中有listen-address 0.0.0.0:8118,表明ip是不限制的,手机只要设置了代理,也可以使用。