简介

Privoxy 是一个 代理软件

简单说,就是进出你电脑的流量守门人。借由 Privoxy,我们可以控制出去的请求,还可以改写返回的响应。不必要的请求 – 比如视频广告的地址、图片广告的地址,我们可以直接 block 掉;不必要的响应内容 – 比如页面中的文字广告,我们可以借由 filter 过滤掉,不让它们在浏览器页面上显示。

使用Privoxy 将socks5代理转成http代理

操作系统 CentOS 7

1、先安装epel源

yum install epel-release#安装完成之后可以通过下面的命令查看
yum repolist#可以看到多了一个
#Extra Packages for Enterprise Linux 7 - x86_64

2、使用yum命令安装

用yum命令看一下,是最新版本

 yum info privoxy名称    :privoxy
架构    :x86_64
版本    :3.0.26
发布    :1.el7
大小    :936 k
源    :epel/x86_64
简介    : Privacy enhancing proxy
网址    :http://www.privoxy.org/
协议    : GPLv2+
描述    : Privoxy is a web proxy with advanced filtering capabilities for: protecting privacy, filtering web page content, managing cookies,: controlling access, and removing ads, banners, pop-ups and other: obnoxious Internet junk. Privoxy has a very flexible configuration and: can be customized to suit individual needs and tastes. Privoxy has application: for both stand-alone systems and multi-user networks.: : Privoxy is based on the Internet Junkbuster.

直接安装 privoxy


yum install privoxy

3、 配置

配置文件位于目录:/etc/privoxy

3.1、修改config文件

说明:
https://www.privoxy.org/user-manual/config.html

修改绑定地址,搜索 ==listen-address== ,修改需要绑定的IP

listen-address  0.0.0.0:8118

设置socks5 转发,搜索 ==forward-socks5t== ,去掉注释,修改对应IP


forward-socks5t   /               118.193.225.166:9150 .

注意后面的点不要删掉

配置不走代理,直接本地转发的

forward         192.168.*.*/     .
forward           127.*.*.*/     .

由于网络不稳定,经常出现503,增加转发重试
默认值是:0

forwarded-connect-retries  1

配置最大客户端的连接
默认值是:128

max-client-connections 256

这个用于开启和关闭广告过滤和内容过滤,1表示开启,0表示关闭
默认值是:1

toggle  0

共享连接

是否保持活动的传出连接应该在不同的传入连接之间共享

这个还没怎么测试,按照字面意思理解

connection-sharing 1

3.1、修改user.action 配置文件

拦截服务端禁止在iframe中加载的响应头,在user.action 末尾添加

只能处理http的连接

{ +crunch-server-header{X-Frame-Options} }
/

修改服务端的响应头,去掉设置cookie时的 HttpOnly ,让客户端可以通过js获取cookie
Privoxy 使用类似Perl的 s/// 操作来实现对内容的替换修改

注意,它使用的是|作为分隔符,而不是/,因为模式包含一个正斜杠,否则必须以反斜杠(\)来转义。如果表达式中有|线则用@符号。(文档中没有看到明确的说明,但是例子中是这么写的)

只能处理http的连接

在user.filter文件中新增

SERVER-HEADER-FILTER: delete-http-only delete server response head setCookie http only tag
s@^(Set-Cookie.+)(;[ ]*httponly)@$1@i

在user.action文件中新增

{+server-header-filter{delete-http-only}}
/

4、启动服务

$ systemctl start privoxy
$ systemctl status privoxy● privoxy.service - Privoxy Web Proxy With Advanced Filtering CapabilitiesLoaded: loaded (/usr/lib/systemd/system/privoxy.service; disabled; vendor preset: disabled)Active: active (running) since 三 2017-11-15 16:38:12 CST; 9s agoProcess: 22643 ExecStart=/usr/sbin/privoxy --pidfile /run/privoxy.pid --user privoxy /etc/privoxy/config (code=exited, status=0/SUCCESS)Main PID: 22644 (privoxy)CGroup: /system.slice/privoxy.service└─22644 /usr/sbin/privoxy --pidfile /run/privoxy.pid --user privoxy /etc/privoxy/config

5、检查测试

netstat -an | grep 8118tcp        0      0 127.0.0.1:8118          0.0.0.0:*               LISTEN

6、浏览器访问

浏览器配置代理指向privoxy

