简述背景需求
昨晚要帮朋友在 terminal 里面跑个作业,我虽然打开了 1080,而且开了全局,但发现终端依旧需要配置,因为终端不支持 Socks5 代理,只支持 http 代理。所以得解决一下。
方法一:使用 proxychains
1 2
| brew install proxychains-ng vim /usr/local/etc/proxychains.conf
|
(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 2 3
| echo '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
| vim /usr/local/etc/privoxy/config
|
1 2
| listen-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 后不要忘了那个 .
1
| /usr/local/sbin/privoxy /usr/local/etc/privoxy/config
|
- 加在终端里面,我的是 zsh,所以是
vim .zshrc,感谢狗杰哥提供函数:
1 2 3 4 5 6 7 8 9 10
| proxy-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 要先是开启状态的。
开心,小脚本跑起来:
- 注意: 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.