还网页一个清净

很多人在选购电脑时,都有这样的想法:我的电脑只是用来上上网,看新闻,看股票,不需要性能太强大,够用就好。其实这样的想法在前几年也许还算正确,但今年,随着富客户端应用的普及,已经越来越跟不上形式了。

背景介绍

在万维网(WWW)刚面世的时候,当时的网络带宽普遍都不是很高,因此网页的内容和形式都很简单,有时候往往包含一两张图片的文件就需要下载很长时间。

在当时,万维网上最主要的都是静态网页,也就是内容都确定,不会有变化的网页。在浏览静态网页的时候,浏览器首先向网页服务器发出请求,其中包含要浏览的页面的地址。而服务器在收到请求后,将对应的页面代码(HTML语言编写的代码居多)发送给浏览器软件,浏览器负责将HTML代码解析为包含各种格式(例如字体、字号、行距、表格)的网页内容,这个过程通常叫做渲染。

可见,在静态网页时代,浏览网页时,浏览器进行的最主要的工作就是在接到网页对应的HTML代码后,将代码转换为网页内容。这个过程对于客户端的硬件性能要求并不是很高。

但技术的发展总是持续的,宽带网络的用户越来越多,网页的设计人员也开始与时俱进,在自己设计的网页中包含各种复杂的内容。虽然网页中包含的数据量开始增大,但网络带宽的增长完全可以将这些增加的数据抵消掉,不会对网页内容的加载时间产生太大影响。然而新增的各种内容对于网页代码的渲染则成了越来越重的负担。

现在的网页,为了实现各种功能,往往会包含更多需要在客户端浏览器上执行的内容。甚至某些技术为了降低网络服务器的硬件负荷,或者实现更短的页面加载时间,往往需要将以往需要由服务器进行的操作直接传输给客户端浏览器,由浏览器来执行。

在访问某些比较复杂的页面时,网页中可能包含了大量的脚本,这些脚本可以理解为由浏览器运行的”小程序”,浏览器需要运行网页上的所有脚本,借以提供各种功能。例如对于某些网站的注册,注册页面可能会检测我们输入的某些信息是否符合规则(例如输入的是否是有效的电子邮件地址)。类似这样的功能可能就是由脚本实现的。在相关的脚本中,包含了正确电子邮件地址的各种特征,而在给文本框中输入自己的邮件地址时,浏览器会运行这个脚本,并将输入的内容和预定义的特征进行匹配。如果满足所有特征,则可以继续注册;如果不满足某些或全部特征,则会要求修改。这个过程听起来很简单,但如果网页上包含了数十个脚本,而我们需要同时打开多个网页,情况就很严峻了。

除了脚本,还有各种框架需要处理。框架可以理解为嵌入到网页内部的另外一个网页。例如某些论坛可能采取了左右两列结构,左侧列出了帖子列表,而单击链接后可以在右侧显示帖子内容。这种页面就应用了框架,同时至少包含两个页面(对应左右侧内容)。为了实现不同的目的,一个网页中可能会同时包含了多个框架页面,这种情况就等于同时打开了多个网页。

另外对电脑性能影响最严重的可能就是Flash动画了。Flash动画的主要用途是增强网页的交互性,同时最近几年也广泛出现在大量在线视频网站或者娱乐网站上。Flash动画中的内容都是矢量化的,也就是说,Flash动画内保存的实际上是对于内容的定义,而非内容本身。例如,如果要使用矢量的方式定义一个圆形,只需要定义圆心的坐标,以及圆的半径,根据这两个条件就可以把圆”画”出来。因此对于Flash 动画,我们也可以将其理解为需要”画”出来的内容,如果网页上包含了大量Flash动画,自然会对速度有较大影响。

上文列出的内容可能是网页中最容易影响到客户端性能的因素,如果将这些内容用于网页上的广告,对我们又有什么影响?

对于绝大部分网站,都是用免费的方式提供信息,但网站的运营需要不少资金,因此通过投放广告的方式达到收支平衡甚至盈利,这些都无可厚非。然而有时候问题往往并不是这么简单。首先,广告内容大幅度增加了网页的体积,原本10秒钟就可以下载完毕的网页,可能因为加载了太多广告内容,30秒都下载不完。有消息称很多ISP都在考虑按照流量收费,如果真的实施这样的计费方式,真的要当心钱包了。

其次,大量网页广告的使用不仅会延长网页的加载时间,而且会对电脑的性能产生很大的影响。例如很多网站往往会投放大量广告,有时候甚至广告的内容比真正感兴趣的内容还要多。大量的广告不仅会占用宝贵的处理器和内存资源,甚至有可能导致整个系统的响应速度都变慢。

最后,很多广告为了让人点击,往往会使用具有诱惑性字眼的内容,甚至会打色情擦边球。单纯从内容上来看,就应该让这样的广告从我们的视野中消失。