访问地址:http://p.p/ 可以进入到privoxy的一个管理页面

访问地址:https://check.torproject.org/ 可以进入到一个tor检查页面

===========================高级使用=============================

安装 Privoxy#

Privoxy 支持的平台非常多:

针对各个平台,Privoxy 均提供有安装说明。

下面简单提一下几个平台。

  1. Windows 平台

    Windows 平台下的安装通常都可视化,下载安装包,双击,然后根据提示,一路点击即可安装。

  2. Linux 平台

    多数时候可以通过仓库安装。

    比如 Ubuntu:

     

    又比如 openSUSE:

    sudo zypper install privoxy
  3. mac 平台

    mac 上如果有安装 homebrew,则可以执行 brew install privoxy 来安装 Privoxy。

实在喜欢折腾的,就下载源代码自己编译安装。

代理转发

配置文件说明

主配置文件

  对于 Windows 系统,主配置文件放置在跟 privoxy.exe 相同的目录下,文件名为 config.txt

  对于“Linux/Unix”,主配置文件放置在 /etc/privoxy 目录下,文件名为 config

  Privoxy 的配置文件,都是纯文本文件。如果某一行是以 井号 # 开头,说明这一行是注释。

如何定制 Privoxy 的“监听端口及绑定地址”

  先来说最最基本的配置——设定 Privoxy 的监听端口号和绑定的地址。

  介绍这个的目的,是让你先稍微熟悉一下——如何修改 Privoxy 的主配置文件。因为后面的定制,需要经常去修改它。

  Privoxy 的监听端口号,默认是 8118,默认绑定的地址是 127.0.0.1(这个地址代表“当前系统”)。由于默认是绑定在 127.0.0.1 这个地址,所以只有当前系统的软件才可以连接到 Privoxy 的监听端口。

  如果你希望其它操作系统的软件也可以连接到 Privoxy 的监听端口,可以修改绑定的地址,把 127.0.0.1 改为 0.0.0.0 表示绑定在“任意地址”。

  操作步骤如下:

  找到“主配置文件”,用你比较顺手的文本编辑器打开,在尾部增加如下一行

listen-address 0.0.0.0:8118

  如果你不喜欢 8118 这个端口号,也可以换成别的。

  修改完之后,启动 Privoxy,然后在命令行使用 netstat 命令,就可以看到多出来一个 8118 的端口。

如何定制“HTTP 代理转发”#

  “HTTP 代理转发”就是说:Privoxy 把自己收到的 HTTP 请求转给另一个 HTTP 代理,再由该代理转到你最终访问的网站。

  HTTP 代理转发的语法如下(把该语法添加在“主配置文件”尾部):

forward target_pattern http_proxy:port

  语法解释:

  该命令分3段,各段之间用空格分开(可以用单个空格,也可以多个空格)

  第1段的 forward 是固定的,表示:这是 HTTP 转发

  第2段的 target_pattern 是个变量,表示:这次转发只针对特定模式的 HTTP 访问目标

  第3段的 http_proxy:port 也是变量,表示:要转发给某个 HTTP 代理(IP 冒号 端口)。如果“第3段”只写一个单独的小数点,表示直连(不走代理)。

举例1

forward  /  127.0.0.1:8080

上述这句表示:

把所有的 HTTP 请求都转发给本机(127.0.0.1 表示本机)的 8080 端口

target_pattern 设置为“单个斜线”,表示匹配“所有的 URL 网址”

举例2

forward  .google.com/  127.0.0.1:8080

上述这句表示:

如果 HTTP 请求是发送给 .google.com 这个域名的下级域名,那么就把该 HTTP 请求转发给本机(127.0.0.1 表示本机)的 8080 端口

.google.com 的写法,可以匹配如下这类域名:

www.google.commail.google.complus.google.com

(以此类推)

补充说明:

本例子中,target_pattern 变量是 .google.com/

这个写法表示:该变量只匹配域名,不匹配网页的路径。根据 Privoxy 的语法规则,最末尾的斜线可以省略。

因此,本例子也可以等价地写为:

forward  .google.com  127.0.0.1:8080 

举例3

forward-socks5 .onion localhost:9050 .

上述这句表示:

把顶级域名为 .onion 的 HTTP 请求都转发给本机(localhost 也可以用来表示本机,相当于 127.0.0.1)的 TOR SOCKS 端口

