简述背景需求
昨晚要帮朋友在 terminal 里面跑个作业,我虽然打开了 1080,而且开了全局,但发现终端依旧需要配置,因为终端不支持 Socks5 代理,只支持 http 代理。所以得解决一下。
方法一:使用 proxychains
macOS homebrew 下载并进入配置页面
1
2brew install proxychains-ng
vim /usr/local/etc/proxychains.conf在
[ProxyList]
下面加入1
socks5 127.0.0.1 1080
(shadowsocks 本地端口是 1080),不用管那个被注释掉的 socks4 127.0.0.1 9050 (其实是Tor)。
试试是否成功,可惜没有通。
1
proxychains4 curl google.com
询问好多人,最后才发现 “你们 Mac 的内置 curl 怎么还带坑的”,即,自带的 curl 版本都比较老。详见 qingliu 找到的这个 issue https://github.com/rofl0r/proxychains-ng/issues/78 。
这个问题鳖了我半天,所以赶紧再 brew 下载一个 curl
1
brew install curl
之后就是素质三连。果然通了!
1
2
3echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' » ~/.zshrc
source ~/.zshrc
proxychains4 curl -v https://www.google.com最后开心地小脚本跑起来
1
proxychains4 ~/xxxxxx.sh
方法二:使用 privoxy
因为终端不支持 Socks5,只支持 http代理,所以可以使用 privoxy,我们正常理解的 Privoxy“是一款带过滤功能的代理服务器,针对了 HTTP、HTTPS 协议。通过 Privoxy 的过滤功能,用户可以保护隐私、对网页内容进行过滤、管理 cookies,以及拦阻各种广告等。” 在这里,我们用它在应用层进行代理转发,也就是说,要使用它之前,ss 得开启,privoxy 只是一个转发辅助,不能单独用于 fuxk GFW。
macOS 使用 homebrew 下载 privoxy
1
brew install privoxy
修改配置文件
1
vim /usr/local/etc/privoxy/config
在里面加上
1
2listen-address 0.0.0.0:8118
forward-socks5 / 127.0.0.1:1080 .0.0.0.0
是让其他设备可以访问,也就是说局域网下的配置。如果仅仅要本机的话,那就改为127.0.0.1
,我这里是0.0.0.0
; 8118 是HTTP 代理端口号;1080 后不要忘了那个.
启动 privoxy
1
/usr/local/sbin/privoxy /usr/local/etc/privoxy/config
查看监听情况
1
netstat -na | grep 8118
加在终端里面,我的是 zsh,所以是
vim .zshrc
,感谢狗杰哥提供函数:1
2
3
4
5
6
7
8
9
10proxy-activate() {
export http_proxy='http://127.0.0.1:8118'
export https_proxy=$http_proxy
}
proxy-deactivate() {
unset http_proxy
unset https_proxy
}
alias pa='proxy-activate'
alias pd='proxy-deactivate'重启一下 terminal,这样,pa 一下终端就通了。pd 一下终端就回归大局域网了。当然,别忘了 pa 之前 ss 要先是开启状态的。
开心,小脚本跑起来:1
2pa
bash ~/xxxxxx.sh- 注意: pa 、pd 是对 某一个 terminal 里的 tab 生效的,(who am i),新开启一个标签页应该再手动 pa。
9.15 补充:长时间不开 pa 导致玄学问题,需重新启动/usr/local/sbin/privoxy
/usr/local/etc/privoxy/config
以及后续部分操作。
CC BY-NC-SA 4.0.