其实广告内容普通的网页都一样,就是保存在服务器上的一个或一些文件。只不过我们需要针对具体的广告类型采取不同的方式,同时在这个过程中还需要考虑到网站的广告投放方式。

目前很多网站都采取了专门的广告投放商,例如Google的ADSense功能,该功能实际上只需要在希望给网页上添加广告的位置添加一个脚本,这样在访问网页的时候,浏览器下载并执行脚本,然后通过脚本下载必要的广告内容并显示。这种情况下,只要知道了脚本的具体位置,然后过滤这些位置,即可实现广告内容的过滤。

有些网站可能使用自己的服务器来投放广告。例如在网站服务器上开辟一个专门的广告目录,将广告内容放在这样的目录下,并将文件的完整地址插入到网页中。在打开这样的网页时,浏览器会根据网页源文件中的定义到指定的位置下载并显示广告内容。

简单来看,广告过滤的思路很简单:判断广告地址,然后过滤不需要的地址。不过具体操作起来可能会比较复杂。

准备工作

本文会介绍在Firefox和IE这两个浏览器中过滤广告的方法,因此请根据自己的实际需要下载下列内容:

对于Firefox浏览器,本文以2.0.0.14版为例进行介绍:

http://www.getfirefox.com

另外在Firefox下有很多免费的附加软件可用于广告过滤,本文主要介绍两个:

Adblock Plus:https://addons.mozilla.org/zh-CN/firefox/addon/1865

NoScript:https://addons.mozilla.org/zh-CN/firefox/addon/722

对于IE,因为IE本身对广告过滤功能的支持有限,因此本文介绍的内容可以适合绝大部分版本的IE浏览器。

Firefox下的广告过滤

对于通过脚本产生的广告,在Firefox中可以借助NoScript附加软件进行过滤。在安装这个附加软件后,默认情况下Firefox将不执行网页上包含的所有脚本,这样所有需要通过脚本显示的广告都会无法显示,甚至不会被下载。但同时,网页上还有很多正当功能是需要通过脚本实现的,因此这样做也会导致网页内容的损失。因此在过滤了脚本后,NoScript附加软件会在浏览器窗口底部显示一个提示按钮,告诉我们有来自哪些域名的脚本被过滤掉,我们可以通过这个按钮选择性地启用对某些脚本的运行,或者永远禁止某些脚本的运行。

对于通过文件形式嵌入到网页中的广告,则可以使用Adblock Plus附加软件进行过滤。这个软件可以对网页的内容进行分析,将组成网页的所有需要下载的元素都列出来,这样我们就可以根据文件路径的规律禁用某些域名或者路径,被过滤的可以是图形文件、Flash文件、脚本、框架等。

使用NoScript过滤脚本

在安装好NoScript,并重启动Firefox后,打开一个自己经常访问的网站。如果当前页面下包含脚本,那么Firefox主窗口底部就会出现一个黄色的信息栏,告诉我们有内容被阻止,而在信息栏的右侧有一个”选项”按钮,单击后可以看到所有可用选项(图1)。

图1,被NoScript阻止的网页内容

例如在上图中可以看到,一共有77个脚本被阻止(一个简单的网站首页上就包含了77个脚本,谁还敢说浏览网页不需要强大的CPU),有0个对象被阻止。而在选项菜单中,则列出了这些脚本文件对应位置的域名。

这时候请检查打开的网页内容是否正常。例如,如果网页内容都可以显示,图片也都显示了出来,同时所有链接都可以打开,那么很明显,所有这些脚本都不是必要的,为了保证安全性以及速度,完全可以将其全部禁用。这时候请用鼠标右键指向选项菜单中的”不可信任”,并从随后出现的弹出菜单中依次单击”标记xxx为不可信”,这样以后所有来自该域名的脚本都会被视作是不可信的,同时也不会被执行。

如果发现在阻止了所有脚本后,网页的内容显示有问题,或者某些功能无法实现,那么我们可能需要启用其中的某些脚本。这时候请首先考虑启用和要访问的网页在同一个域名下的脚本,因为通常情况下,用于实现网页正常功能的脚本都会和网页文件放在一起,而不在一起的往往都是广告内容。这时候可以直接在选项菜单下单击”允许xxx”命令将其启用。

