本文介绍一款用来进行网络流量转发的自带内容过滤的 HTTP/HTTPS 代理服务器软件 Privoxy。
Privoxy 功能强大,本文并没有具体地介绍它的全部功能,只是介绍它的功能之一“网络流量转发”。
今天就通过把本地的 HTTP 协议代理的网络流量转发为 Socks5 协议的流量,实现 Piroxy 的“网络流量转发”功能。
利用 Privoxy 可将 HTTP 代理用在 Shell 终端上面。http_proxy
和 https_proxy
两个变量设置 Shell 终端的 HTTP 代理。Shell 设置代理之后,一些在终端执行的命令发出的网络请求会走 Privoxy 的 HTTP 代理。这也是本文教程最后的一部分。
点击图片查看大图
前提条件
- 首先,本文用的 Socks5 代理可以用来访问外网;
-
其次,经 Privoxy 的转发和协议的转换,本地局域网可以经由网络代理客户端设置 HTTP 代理
http://192.168.1.101:8118
这个 HTTP 协议地址访问 Privoxy 网络代理功能;然后 Privoxy 将 HTTP 流量转发到原先的 Socks5 协议流量。最终网络流量到达外网的服务器。
-
再次,本文的 IP 地址
192.168.1.101
是测试用机器在局域网内分配的 IP 地址,实际上到底是怎样的要看情况而定,比如读者的路由器设置。
安装 Privoxy
# Fedora 系
sudo yum install -y privoxy
# Debian 系
sudo apt install -y privoxy
配置 Privoxy
修改配置文件:
sudo vim /etc/privoxy/config
设置 Privoxy 的监听地址和端口
在编辑器搜索 listen-address
:
默认值是: listen-address 127.0.0.1:8118
,可把它按需改成以下的样子:
listen-address 192.168.1.101:8118
这一行是 Privoxy 的监听范围和端口,其中 IP 地址可以指定为 127.0.0.1
,表示只在本机使用,这样, HTTP 代理就变成 http://127.0.0.1:8118
; 而上方设置的表示可在同一局域网中使用。
删除注释使本行生效,在不和其他服务端口冲突的前提下,端口号 8118
可自己指定。
设置 Privoxy 要转发的 Socks5 流量指向
搜索 forward-socks5t
:
默认这一行是这样的:# forward-socks5t / 127.0.0.1:9050 .
,可按需修改:
forward-socks5t / 192.168.1.101:1080 .
去掉注释,将 forward-socks5t 更改为 forward-socks5 (这里如果不去掉 “t”,有些 Socks 代理下会报错。但是有些情况下保留 “t” 才可正常运行,关于这个,读者要尝试一下),并指定本地 Socks5 协议代理的 IP 和端口,IP 恰好也在本机,同时 Socks5 代理的 IP 也设置为 192.168.1.101
。
至此的逻辑是:
在网络代理客户端(应用软件、浏览器、系统全局网络代理设置)设置 HTTP 代理为 http://192.168.1.101:8118
;然后,客户端访问网络,这时客户端的全部或部分网络流量由 Privoxy 的 HTTP 协议代理,这些特定网络流量经 Privoxy 转发到地址为 socks5://192.168.1.101:1080
的 Socks5 协议代理,Socks5 将本地的网络流量往远程代理服务器发送,以及反过来接收来自远程的代理网络流量。
其实,远程的 Socks5 IP 和域名也是可以的。
保存文件,然后退出文件。
这样就完成 Privoxy “流量转发” 功能的基本配置,重启一下 Privoxy 就可以使用了。
重启 Privoxy 服务
sudo systemctl restart privoxy
在 Shell 命令行中应用以上设置的 HTTP 代理
- 临时使用代理
export http_proxy="http://192.168.1.101:8118" export https_proxy=$http_proxy
- 取消命令行的代理设置(禁用前面设置的代理)
unset http_proxy unset https_proxy
- 要想在用户启动时生效,要在 /etc/profile 或者用户目录下的相关的文件中添加:
export http_proxy="http://192.168.1.101:8118" export https_proxy=$http_proxy
注销系统让配置生效。
最好不要这样使用,否则可能会导致所有经的终端的网络流量都走代理。
如果想在某个终端窗口不使用代理,可用上述的
unset
操作。
测试 Shell 的 HTTP 代理是否生效
# Fedora 系列使用
sudo yum install -y curl
# Debian 系列使用
sudo apt install -y curl
# 获取当前终端 IP 地址
curl cip.cc
后记
作者本人郑重声明:
-
本文仅仅是教会读者如何利用 Privoxy 的流量转发功能将 HTTP 协议流量转换为 Socks5 协议流量,并没有任何不良导向;
-
对于能访问外网的网络代理,请用来作正当用途,不能滥用作非法用途。
鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。
本文章可以转载,但是需要说明来源出处!
本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com