说说网络流量劫持那些事

已剪辑自: http://www.ithome.com/html/it/311941.htm

很多读者可能曾经遇到这样的情况:为什么我点击的是个正常的链接,跳转到的网页却是宿迁掼蛋或者澳门赌场?为什么我访问正常的网站,右下角却经常出现一刀9999级或者XX聊天室的弹窗?有些人会抱怨网站,不过有些时候你可能还真的错怪网站了,如果网站是无辜的,那你很有可能遭到网络流量劫持了。那么今天,IT之家就和大家聊聊网络流量劫持那些事。


这个话题说来话长,在开始之前,我们需要了解,我们是如何访问到一个网站的。

互联网的体量十分庞大,栖息在其中的网站多如繁星,每个网站都搭建在服务器或服务器集群中,就像我们拨打电话需要输入电话号码一样,你要访问某个网站,就要拨通那个网站所在的服务器"电话号码",不过网站所用的"电话号码"可不是7到8位的座机号码或者11位的手机号码,而是一串数字的组合,这串数字的组合被称作IP地址,以百度的IPv4地址为例,则是202.108.22.5。

不过,我们要访问的网站实在是太多了,每访问一个网站就要记住一组IP地址,那岂不是太麻烦了。我们仍以拨打电话为例,可能我们的通讯录中有100个联系人,这100个联系人的手机号码我们无法全部记在脑子里,但是当我们想要联系到其中的一个人时,我们可以轻松地打通他的电话而无论我们是否记得他的电话号码。这是因为我们已经将他的电话号码保存在了通讯录里,当我们在通讯录里找到他的名字并拨打他的电话时,他的名字会被我们的手机转换为电话号码,然后手机会将他的电话号码提交给运营商的交换中心。

我们对网站的访问也是如此。有一个系统,可以将便于我们记忆的,由单词、拼音甚至汉字组成的被称作"域名"的一串文字转换为IP地址,这套系统被称作"域名系统",英文写作"Domain Name System",简写则是"DNS"。我们知道,百度的域名是www.baidu.com,当我们将这个域名输入到浏览器的地址栏中并敲下回车时,这个地址会被DNS系统转换为IP地址,你的浏览器便会根据这个IP地址找到并显示该网站内容,DNS系统将域名转换为IP地址的过程则被称为"DNS解析"。

这里,若以我们在手机中拨打电话做类比,域名就相当于联系人的名字,IP地址相当于联系人的手机号码,而DNS系统则相当于手机中的通讯录。

DNS系统存在于DNS服务器上,DNS服务的提供方可能是网络运营商,也可能是第三方企业或组织,由运营商提供的DNS我们称其为"运营商DNS",由第三方企业或组织提供的DNS我们称其为"公共DNS"DNS十分重要,它可以决定我们可以通过域名访问到什么网站,因此,若DNS服务出现了什么差池,那么后果将十分恶劣。

我们已经了解了DNS服务的含义和作用,接下来我们来谈谈DNS劫持。

DNS劫持有善意的,也有恶意的。

我们在访问互联网时,由于地理原因或者其他原因,难免会遇到一些不稳定的、访问速度慢的服务器,为了让我们可以更加快速地浏览互联网上的内容,CDN应运而生。

CDN,全称为Content Delivery Network,翻译成中文便是"内容分发网络",它的作用是接管由用户发出的请求,并将此请求分配给最通畅的缓存服务器,缓存服务器中缓存了你要访问的网站的数据,你的浏览器会优先下载缓存服务器中的这些数据,若此时缓存服务器中没有你要访问的网站的数据,它便会向父层询问,直到回到源服务器访问,等到你下一次访问这个网站时,你就可以直接访问缓存服务器中的数据了,因为缓存服务器在将源服务器中的数据原路送到你的手中时,它还会自己保存一份。

CDN服务本身并不提供DNS解析功能,但它依托于DNS解析,我们可以把CDN对你的请求的接管看作是一种善意的DNS"劫持"。

说完了善意的DNS劫持,我们说说恶意的。

对于一个网站来讲,可观的访问量即意味着可观的收入,有时为了提高访问量,个别网站可能会不择手段,恶意的DNS劫持便有了市场。

若运营商或公共DNS服务的提供方并没有遵循"不作恶"的原则,那么他们很可能是恶意DNS劫持的帮凶。事实上,恶意的DNS劫持已经形成了一条十分完整的产业链,网络运营商或者公共DNS提供方为了获取利益,往往配合他们的这种行为,有时我们明明想访问一个网站,却跳转到了预期之外的另一个网站,那么你就要怀疑,是不是你的DNS提供商有什么问题。

当然了,有时这个锅也不能全让运营商或者公共DNS服务商来背,他们深知DNS的重要性,一些小的手脚他们敢做,大的手脚就不一定了,比如"澳门赌场"这样的网站,我觉得没有哪个运营商或者公共DNS服务商敢接这样的活儿,它的性质太恶劣了,接了这种活儿虽有可能带来现时的利益,但是这对他们口碑的影响却是十分负面而且巨大的。

别以为运营商或者公共DNS提供商拒绝为这种广告主提供服务,他们就一点办法也没有,道高一尺魔高一丈,DNS提供商不帮他们搞流量劫持,那他们搞一个DNS投毒还不是美滋滋。

