前一阵子,有人在我博客留言,对我没有 Privoxy 转发需求表示“大吃一惊”,我倒是淡然地说,因为一直都在用 VPN,至今还算稳定,所以就没去想备用方案.
后来想到我以前曾写过 SSH Firefox SOCKS 代理切换一文,其实雏形已经有了,所以本文再略为修饰增补.
搭建 socks 代理服务器#
ssh -D 9999 -C zfanw@zfanw.com
D 参数表示在本机 9999 端口创建一个 SOCKS 代理服务器,并且通过 SSH 通道建立与远程服务器(phpfensi.com 的主机)的安全连接,C 用于压缩传送数据,为可选参数.
配置 Privoxy 转发#
于是我们现在在本机上有两个代理服务器:
SOCKS 代理服务器,端口为 9999
Privoxy 的 HTTP 代理服务器,端口为 8118.
接下来要做的,就是把 Privoxy 代理服务器的流量转发到 SOCKS 代理上,打开 Privoxy 的 config 文件,添加如下代码:
forward-socks5 / 127.0.0.1:9999.
其中 forward-socks5 表示转发目标是 SOCKS 服务器,5 是协议版本,/ 表示转发所有 HTTP 请求,127.0.0.1:9999 即第一步中搭建的 SOCKS 代理服务器,最末的 . 表示经过 SOCKS 代理的请求不再过 HTTP 代理服务器.
Privoxy 支持多个版本 SOCKS 转发协议,其中 forward-socks4 与 forward-socks4a 的区别是,后者 DNS 解析发生在 SOCKS 服务器上,前者则是在本地,forward-socks5 同样是在 SOCKS 服务器上.