《HTTP: The Definitive Guide》中文翻译是《HTTP权威指南》,而且有人推荐,于是就拿来读下。
前三章主要介绍HTTP的基本结构。自从HTTP 0.9版本之后,采用request/response这种框架,也就是我们平时所说的client/server。
request/server都由三部分组成,一是startline,二是header fields,三是entity body(data)。当然二者还是存在差异的,具体内容见书。
我这里想到的问题是,现在互联网上广告越来越多,也越来越猖獗,图片,flash,还有视频开始之前的广告等等。有攻就有防,各类广告屏蔽软件也是层出不穷。有的是以浏览器插件的形式存在的,像adblock在chrome和firefox上都可以用,有的是以应用软件的形式存在的,像adsafe,前一段时间还出了爱奇艺状告adsafe的新闻。
我之前用过手机端的opera浏览器,号称可以省流量,现在用的是小米的系统浏览器,可以智能无图。在读本书之前,以为他们是同样接收了图片数据,只是将其屏蔽,没有显示到屏幕上而已,因为有的屏蔽广告程序,确实存在广告一闪而过的情况,既然这样,他们所宣传的省流量功能也就无从说起。
读了本书之后,我通过看header fields里面不同的header 才知道,client可以告知server自己喜欢接收的数据类型(MIME Multi-purpose internet email extension),自己可以接收的数据类型,自己拒绝接受的数据类型,通过这样的方式,server可以有选择的发送合适的数据。
当然,这是最浅显的方法,这种过滤也是没有差别的,粗暴的,非智能的。像adsafe等过滤广告,是可以判断,比如说真正文章或者正式的图片保留,而一些广告图片则被过滤。用过adsafe的同学可能也用360的流量监控看过,我们原本走浏览器的流量现在都要通过adsafe来走,而且安卓平台的adsafe就是建立了一个VPN,我们的流量也要走adsafe.
我认为,在request header里面设置accept-header来屏蔽图片,是可以做到省流量的,但这样是无差别的屏蔽,是粗暴的,而通过过滤规则,可以更具有针对性。
广告屏蔽分两种,一是加载前阻止,二是加载后隐藏。而加载前阻止也可分为两类,一是阻止下载,二是下载后阻止加载。只有阻止下载的过滤才能实现省流量的目的。
元素过滤能直接清除网页源文件内的相关代码进而阻止相关元素的下载(世界之窗的元素过滤规则甚至能重组网页结构)。而URL过滤并不对网页元素和结构进行改变,他只是针对网页地址阻止其文件下载的一种简单的过滤方式。以上两种过滤方式都属于下载前拦截。hosts屏蔽属于更改域名解析的一种过滤方式,说白一点就是改变相关对象的ip地址让其无法正常的下载,当然这种方式也属于下载前拦截。另外还有一种基于CSS样式表的过滤方式,这种方式并不对相关元素和地址进行拦截,而是下载后对css样式表进行修改(隐藏其中广告元素部分),这就是我们通常说的隐藏式过滤。
这里有过滤规则的写法,可以参考 卡饭论坛-adsafe自定义过滤规则。