Mac终端环境走代理

前言

  作为程序员,有时候在终端环境下也需要翻墙的能力,因此继续折腾一下。

环境

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

但这么做合适吗?

根据Unix目录结构的来历

因为/usr/local是用来存放用户自己安装的程序,我认为应该没问题

重新执行安装privoxy的指令。

安装成功

配置privoxy

打开配置文件/usr/local/etc/privoxy/config

到添加以下两行配置

1
2
listen-address 0.0.0.0:8118
forward-socks5 / localhost:1080 .

注意不要忘了后面的 . , ss的默认端口为1080

为什么是8118

从上图可知privoxy的默认端口为8118

开启privoxy

1
» ~ /usr/local/sbin/privoxy /usr/local/etc/privoxy/config

查看是否成功开启8118端口进行监听

1
2
» ~ netstat -na | grep 8118
tcp4 0 0 *.8118 *.* LISTEN

设置代理服务器

1
2
export http_proxy='http://localhost:8118'
export https_proxy='http://localhost:8118'

为了避免每次开机都能生效,可以将上面两句配置添加到.zshrc/.bashrc_profile

效果图

curl访问google

关于原理

Socks5代理转化成http代理给命令行终端使用?

根据整个流程的配置下来,我觉得这样的描述好像有哪儿说不通。

  • 用终端curl www.google.com,终端走的是https请求
  • 因为配置https_proxy所以会走本机的8118端口
  • privoxy监听了8118又会把请求派发(Forwarding)给1080ss,让ss去请求

通过privoxy将原来走http的请求变成了走Socks5代理

副产品

  在/usr/local/etc/privoxy/config配置文件中有listen-address 0.0.0.0:8118,表明ip是不限制的,手机只要设置了代理,也可以使用。

参考

搭建Web服务器(nginx) 喜马拉雅音频文件导出
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×