还是以上图为例,根据上图的显示,共拦截了77个脚本,这些脚本分别位于5个不同的域名下。这时候往往需要根据自己的经验来判断不同的域名分别有什么作用。例如上图中的”sina.com.cn”域名,这个域名和我们查看的页面所在域名,因此可以判断,该域名下的脚本往往都是为了保证网页功能的使用(但偶尔也有例外,不过可以使用Adblock Plus解决),可以将其启用。”imworldwide.com”这是一个陌生的域名,不知道是做什么用的,这时候可以试试看先将其禁止,如果网页上遇到问题后在考虑是否需要将其启用。”sinaimg.cn”这个域名中出现了”img”的字样,一般这个缩写都是代表图像,因此这可能是一个专门的用于保存网页图片或广告图片的服务器,单凭域名还无法判断,因此也可以考虑先将其禁用。”sinajs.cn”这个域名中包含”js”字样(JavaScript的缩写,一般网页脚本都是js脚本),这表示该服务器可能是专门用于保存网页上的脚本文件的,因此也可以先将其禁用。至于最后一个”allyes.com”,请将网页拉到底部,随后可以看到一个”Powered By Allyes好耶广告网络”的标志,看来这个域名是一个广告发布商的,因此完全可以放心禁用。

除了彻底禁用某个域名,或者直接允许某个域名外,还可以使用”临时允许”功能,这样本次访问网页时对应域名下的脚本会被允许,但下次访问的时候依然会询问。

另外有时候可能还有这样的情况,在上文的操作中,如果允许了某些脚本,并禁用了某些脚本,刷新网页后,NoScript可能会报告又拦截了新的脚本,这些新的脚本通常都是之前允许的脚本带来的,因此这时候可以再次使用”选项”菜单对这些新出现的脚本进行配置。

在配置完毕后,如果发现自己无意中禁用了某些需要的脚本,导致网页显示出现问题,或者需要的功能无法使用,这时候也很好解决。直接单击Firefox窗口底部的NoScript图标(一个大大的”S”形图标,但取决于安装的其他附加软件,该图标的位置可能会有所不同),随后会直接弹出选项菜单(图2)。

图2,启用被禁用的脚本

因为我们的目的是将之前被禁用的脚本重新启用,因此可以直接指向”不可信任”选项,在弹出的菜单中根据判断启用某个域名下的脚本。这时候建议使用”临时允许”命令,并在网页自动刷新之后判断自己需要的功能是否已经恢复正常。如果已经正常,则可以将之前临时允许的内容设置成总是允许;如果依然不正常,则可以对其他域名进行”临时允许”操作,并再次判断,直到需要的网页功能可以正常使用。

在配置NoScript的时候需要注意,这个软件的配置选项是全局性的,例如,在网站A上,我们设置了总是允许域名C的脚本;而如果网站B也包含来自域名C的脚本,那么在访问网站B时,NoScript并不会询问,而是直接按照在网站A上的设置采取对应的操作。

使用Adblock Plus过滤更多内容

在安装好Adblock Plus并重启动Firefox后,首先可以看到一个欢迎界面,在这个界面上可以根据不同的国家和地区订阅需要的规则列表。因此大家完全可以根据喜好从中选择一种要使用的规则并继续。

安装这个附加软件后,在网页上单击鼠标右键,右键菜单中就会提供相应的过滤选项(图3)。一般来说,可用的选项包括”过滤图片”和”过滤帧”,而”帧”就是上文中提到的”框架”。

图3,过滤网页上的内容

选择了对应的过滤选项后,可以看到图4所示的界面,在这里可以看到所选对象的完整地址,并决定是否使用通配符创建规则。例如在图4,就是对某个对象选择了”过滤帧”命令后打开的,这时候可以直接按下回车键将地址添加为规则,然后单击”确定”关闭窗口,但难道你打算针对网页上所有不需要的帧都进行同样的操作吗?其实这里还有窍门。

图4,添加规则

一般情况下,有条理的网页设计师在设计网页的时候都会遵循一定的规律,例如,假设某个网站的域名是”site.com”,那么这个网站提供的电子邮件服务的服务器可能就是”mail.site.com”,同理,这个网站上的所有广告内容可能都会放在”ad.site.com”或”site.com/ad/”这样的目录下,因此我们可以使用通配符对进行更大范围的匹配。

还是以上图为例来说,在显示的目标框架的地址中,有”iframe”的字样,而这正是网页嵌入框架的英文称呼,因此我们完全可以将该字样后面的内容用一个”*”代替,这样”/iframe/”目录下的所有文件,包括所有子文件夹下的文件,都将被过滤掉。

对于广告内容的保存位置,有时候是很明显的,例如”adimg”、”guanggao”或”gg”之类的字眼,但有时也可能是一些看似毫无规律可循的名称,这时候依然有办法解决。安装Adblock Plus后,Firefox窗口右上角搜索框的右侧会出现一个红底色的”ABP”按钮,请单击,并打开图5所示的本页可过滤的项目列表。

图5,可过滤内容列表

首先请单击列表右侧的”类型”一栏,让所有项目根据不同的类型进行排列,然后就可以针对具体的内容进行设置。对于要设置的内容,用鼠标右键单击后可以看到包含各种选项的右键菜单,在这里我们可以过滤该内容,或将其添加到白名单。如果要过滤目标内容,随后将看到类似图4所示的窗口,供我们输入要使用的通配符。

