很多读者可能曾经遇到这样的情况:为什么我点击的是个正常的链接,跳转到的网页却是宿迁掼蛋或者澳门赌场?为什么我访问正常的网站,右下角却经常出现一刀9999级或者XX聊天室的弹窗?有些人会抱怨网站,不过有些时候你可能还真的错怪网站了,如果网站是无辜的,那你很有可能遭到网络流量劫持了。那么今天,IT之家就和大家聊聊网络流量劫持那些事。
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仅供参考,你可以根据个人喜好挑选适合你的。
责任编辑:王良地