一. 前言

Linux系统下Privoxy实现广告植入的方式很简单。通常的做法,就是将HTTP流量(端口80,8080等)NAT到Privoxy,然后由Privoxy实现流量的过滤与广告的植入。这种方式并没有什么问题。但是,事情过于简单,其应用也往往存在局限性。首先,将端口80/8080的流量NAT到Privoxy,这前提就约束了流量必须是符合HTTP协议的,否则Privoxy无法处理,产生问题;其次,利用Privoxy进行多规则的过滤,将会耗费较多的系统计算资源。
    本文的方案,将流量的识别与过滤功能剥离出Privoxy中,由前文《Linux环境下基于条件约束的HTTP/TCP透明代理和流量牵引方案》所构建的透明代理来实现。透明代理能够对HTTP流量进行准确的分析,并将符合要求的流量牵引至Privoxy。这里的分析,可以基于URI、Host、Cookies等内容的分析,也即标题中提到的“页面相关”。Privoxy的功能则比较简单,对于所有接入流量,在</head>标签后直接植入广告即可,极大降低了Privoxy的资源消耗。

二. 方案

2.1 透明代理提取相关页面

透明代理方案见《Linux环境下基于条件约束的HTTP/TCP透明代理和流量牵引方案》一文,在此不再详述。在本文中,利用其具备Host和URI过滤功能,实现特定页面的代理和流量牵引。

2.2 Privoxy广告植入

2.2.1 安装

本文基于Ubuntu 12.04.5 LTS,使用apt-get install进行安装

#apt-get install privoxy

安装完成后,系统配置文件处于 /etc/privoxy 目录下

2.2.2 配置config

配置无需多改,仅修改两个地方即可。

listen-address  localhost:8118

将localhost改为监听的网卡IP地址

accept-intercepted-requests 0

将其改为1

2.2.3 配置user.filter

删除原有的user.filter文件(将其改名为.bak文件也可以),生成新的user.filter文件,并加入如下内容

FILTER: Add-Tencent-Logo Add Tencent Logo to Specific Page
s|</head>|<div id="indexheadpopup"><imgsrc="http://mat1.gtimg.com/www/images/qq2012/festival/lianghui2016/logo2.png"></div>$0|

意思就是在</head>之后植入<div id="indexheadpopup"><img src="http://mat1.gtimg.com/www/images/qq2012/festival/lianghui2016/logo2.png"></div>广告,这里为了简便,我仅仅链接了腾讯网的Logo图作为广告。

2.2.4 配置user.action

前文已经阐述了,流量的识别和过滤工作,都由透明代理来实现,Privoxy只要专注于广告植入即可。所以,对于所有牵引过来的流量,直接植入即可,极大降低Privoxy的压力。
    删除原有的user.action文件(将其改名为.bak文件也可以),生成新的user.filter文件,并加入如下内容

{+filter{Add-Tencent-Logo}}
.*

修改完成,重新启动Privoxy进程。

/usr/sbin/privoxy --pidfile /var/run/privoxy.pid --user privoxy /etc/privoxy/config

三. 实验验证

实验拓扑如下图所示。

Linux网桥上安装透明代理和Privoxy。实验中,将 www.pku.edu.cn 的根目录请求(GET / HTTP/1.1)代理到本机的Privoxy进程,由Privoxy进程植入广告。
    其它页面,或其它域名的页面请求直接放行,不进行代理和广告植入,从而实现了页面内容相关。这仅仅是个验证的例子,当然,若要是对页面的HTTP GET请求进行细致分析,在页面内容相关方面,可以做得更为深入。

(1).对于www.pku.edu.cn的/根页面请求,页面一开始被植入了广告,可以看到腾讯网的Logo,符合预期。

(2).对于www.pku.edu.cn的/about/index.htm页面请求,并没有被植入广告,符合预期。

(3).对于www.sohu.com的页面请求,并没有被植入广告,符合预期。

