HTTP请求拦截技术
我们采用C#来实现,C#下有一个完整的WEB DEBUGGER(含代理服务器方式实现的HTTP请求拦截与篡改功能)--Fiddler,Fiddler是一个免费软件,所以并没有对源码进行混淆和加密,反编译后的代码可读性也很好。我们后面的所有代码,主要就是参考他的代码来实现,当然他实现的功能非常强大,我们仅仅是演示一下HTTP请求与拦截技术的实现,所以没有必要完整的去模拟它,故而我们模拟的原则是,手动的一个类一个类一个方法一个方法的进行模拟,在模拟的过程中能简化的尽量简化,有些思路不太清楚,或者的确是重复造轮子的部分,就直接使用他的代码,以后如果有时间,再对其源码进行一次详细的分析与研究,这次有些部分我们就不再深究了。
操作方法
- 01
首先,我们来实现一个代理服务器,完成HTTP请求的拦截,先来看一看实现后的样子,这样有助于理解代码。编译后的程序,我拷贝了一份放在了附录的根目录下的Build文件夹里,在build文件夹里找到这个(图1),双击启动需要.net framework 4.0 没有的到微软官网下载。 启动后如图所示:(图2)
- 02
这时候,我们打开浏览器,随便CHROME,FIREFOX还是IE,然后输入 training.zhunxin.net 回车(Enter) 。 看一下我们的主界面,没有任何反应,这是正常的,因为我们还没有设置代理服务器。 :) 任何浏览器,都有设置代理服务器的地方,鉴于天朝 IE的使用率,这里讲IE里的操作步骤。 打开IE--工具--Internet选项--连接--局域网设置。(图1) 勾上(跳过本地地址的代理服务器不要勾选),然后点高级。(图2) HTTPS和FTP等不要设置(本代理服务器未对这两种协议进行处理),IP是127.0.0.1表示代理服务器是在本机,监听端口设成8888,目前代码里写死了。
- 03
在IE里设置完后,我们会发现其它浏览器也自动开始使用代理服务器了,这是因为设置代理服务器是系统的功能,每个浏览器打开的都是同一个设置代理服务器的程序 看到这里,大家是不是发现了什么问题。我们不是以后每次要拦截的时候,都要手动设置一次代理服务器吧,-_-!!! ,当然,这是不可能的,后面我们将在篡改一节的开始,就实现一个自动设置代理服务器的功能,这样,当我们的代理服务器启动的时候,就自动将本机的代理服务器设置成自己,退出的时候,再恢复成原样,这样就不再需要向上面一样手动设置了。 OKAY, 一切就绪了,这时候,再次在浏览器里输入网址:training.zhunxin.net。 看下主界面:(图1) 看左边,会话已经被监听到了。我们点第一栏的编号为1的会话,界面如下:(图2) 看右边,先看上面的文本框,这里显示出了HTTP请求的头信息,再看下面的文本框,这里也显示出了HTTP响应的头信息。 从这两张图里我们可以清楚看到,所有的请求和响应信息都已经被我们监听到了。 再看一下浏览器,网页也正常的打开了,速度也不是很慢,看来,我们的代理服务器算是正常的运转起来了。