补充说明:

普通互联网的域名,顶级域名不会是 .onion

这个顶级域名,是专门用于 TOR 暗网的。因此,本例子就是用来转发 TOR 暗网的 HTTP 请求,让 Privoxy 把这类请求转给 TOR 的 SOCKS 端口。

如何定制“SOCKS 代理转发”#

  所谓的“SOCKS 代理转发”,就是说:Privoxy 把自己收到的 HTTP 请求转给另一个 SOCKS 代理;如果需要的话,还可以由这个 SOCKS 代理再转给另一个 HTTP 代理。

示意图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

  语法解释:

  该命令分4段,各段之间用空格分开(可以用单个空格,也可以多个空格)

  第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 冒号 端口)

第4段如果写成一个单独的小数点,相当于“示意图1”;如果第4段填写了具体的 IP 和端口,相当于“示意图2”。

举例1

  如果你本机安装了 TOR Browser 软件包,可以使用如下语法,把 Privoxy 收到的 HTTP 请求转发给 TOR Browser 内置的 SOCKS 代理。

forward-socks5  /  127.0.0.1:9150  .

根据“访问的网站”分流到不同的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 代理。(提醒一下:此行末尾的小数点别漏看了)

例如,安装SSCap4.0以后,内网不可以访问,可以修改配置文件:

forward-socks5 / 127.0.0.1:1080 .
forward  18.16.*.*  .

这样18.16..的内网就即可访问。

代理切换#

如果想把不同的网址切换到不同的代理,就使用action功能,可以使用user.action文件,

或者自定义一个文件,在config中添加下文,这表示添加一个动作文件,文件名是pac.action。在同目录下建立文件“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

上面的{{alias}}部分定义了一些缩写,注意http代理和socks代理的写法不同。

后面的如{direct}部分定义对哪些地址应用这个代理。其中“/“表示全部地址。注意一个URL的域名部分只能用glob匹配,而地址部分可以用复杂的正则表达式。具体可以看Privoxy的文档

这些规则在后面的会覆盖前面的,比如222.24.211.70实际是以gae代理访问的。这样可以实现一些稍微复杂的功能

示例:

1.1 安装

yum install -y epel-release
yum install -y privoxy

1.2 修改privoxy的config文件

vim /etc/privoxy/config

# 增加下面的内容,wq保存。

# 后面的.不要漏了
forward-socks5t   /   192.168.1.1:8080 .# 这里listen-address使用默认,正常不需要修改
listen-address  127.0.0.1:8118

1.3 启动

# 启动
systemctl start privoxy
# 开机启动
systemctl enable privoxy

二、设置代理

 2.1 设置当前用户的全局代理

# 修改bashrc文件

vim ~/.bashrc

# 添加下面的内容,wq保存

export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export ftp_proxy=http://127.0.0.1:8118

# 立刻生效

source ~/.bashrc

 2.2 设置系统全局代理

# 修改profile文件

vim /etc/profile

# 添加下面的内容,wq保存。

http_proxy=http://127.0.0.1:8118
https_proxy=http://127.0.0.1:8118
ftp_proxy=http://127.0.0.1:8118
export http_proxy
export https_proxy
export ftp_proxy

# 立即生效

source /etc/profile

参考:#

Privoxy 教程

如何用 Privoxy 辅助FQ?

强大的代理调度器代理Privoxy

privoxy——广告过滤和自动代理切换

polipo/privoxy 实现 Linux 系统全局/自动代理

我的上网技巧

