DNS 劫持与污染在上文中已经有过较为详细的讨论,这里再说说 HTTP 劫持(也叫网页劫持吧),以及与 DNS 劫持的区别。其实两者的区别是非常明显的,十分易于辨别。DNS劫持会整个跳转网页不同,HTTP 劫持往往只是在页面上添加一个小窗,但这小窗并不属于网页本身的广告,有时候无论你访问什么网页,这小窗都不会消失,甚是烦人。

  大家平时上网的时候应该遇到过,就是在不管打开什么网页,下方角落里有时候会出现一些小广告,有时候这些广告,不是访问的站点为了盈利而投放的广告,而是第三方的运营商提供的,这就是 HTTP 劫持。

  HTTP 劫持的原理就是在服务器和用户之间的信息传输之中添油加醋,这是由于信息没有被加密而造成的。用户请求了网站服务器,服务器返还网页给用户,在传输过程中就给了他人加料的机会。就算DNS服务器可靠,也无法防止HTTP劫持。

HTTP 劫持

HTTP 劫持的实现原理

  一般来说 HTTP劫持主要通过下面几个步骤来做:
标识HTTP连接。在天上飞的很多连接中,有许多种协议,第一步做的就是在TCP连接中,找出应用层采用了HTTP协议的连接,进行标识;
篡改HTTP响应体,可以通过网关来获取数据包进行内容的篡改;
抢先回包,将篡改后的数据包抢先正常站点返回的数据包先到达用户侧,这样后面正常的数据包在到达之后会被直接丢弃。

与 DNS 劫持的区别举例

DNS劫持的现象:你输入的网址是http://www.google.com,出来的是百度的页面;
HTTP劫持的现象:你打开的是知乎的页面,右下角弹出唐老师的不孕不育广告(2018年更:右下角弹出:偶系渣渣辉)。

DNS劫持就是你想去存钱运营商却把你拉到了劫匪手中;
而HTTP劫持就是你从服务器买了一包零食电信给你放了一坨屎,横竖都很恶心人。

DNS劫持是你想去医院的时候,把你给丢到火车站;
HTTP劫持是你去医院的时候,有人半途上车给你塞小广告。

DNS劫持:在DNS服务器中,将www.xxx.com的域名对应的IP地址进行了变化。你解析出来的域名对应的IP,在劫持前后不一样;
HTTP劫持:你DNS解析的域名的IP地址不变。在和网站交互过程中的劫持了你的请求。在网站发给你信息前就给你返回了请求。

HTTP 劫持解决方法

  对付HTTP劫持,最好的方法之一,就是使用HTTPS来连接网页。而使用HTTPS,在传输数据过程中,数据是加密的。就如同原先开车被人在车窗塞小广告,现在把窗都关紧,他人自然再也无法插足。

  HTTPS不仅可以防止HTTP劫持,也能够较好地防止DNS劫持,这是由于HTTPS的安全是由SSL来保证的,需要正确的证书,连接才会成立。如果DNS把域名解析到了不对应的IP,是无法通过证书认证的,连接会被终止。实际上,现在已经有越来越多的网站支持HTTPS,但为了兼容等问题,不少网站也同时提供HTTP连接,例如著名的视频网站哔哩哔哩。主动使用HTTPS来进行连接,不但有效防止网页劫持,还能够保护隐私。

  此外,还可以向运营商客服打电话申诉,要求他们撤除,不行的话向国家工信部投诉。