HTTP代理实现请求报文的拦截与篡改2--功能介绍+源码下载

  返回目录  

  思路有了,下面就是来实现它了,在这里,我们采用我们熟悉的C#来实现,C#下有一个完整的WEB DEBUGGER(含代理服务器方式实现的HTTP请求拦截与篡改功能)的实现--Fiddler,Fiddler是一个免费软件,所以并没有对源码进行混淆和加密,反编译后的代码可读性也很好。我们后面的所有代码,主要就是参考他的代码来实现,当然他实现的功能非常强大,我们仅仅是演示一下HTTP请求与拦截技术的实现,所以没有必要完整的去模拟它,故而我们模拟的原则是,手动的一个类一个类一个方法一个方法的进行模拟,在模拟的过程中能简化的尽量简化,有些思路不太清楚,或者的确是重复造轮子的部分,就直接使用他的代码,以后如果有时间,再对其源码进行一次详细的分析与研究,这次有些部分我们就不再深究了。

  首先,我们来实现一个代理服务器,完成HTTP请求的拦截                      

先来看一看实现后的样子,这样有助于理解代码 。   

编译后的程序,我拷贝了一份放在了附录的根目录下的Build文件夹里 

build文件夹里找到这个图标,双击启动   

需要.net framework 4.0 。 没有的到微软官网下载 

http://www.microsoft.com/zh-cn/download/details.aspx?id=17718   

启动后如图所示       

 

这时候,我们打开浏览器,随便CHROME,FIREFOX还是IE然后输入  www.baidu.com  回车(Enter) 

看一下我们的主界面,没有任何反应,这是正常的,因为我们还没有设置代理服务器。 :)  

任何浏览器,都有设置代理服务器的地方,鉴于天朝 IE的使用率,这里讲IE里的操作步骤。         

打开IE--工具--Internet选项--连接--局域网设置   

 

勾上(跳过本地地址的代理服务器不要勾选),然后点高级        

 

  依照上图进行设置,HTTPSFTP等不要设置(本代理服务器未对这两种协议进行处理),IP127.0.0.1 表示代理服务器是在本机,监听端口设成8888,目前代码里写死了。   

  在IE里设置完后,我们会发现其它浏览器也自动开始使用代理服务器了,这是因为设置代理服务器是系统的功能,每个浏览器打开的都是同一个设置代理服务器的程序

  看到这里,大家是不是发现了什么问题。我们不是以后每次要拦截的时候,都要手动设置一次代理服务器吧,-_-!!! ,当然,这是不可能的,后面我们将在篡改一节的开始,就实现一个自动设置代理服务器的功能,这样,当我们的代理服务器启动的时候,就自动将本机的代理服务器设置成自己,退出的时候,再恢复成原样,这样就不再需要向上面一样手动设置了。      

 

OKAY , 一切就绪了,这时候,再次在浏览器里输入网址: http://www.baidu.com 

看下主界面  

看左边,会话已经被监听到了。我们点第一栏的编号为1的会话,界面如下:

 

看右边  

先看上面的文本框,这里显示出了HTTP请求的头信息。

再看下面的文本框,这里也显示出了HTTP响应的头信息。

从这两张图里我们可以清楚看到,所有的请求和响应信息都已经被我们监听到了。

再看一下浏览器,网页也正常的打开了,速度也不是很慢,看来,我们的代理服务器算是正常的运转起来了 :)  。      

             

附录(源码+程序)                

posted @ 2013-03-10 17:05  乔伟2024  阅读(9017)  评论(4编辑  收藏  举报