Centos下Privoxy的安装与配置

将ss的socks5代理转换为HTTP代理

一、背景

  手上有墙外的VPS可用,部署了shadowsocks(以下简称ss),从墙外使用rsync拉文件或是IOS(未越狱)想出墙时。都比较麻烦。于是看上了Privoxy这货。可以把socks5转换为HTTP代理,也就是俗称的APN。

步骤如下:

  1. 国外VPS机器分别安装ss服务端和客户端
  2. 客户端直接连本机服务端
  3. 部署Privoxy将ss客户端生成的sock5代理转成HTTP代理
  4. rsync或IOS端直接连接国外VPS上的HTTP代理。

PS:如果手头还有国内VPS的话最好是客户端和Privoxy都在国内VPS上。代理这块就比较少被检验。

  ss的安装和配置这里就不叙述了,因为过程和配置比较简单。这篇主要还是说说负责 Privoxy 安装与设置吧。

二、安装

  1. Privoxy 是一个轻量级的代理服务,不需要大量的内存进行缓存,是开源项目,官方介绍如下:

    Privoxy是一款带过滤功能的代理服务器,针对HTTP、HTTPS协议,经常跟Tor组合使用。通过Privoxy的超级过滤功能,用户从而可以保护隐私、对网页内容进行过滤、管理cookies,以及拦阻各种广告等。Privoxy可以用作单机,也可以应用到多用户的网络。

  2. 你可以在 这里 选择适合你的版本,目前基本可以算常用桌面全版本(Unix众,Win,MacOS)。这里我选择了源码安装的方式。

    # 添加一个用户给 Privoxy
    echo 'privoxy:*:7777:7777:privoxy proxy:/no/home:/no/shell' >> /etc/passwd
    # 分配个组给 Privoxy
    echo 'privoxy:*:7777:' >> /etc/group
    # 开始编译安装...
    autoheader
    autoconf
    ./configure      # (--help to see options)
    make             # (the make from GNU, sometimes called gmake)
    make -s install  # (to really install, -s to silence output)
    
  3. 默认安装后相应的配置在 /usr/local/etc/privoxy 目录下

    # 运行
    /etc/init.d/privoxy start
    

三、定制

根据我们的需求来定制一下配置(将ss的sock5转换为HTTP代理)。

  1. 配置HTTP代理端口

    vi /usr/local/etc/privoxy/config
    #找到listen-address,配置HTTP代理的端口
    listen-address  127.0.0.1:31904
    
  2. 向对应端口转发

    vi /usr/local/etc/privoxy/config
    # 找到forward-socks5,配置要转发的端口,及特地规则。具体使用场景可以参考官方配置里写上。
    # 这里我们配置全局转发,目前是49879端口(ss客户端)
    forward-socks5t   /         127.0.0.1:49879 .
        
    
  3. 配置完了,重启下privoxy

    /etc/init.d/privoxy restart
    

四、关于用户认证

  • 有不少人发邮件有问这个用户认证的事。从官方文档说明来看,privoxy本身是不支持用户认证的。但支持认证的转发。在以下场景可以用得到

    当用privoxy来代理了其他需要认证的代理时,就可以按以下配置来设置认证转发。

    # 生成用户名和密码对应的base64密文
    perl -e "use MIME::Base64; print encode_base64('用户名:密码');"
        
    # 修改config文件,添加actionsfile user.action,编辑 user.action 文件中的 alias
    proxy = +forward-override{forward 127.0.0.1:808} +add-header{Proxy-authorization: Basic <auth>}
        
    # 也可以IP段过滤, 打开配置,找到 permit-access,里面有对应的配置模板。
    

五、如何使用HTTP代理

  1. RSYNC代理

    export RSYNC_PROXY='IP:PORT'
    
  2. IOS上使用 > 设置-WIFI-点中你连接的WIFI旁边的(i)进入WIFI设置-最下方HTTP代理-输入对应信息

六、FAQ

  1. 按上面的配置好了,还是连接不上 PS:检查一下端口和防火墙有没有添加上对应的规则

  2. 欢迎补充。