privoxy-socks转http代理¶
安装:
apt install privoxy
配置文件目录: /etc/privoxy
配置文件 /etc/privoxy
关键内容
listen-address [ADDRESS]:[PORT]
默认值是
listen-address 127.0.0.1:8118
forward-socks5t / 118.193.225.166:9150 .
forward-socks5t / 127.0.0.1:9050 .
// 失败转发重试
forwarded-connect-retries 1
// 配置最大客户端的连接(默认128)
max-client-connections 256
// HTTP 代理转发: Privoxy 把自己收到的 HTTP 请求转给另一个 HTTP 代理
forward target_pattern http_proxy:port
// 示例: 把所有的 HTTP 请求都转发给本机8080端口
forward / 127.0.0.1:8080
// 示例: 如果 HTTP 请求是发送给 .google.com 这个域名的下级域名,就把该 HTTP 请求转发给本机8080
forward .google.com/ 127.0.0.1:8080
forward-socks5 .onion localhost:9050 .
// 把顶级域名为 .onion 的 HTTP 请求都转发给本机的 TOR SOCKS 端口
示意图1(先转发到 SOCKS 代理,然后转到目标站):
| |====>| |====>| |====>|
| 浏览器| |Privoxy| |SOCKS代理| |目标网站
| |<====| |<====| |<====|
| |此阶段是 | |此阶段是 | |此阶段是 |
| |HTTP | |SOCKS| |HTTP |
示意图2(先转发到 SOCKS 代理,再转发到某个 HTTP 代理,最后才转到目标站):
| |====>| |====>| |====>| |====>|
| 浏览器| |Privoxy| |SOCKS代理| |HTTP代理| |目标网站
| |<====| |<====| |<====| |<====|
| |此阶段是 | |此阶段是 | |此阶段是 | |此阶段是 |
| |HTTP | |SOCKS| |HTTP | |HTTP |
SOCKS 代理转发,包括如下几种语法:
forward-socks4 target_pattern socks_proxy:port http_proxy:port
forward-socks4a target_pattern socks_proxy:port http_proxy:port
forward-socks5 target_pattern socks_proxy:port http_proxy:port
forward-socks5t target_pattern socks_proxy:port http_proxy:port
第1列是以 forward 开头的,表示 SOCKS 转发的类型。目前支持 4 种类型:
前面3种(forward-socks4 forward-socks4a forward-socks5)分别对应不同版本的 SOCKS 协议。
最后一种 forward-socks5t 比较特殊,是基于 SOCKS5 协议版本,但是加入针对 TOR 的扩展支持(优化了性能)。
只有转发给 TOR 的 SOCKS 代理,才需要用这个类型。
第2列的 target_pattern 是个变量,表示:这次转发只针对特定模式的 HTTP 访问目标
第3列的 socks_proxy:port 也是变量,表示:要转发给某个 SOCKS 代理(IP 冒号 端口)
第4列的 http_proxy:port 也是变量,表示:在经由前面的 SOCKS 代理之后,再转发给某个 HTTP 代理(IP 冒号 端口)
示例-根据“访问的网站”分流到不同的FQ通道:
forward / .
forward .youtube.com 127.0.0.1:8000
forward-socks5 program-think.blogspot.com 127.0.0.1:9150 .
第1行表示:因为匹配的目标是 / 表示匹配“所有的网址”。所以这条可以看成是“默认规则”。
(在 Privoxy 里面,“后面的规则”会覆盖“前面的规则”,所以“默认规则”总是写在开头)。
第2行表示:凡是 .youtube.com 的下级域名都走 127.0.0.1:8000 的 HTTP 代理。
第3行表示:访问 program-think.blogspot.com 站点都走 127.0.0.1:9150 的 SOCKS 代理
代理切换¶
如果想把不同的网址切换到不同的代理,就使用action功能,可以使用:
user.action文件
或者自定义一个文件,在config中添加下文,这表示添加一个动作文件,文件名是pac.action
actionsfile pac.action
示例:
{{alias}}
direct = +forward-override{forward .}
ssh = +forward-override{forward-socks5 127.0.0.1:7000 .}
gae = +forward-override{forward 127.0.0.1:8000}
default = direct
#==========默认代理==========
{default}
/
#==========直接连接==========
{direct}
.edu.cn
202.117.255.
222.24.211.70
#==========SSH代理==========
{ssh}
.launchpad.net
#==========GAE代理==========
{gae}
.webupd8.org
222.24.211.70