Linux下透明代理+Privoxy实现页面相关的广告植入相关推荐

  1. 查看linux的用户 7.2,linux下查看用户登入系统相关命令及编写脚本(七)

    linux下查看用户登入系统相关命令及编写脚本(七) 查看用户登入系统日志 1.w 显示谁登入并正在做什么事 2.who 显示谁登入 -r:显示系统运行级别 3.sleep 睡眠命令(sleep 5 ...

  2. Linux下使用fstatfs/statfs查询系统相关信息

    Linux下使用fstatfs/statfs查询系统相关信息 1.   功能 #include < sys/statfs.h > int statfs(const char *path, ...

  3. linux怎么打开.o文件,Linux下文件I/O操作的相关知识

    Linux文件I/O主要指的是文件的输入输出,很多初学者对文件的I/O不是很了解,Linux文件I/O的操作较多,下面小编就给大家详细介绍下Linux文件I/O. linux 文件I/O教程(1) 一 ...

  4. linux下编写播放DVD的软件相关库

    在标准的x86 linux下已经有相应的软件可以实现DVD播放,比如VLC播放器,之所以要自己写,是因为要用到嵌入式平台的机顶盒上,我们的目的就是要编写一个在机顶盒上可以播放dvd的软件. 使用的库为 ...

  5. Linux下设置代理方法

    **禁网以后,得设置代理才能访问外网.虚拟机不能访问外网一直没找到正确的解决方法,折腾了好几天,终于让我找到了解决方法. 参考链接:虚拟机 centos设置代理上网 1.yum代理设置 可以通过命令v ...

  6. linux下使用代理连接外网

    引言: 论坛中有一篇博客描述了linux代理的设置,出于好奇我也设置了一把.因为那篇文章描述比较简洁,所以我把详细的步骤贴出来,希望对大家有帮助. [b] 场景使用:[/b] 内网中的linux连不了 ...

  7. Linux 实现透明代理(使用开源项目 tproxy-example)

    一.透明代理概述 根据百度百科的资料:透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改变你的 request fields(报文),并会传送真实IP,多用于路由器的NAT转发中. 透明代理 ...

  8. linux下的IO重定向与管道相关的知识简析

    一.bash重定向部分简单翻译 1.1.bash手册关于重定向短短的注解(因为过于经典,所以摘录出来) 我的翻译要开始毁经典啦... 参考: https://blog.csdn.net/spch200 ...

  9. linux下二级代理软件desproxy教程

    desproxy的功能就是一级代理+端口映射 对本地指定的一个端口的请求会经过代理送到远程的主机 远程主机是代理服务器的话就实现了二级代理的功能:) 怎样获得Desproxy? http://desp ...

最新文章

  1. nginx rewrite和根据url参数location
  2. 【BZOJ】1034: [ZJOI2008]泡泡堂BNB(贪心)
  3. 开发自己的 chart - 每天5分钟玩转 Docker 容器技术(167)
  4. svg画css,CSS vs. SVG:图形文本的效果
  5. 2016北京集训测试赛(十三) Problem B: 网络战争
  6. PHP 中数组获取不到元素
  7. Intel® Math Kernel Library (Intel® MKL)
  8. ant接口用什么天线_天线接口 一个叫SMA 另一个叫TNC
  9. 项目-基于SSM的订餐管理系统
  10. 网站备案必须有服务器吗,域名备案必须有服务器吗
  11. 损失函数MSE和MAE的区别以及如何选择
  12. 小尺寸 GPS 北斗 GNSS 全向内置天线方案 CA-G01 CrossAir贴片天线
  13. 微信小程序css篇----字体(Font)
  14. 整流十五—网侧低频电流谐波抑制方法及其稳定性分析
  15. Excel散点图 如何用平滑线 连接 不连续的点
  16. 字体反爬虫处理猫眼(数字)
  17. python把.CSV文件转换成.JSON格式文件并格式化储存
  18. python全栈指的是什么_python全栈指的是什么意思
  19. 超导磁通量子计算机,超导量子比特系统在量子信息中的应用
  20. 搭建gataway鉴权流程

热门文章

  1. MediaCoder CUDA H.264 编码器测试报告
  2. SIMPLIS仿真软件5-仿真电路规则
  3. 【北航软院】系统编程学习笔记
  4. AutoJs学习-文字转语音QQ发送
  5. 怎样在Mathtype中输入空格及常用快捷键
  6. Java从小白到大牛第4篇项目实战1——PetStore宠物商店-关东升-专题视频课程
  7. 车辆检测算法matlab,机器学习实践 - 车辆检测
  8. VISO导出高清图版
  9. 重庆海天软件工程学院的WINFORM实训项目-抽奖系统
  10. 在Windows 2008/2012/2016 上安装 Intel I217-V/I218-V网卡驱动