Polipo (简体中文)
- "Polipo 是一个小而快速的缓存 web 代理程序(web 缓存, HTTP 代理, 代理服务器)。尽管 Polipo 是为一个人或一小群人使用而设计的,但并不妨碍它为一大群人所使用。"
下面包括了 Polipo 的安装和设置:
安装
优化 Polipo
作为指定的用户运行
Polipo 需要使用普通用户运行。这个用户可以建立新的也可以使用旧的:
# mkdir /var/cache/polipo # groupadd -r polipo # useradd -d /var/cache/polipo -g polipo -r -s /bin/false polipo
为了在用特定用户运行之前确保所有的文件和目录都已经被建立,启动然后停止 Polipo。
# /etc/rc.d/polipo start # /etc/rc.d/polipo stop
与其他的守护程序以root运行然后尽快的降低权限不同,polipo 是以启动它的用户权限运行的。如果 polipo 是在/etc/rc.d/polipo
调用的,改变调用行
[[ ! -d /var/run/$DAEMON ]] && install -d $DAEMON /var/run/$DAEMON /usr/bin/$DAEMON $ARGS >/dev/null 2>&1
为
[[ ! -d /var/run/$DAEMON ]] && install -d $DAEMON --group=polipo --owner=polipo /var/run/$DAEMON su -c "/usr/bin/$DAEMON $ARGS" -s /bin/sh polipo >/dev/null 2>&1
然后也有必要改变几个 polipo 需要写入的目录的所有者/权限:
# chown polipo:polipo /var/log/polipo # chown -R polipo:polipo /var/run/polipo # chown -R polipo:polipo /var/cache/polipo
尽管更好的选择是建立一个被指定用户所有的目录 /var/log/polipo
然后通过配置文件的 logFile 变量设置 polipo 的 log 文件到 /var/log/polipo/polipo.log
。
启动守护进程
以下命令启动 Polipo 守护进程:
# /etc/rc.d/polipo start
将它添加到 /etc/rc.conf
使它在启动时自动运行:
DAEMONS=(syslog-ng network netfs polipo crond)
多线程
Polipo 也可以不需要超级用户权限即可运行。想要这样的话,首先复制 /etc/polipo/config.sample
到一个合适的目录:
$ cp /etc/polipo/config.sample ~/.poliporc
编辑并将 /var/cache/polipo
替换成一个可写入的目录:
# Uncomment this if you want to put the on-disk cache in a # non-standard location: diskCacheRoot = "~/.polipo-cache/"
创建 cache 目录:
$ mkdir ~/.polipo-cache
最后,使用新配置文件启动:
$ polipo -c ~/.poliporc
配置
管理通常是在 /etc/polipo/config
进行。大多数用户可以选择使用示例配置文件,它适合大多数情况,注释很详细。
# cd /etc/polipo; cp config.sample config
必须要提到的 Polipo 配置中的一个要素是 polipo 的默认行为是通过端口屏蔽外部连接。Polipo 的配置文件有两个变量控制允许的外部端口。allowedPorts
制定外部HTTP连接的端口。默认是 80-100 和 1024-65535. tunnelAllowedPorts
制定 Polipo 隧道流量允许的端口,以及 HTTPS 流量的端口。默认它是更严格的限制的:"它默认允许 ssh, HTTP, https, rsync, IMAP, imaps, POP, pops, Jabber, CVS 和 Git 流量。"
如果你看到来自 Polipo 的 "403 Forbidden Port" 错误信息,你需要配置polipo接收更多 HTTP 或 HTTPS的端口。要设定全都允许,添加下面的几行到 /etc/polipo/config
:
allowedPorts = 1-65535 tunnelAllowedPorts = 1-65535
与其他代理软件不同,Polipo 需要重启后才能应用改变。
浏览器
设置浏览器,让它使用 localhost:8123
作为代理。确保禁用浏览器的磁盘缓存来避免冗余的 IO 操作以及低下的性能。
隧道
除了手动配置每个浏览器和其他程序使用 Polipo 的缓存之外,也可以使用 iptables 来通过 polipo 路由。
在安装了 iptables 之后,添加合适的规则到 /etc/iptables/iptables.rules
:
*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner polipo -j ACCEPT -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8123 COMMIT
这会通过 Polipo 路由所有的 HTTP 流量。移除浏览器的所有代理设置,然后重新启动 iptables。
Privoxy
Privoxy 是一个可以有效拦截广告和其他恶意程序的代理软件。
按照 Polipo 开发人员的建议,为了得到 Privoxy 的隐私性和 Polipo 的大部分性能,你需要把 Polipo 放在 Privoxy 的上游。
也就是说:
- 浏览器指向 Privoxy:
localhost:8118
- 然后将 Privoxy 流量通过 Polipo:
forward / localhost:8123
在 Privoxy 配置文件设置。
Tor
Tor是一个匿名代理网络。
与 Tor 一起使用 Polipo,需要在 /etc/polipo/config
取消注释下面的几行:
socksParentProxy = localhost:9050 socksProxyType = socks5
DansGuardian
DansGuardian 是一个 web 内容过滤器。 DansGuardian 和 Polipo (而不是 squid 或者 tinyproxy) 共同使用,唯一的不同是在 dansguardian.conf
中 proxyport 需要设定为 polipo 的 8123:
# the port DansGuardian connects to proxy on proxyport = 8123