一. 前言
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的资源消耗。