为了提高访问效率,一般的计算机都有一套DNS缓存机制,当我们访问过某个网站并得到了它的IP之后,下次再访问就可以直接调用计算机本地的DNS缓存而无需再次通过DNS服务器查询,当然了,这个缓存是有时效的,过了有效期之后,再次访问时,还是要先向DNS服务器请求解析。

运营商的DNS服务器很难被攻破,不过计算机本地的DNS缓存就相对容易沦陷了,所谓的DNS投毒,就是通过污染计算机本地的DNS缓存,使用虚假的IP地址信息来替换真实的IP地址信息,以实现DNS劫持,这种劫持效果和运营商的DNS劫持效果差不多。

说完DNS劫持,我们再说说HTTP劫持。

如何判断你遭遇的流量劫持是DNS劫持还是HTTP劫持呢?很简单,如果你要访问的是A网站,点击链接或按下回车后却跳转到了B网站,那么你遇到的就是DNS劫持,如果你要访问的是A网站,跳转到的网站也确实是A网站,但是网页中莫名其妙地出现了"一刀9999级"、"让女人尖叫"、"屠龙宝刀,点击就送"这样的奇怪的弹窗广告或者悬浮广告,那么你遇到的就是HTTP劫持。

所谓的HTTP劫持,是指来自网站的服务器的数据在到达用户的浏览器的半路上时,其数据被劫持并遭到篡改,这种情况一般出现在以http协议传输数据的网站上,因为这些数据是明文传送的。

和DNS劫持一样,虽然你遭遇的流量劫持在很多时候都要网络运营商来背锅,不过有些时候也不尽然。如果你的电脑被恶意软件感染,那么该恶意软件可能会在你浏览器显示的页面当中"加一些料",其达到的效果和运营商的HTTP劫持大致相同,即在你打开的网页上显示弹窗广告或悬浮广告。

说了这么多,我们总要想办法避免流量劫持啊,那么我们应该怎么做呢?

以下是IT之家给大家的建议。

如何避免运营商DNS劫持?

如果你怀疑你的宽带遭到了运营商的DNS劫持,那么我们建议你使用靠谱的公共DNS。公共DNS的提供商有很多,IT之家这里列举一些比较知名的:

  • 阿里DNS:223.5.5.5和233.6.6.6
  • 百度DNS:180.76.76.76
  • DNSPod DNS+119.29.29.29182.254.116.116
  • CNNIC SDNS1.2.4.8210.2.4.8
  • oneDNS112.124.47.27114.215.126.16
  • DNS派电信/移动/铁通101.226.4.6218.30.118.6
  • DNS派联通123.125.81.6140.207198.6
  • Google DNS8.8.8.88.8.4.4
  • OpenDNS208.67.222.222208.67.220.220

以上的DNS仅供参考,你可以根据个人喜好挑选适合你的。

我们既然知道了公共DNS的服务器地址,那么我们如何使用它们呢?很简单,以在Windows10当中设置DNS服务器为阿里DNS为例:

将鼠标光标放在计算机任务栏的网络状态图标上,单击右键,点击打开网络和共享中心;


点击你正在使用的网络连接(小编这里是以太网);


点击窗口下方左侧的属性按钮;


选中Internet协议版本4(TCP/IPv4),点击属性按钮;


把目光移向窗口的下半部分,选择使用下面的DNS服务器地址,将首选DNS服务器的地址设置为223.5.5.5,将备选DNS服务器的地址设置为223.6.6.6.6;


点击窗口下方的确定按钮。

如何避免运营商HTTP劫持?

如果你怀疑你遭遇了运营商的HTTP劫持,你应该立即拨打电话,向该运营商的客服投诉,一般情况下,运营商的客服一定不会承认运营商存在流量劫持的行为,这时你可以和客服这么说:

好的,那我和工信部打电话投诉一下吧。

然后挂掉电话。几分钟以后,虽然运营商的客服依然没有承认他们存在流量劫持的行为,但是此时你打开之前被劫持的网页检查,你会发现HTTP劫持的现象已经不存在了。

如何避免其它起因的DNS劫持或HTTP劫持?

我们在上文中说过,有时,DNS劫持或者HTTP劫持的锅不能全让运营商背,因为一些恶意软件也有可能劫持DNS缓存或网页。这时,你就要养成良好的上网习惯了。

一、从正规的渠道下载软件。IT之家推荐你在该软件的官方网站下载其安装程序,或者使用软媒魔方中的软件管家功能。

二、不连接身份不明的网络,在连接至公共网络时,应关闭网络发现,关闭家庭组,打开Windows防火墙。

三、不上那些可能存在潜在危险的网站,至于哪些网站可能存在潜在危险,IT之家这里不再列举。

对网站站长的建议

如果你是网站站长,那么我们建议你为你的网站启用https安全连接,这样,网站的数据在服务器和用户设备终端之间的传输是加密的,这在一定程度上可以避免HTTP劫持。

写在最后

这篇文章的受众是普通的互联网用户,本着浅显易懂的原则,此文并不涉及高深的互联网专业知识,在一些知识点上,可能本文并没有进行深入探讨。如果你是从事相关行业的专业人员,或者你是互联网专业的高校学生,那么这篇文章可能不适合你。

在撰写这篇文章时,笔者参考了维基百科、技术博客以及论文期刊中的相关知识,若文中有定义错误或者事实错误,还请各位读者不吝赐教。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据