对于图片内容,当点击可过滤项目列表中的图片后,列表上方的网页内容会自动滚动到图片所在位置,并且会用突出的方式显示出来。通过这种方法,我们就可以知道某个图片到底是网页上的内容图片,或者是广告图片,并根据判断采取对应的操作。

在列表中,被过滤的内容都会用红色的文字显示,而位于白名单中的内容则会用绿色的文字显示。

IE中的广告过滤

IE的功能很简单,而且不像Firefox有可以实现各种功能的附加软件,因此在IE下过滤广告通常并不好实现,然而很多人因为各种原因,依然需要使用IE。因此本文会简单介绍如何在不借助其他软件的前提下,让IE过滤部分广告。

上文中已经提到过,现在的很多广告都是通过脚本实现的,例如网页中插入了一个脚本,那么在浏览器执行脚本时,就会按照脚本的指示,到指定的服务器上下载并显示广告内容。而最终显示的广告内容可能是图片、文字(框架),或嵌入式对象(Flash)。因此在IE中过滤广告的大致思路就是不运行不需要的脚本。

IE中一直具有安全区域的功能,该功能的作用是将不同的网站划分为不同的信任程度,并对不同信任程度的网站启用不同的安全限制。例如,默认情况下,所有Internet上的网站都会被IE放在”Internet区域”中,并被认为是不可信的。对于该区域中的网站,IE会采取比较高的安全限制,以保证IE本身以及系统的安全。

但要使用默认的安全设置过滤广告还是不够的,还需要进行一些自定义的设置。以IE 7为例,使用IE打开一个Internet上的网站后,双击IE窗口底部状态栏中的”Internet”字样,打开”Internet安全性”对话框的安全选项卡,从顶部的安全区域中选择”Internet”,并单击”自定义级别”按钮,打开图6所示的”安全设置”对话框。

图6,针对Internet区域设置安全选项

因为本文的主题是过滤广告,因此这里只介绍一些用于可以用于过滤广告的选项,包括:

  • 运行ActiveX控件和插件:该选项主要可以决定是否显示网页上的Flash动画(以及其他嵌入式对象),默认的设置是”启用”,只要将其设置为”禁用”,即可禁止显示所有Flash。
  • 二进制和脚本行为:该选项决定了是否运行网页上的二进制文件或脚本,因此需要设置为”禁用”。
  • Java小程序脚本:该选项决定了是否允许运行网页上的JavaScript脚本,将其禁用。
  • 跨域浏览子框架:该选项决定了如果网页上包含框架,而框架内的内容和主页面不在一个域名下的时候是否显示框架内容。对于使用专门的广告发布商的网站,框架内容和主页面的内容自然是不在一个域名下的,因此为了过滤这样的广告,可以将该选项禁用。

设置好上述选项后重启动IE,并再次打开常去的网站,马上就可以发现,几乎所有需要通过脚本产生的广告,以及所有的Flash广告都已经消失了。然而直接插入到网页上的图片广告内容依然存在,无法过滤。另外这种方法有一个最大的不足,无法针对性地过滤某些内容,但同时保留某些内容。例如对于在线视频网站,可能会需要使用Flash显示视频内容,但同时也有Flash的广告,但我们就无法设置让IE过滤掉Flash广告,同时显示Flash动画。

同时如果在采取上述操作后,希望看到某个特定网站上被过滤的内容,可以考虑将网站添加到信任列表中。首先用IE打开目标网站,并单击窗口底部状态栏上的”Internet”字样,打开Internet安全性对话框的安全选项卡,单击选中”可信站点”图标,并单击”站点”按钮,随后可以打开图7所示的可信站点对话框。

图7,添加可信站点

首先反选”对该区域中的所有站点要求服务器验证”选项,然后单击”添加”按钮,即可将当前打开的站点添加到信任列表中。”可信站点”区域内的站点都被应用了另一套安全设置,而默认情况下是不会过滤任何网页内容的。但是要注意,建议只针对自己信任的,或者需要经常访问的站点,才将其添加到可信站点中,因为如果站点中有危险内容,可信站点的默认设置可能会对IE本身甚至操作系统产生影响。

本文简单介绍了如何使用浏览器的附加软件或浏览器本身的功能对网页上的广告内容进行过滤。实际上因为每个网站使用的方法不同,因此在操作过程中,可能会遇到不同的问题。但无论网站采用怎样的广告投放方式,过滤广告的大致思路都是一样的,那就只找到广告位置,然后过滤这些位置。相信经过适当的练习,大家能更好地掌握相关技巧,将不需要的内容拒之门外。

分享:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

发表评论前,先做个简单的数学题吧: * Time limit is exhausted. Please reload CAPTCHA.