最近了解了一下运营商流量劫持,文章很多,但感觉很零碎,在这里把众多文章内容串一下,清晰一下思路。下面多是引用,引文在附录里,就不一一标识了。对于传统的流量劫持请见引文1,这里不作介绍。
运营商流量劫持主要包括四种: DNS劫持、HTTP重定向、TCP注入、网络直投
1. DNS劫持
此方式太过暴露,运营商都放弃了这种方式,原理不再赘述。
2. HTTP重定向
a. 劫持原理
利用HTTP重定向技术,运营商可以向Web客户端注入伪造的HTTP响应信息。HTTP交换是从客户端发送HTTP请求之后,服务器会发送一个带有状态码的HTTP响应信息。一个HTTP客户端在发送了一个请求信息之后,只能接收一个HTTP响应信息。当用户接收到一个伪造的HTTP响应信息时,TCP层接收其中的数据,此时便成功劫持。
b. HTTP重定向分类
HTTP 的重定向(301,302,303,307)
301 : 永久重定向,告诉客户端以后应从新地址访问。
302 : 请求资源将会暂时驻留在另一个URI之中。这种类型的响应信息通常会包含一个位置header域,并携带有不同的URI信息。但是HTTP 1.1 有303 和307作为详细的补充,其实是对302的细化。
303:对于POST请求,它表示请求已经被处理,客户端可以接着使用GET方法去请求Location里的URI。
307:对于POST请求,表示请求还没有被处理,客户端应该向Location里的URI重新发起POST请求。
c. HTTP重定向示例:
HTTP重定向就是通过301和302两种状态码来实现的。
302是临时重定向,表示被访问页面因为各种需要被临时跳转到其他页面。具体的例子是访问 http://xxx.net/xxx.php/?id=zhangsan
< HTTP/1.1 302 Found
< Date: Fri, 16 Jul 2010 11:26:48 GMT
< Server: Apache