Privoxy教程使用详解相关推荐

  1. 支付接口教程,详解支付宝接口(二)

    支付宝的接口向来集成过程都让人觉得比较舒服,只有APP支付相对复杂,但也只是配置上复杂一些,只要清楚原理相信也不是什么难事.下面是以前介绍双钥加密原理的传送门: 支付接口教程特别篇,公钥与私钥,双钥加 ...

  2. python3.6安装教程-python3.6环境安装+pip环境配置教程图文详解

    1.python安装可以跨平台 2.有两个版本2.7和3.6,第三方库适用2.7版,两个版本不兼容 windows安装: 第一种方法官网安装: 在官网下载安装包如图: 图下点击是默认下载32位所以我们 ...

  3. python详细安装教程环境配置-python3.6环境安装+pip环境配置教程图文详解

    1.python安装可以跨平台 2.有两个版本2.7和3.6,第三方库适用2.7版,两个版本不兼容 windows安装: 第一种方法官网安装: 在官网下载安装包如图: 图下点击是默认下载32位所以我们 ...

  4. Redis数据库教程——系统详解学习Redis全过程

    Redis数据库教程--系统详解学习Redis全过程 Redis快速入门:Key-Value存储系统简介 Key-Value存储系统:     Key-Value Store是当下比较流行的话题,尤其 ...

  5. python3.6.0怎么安装pip_python3.6环境安装+pip环境配置教程图文详解

    1.python安装可以跨平台 2.有两个版本2.7和3.6,第三方库适用2.7版,两个版本不兼容 windows安装: 第一种方法官网安装: 在官网下载安装包如图: 图下点击是默认下载32位所以我们 ...

  6. python3.8安装pygame_Python3.8安装Pygame教程步骤详解

    注:因为最近想用一下Python做一些简单小游戏的开发作为项目练手之用,而Pygame模块里面提供了大量的有用的方法和属性.今天我们就在之前安装过PyCharm的基础上,安装Pygame,下面是安装的 ...

  7. mysql安装教程8.0.21安装_mysql8.0.21安装教程图文详解

    1.下载 下载链接 点击download,这里可能需要登录甲骨文的账号,登录一下即可 2.解压 下载好会得到一个安装包 把它解压到一个能找到的目录下即可,我的是这样(my.ini文件你们应该没有) 3 ...

  8. mysql data文件夹恢复_【专注】Zabbix源码安装教程—步骤详解(2)安装并配置mysql...

    四.安装并配置mysql(1) 解压mysql-5.7.26.tar.gz与boost_1_59_0.tar.gz #tar -xvf mysql-5.7.26.tar.gz #tar -xvf bo ...

  9. window 程序报错 自动重启_好程序员web前端教程之详解JavaScript严格模式

    好程序员web前端教程之详解JavaScript严格模式,严格模式(Strict mode)是由ECMA-262规范定义的新兴JavaScript标准,发布于2009年12月第五版.旨在改善错误检查功 ...

  10. php+mysql案例含源码_【专注】Zabbix源码安装教程—步骤详解(1)安装前准备

    一.实验环境准备 Rhel 7.6 x86_64(server) 192.168.163.72 Rhel 6.5 x86_64(agent) 192.168.163.61 均已配置操作安装光盘为YUM ...

最新文章

  1. LeetCode实战:排序链表
  2. 论文笔记:HKMF-T: Recover From Blackouts in TaggedTime Series With Hankel Matrix Factorization
  3. html页面获取服务器时间,[html]定时获取服务器时间和本地时间
  4. 【NLP】GloVe的Python实现
  5. jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国
  6. SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1b=2c=3d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外...
  7. Python程序设计学习笔记-语句与格式化输出
  8. 挑战程序设计竞赛题解目录
  9. MySQL——几种常见的嵌套查询
  10. python 缩放图片_python实现按长宽比缩放图片
  11. 安卓物联网APP开发——基于编辑物联网平台环境实现远程控制数据传输
  12. 不要告诉我你懂margin
  13. JAVA RxJava 2.x
  14. 千锋培训的python怎么样学习内容有什么?
  15. 学计算机做人需要有什么基础,计算机专业学生装逼入门(文/郭策)
  16. latex 中画✔(打勾)
  17. builder x/hbuilder下载和安装mac版本
  18. python电化学cv曲线怎么画_我如何使用参数自动绘制翼型
  19. 《游戏学习》JAVA版坦克大战课程设计及源码
  20. 豆瓣9.4,《Python+Excel》,让你飞速学会数据分析

热门文章

  1. 结构建模设计——Solidworks 2021SP5稳定版软件安装详细教程(安装踩坑记录全流程总结)
  2. 2021华为软挑赛题_思路分析——实时更新,做多少更多少(七)
  3. 2021华为软挑赛题_思路分析——实时更新,做多少更多少(五)
  4. matlab和pspice,电力电子电路仿真---MATLAB和PSpice应用
  5. python 实现代码雨(转载)
  6. SQL获得当前时间函数(MySQL)
  7. Java实现批量ping IP地址
  8. CCNA零基础视频教程本人原创 下载地址
  9. 操作系统概念第六章部分作业题答案
  10. WPS入门StackPanel与Grid