如何监控本机发出的所有HTTP请求

15 views
Skip to first unread message

吴道远

unread,
Apr 13, 2010, 10:45:37 PM4/13/10
to pyth...@googlegroups.com, ph4...@googlegroups.com, cisrg...@googlegroups.com
Hi. 这学期的软件工程课要团队做一个project,我想了这样一个题目,大概的需求如下:
----
现在人人网、Twitter、微博很流行,但是也影响了学生的时间管理。想做一个HTTP数据包监控的程序,能够统计每天上了什么网,上了多少时间。如果有的网上的太多了,就自己忏悔去吧~~

最主要的是能够控制HTTP请求的发出,比如设定规则:我下面半个小时不上校内。然后一旦用户还是想在浏览器打入renren.com,则我们的程序主动把它截获下来,不让它发出。
----

查阅了一下,监控HTTP数据包的方法大概如下:(windows平台)
1. 使用raw socket:
我不太清楚这个能够控制HTTP数据包的行为?就是不让它发出。据说是原始套接字只能监听但不能实现拦截。

2. 使用WinPcap:
拿到IP数据包,然后自己解析包结构,如果是HTTP请求,且有规则中的url,则截获下来。

3. 使用代理服务器的方式。
Fiddler这个软件就是采用的这种方式,而且做得很好,大概的原理图如下:
Fiddler.png
不知道上面三种方法叙述得是否正确?对于这个不熟,计算机网络还在看的。

1、2两种方法比较担心性能问题,因为我只想知道HTTP请求中的url啊,而现在却要自己解包。
但是第3种感觉实现起来的工作量比较大,相当于要自己做个代理服务器了,而且对于FireFox这种不用IE代理的还要特殊处理,不够通用。

大家觉得我应该采用哪种方法呢?!或者其他思路上的建议呢?谢谢:)

顺便问下:
1. Python中有没有分析HTTP数据包的库?
2. 有没有类似这种需求的开源软件?
Fiddler.png

Bruce(7all) Song

unread,
Apr 14, 2010, 1:27:11 AM4/14/10
to cisrg...@googlegroups.com
个人建议:
从你这个项目本身来看,使用HTTP Proxy的方式就可以完成项目框架,
从性能或使用角度考虑,HTTP Proxy也完全满足你的要求。
我最近也在做一个类似你这个思路的小工具,用于搜集和分析HTTP数
据,这个小工具使用Python编写,在Python里面有两个模块是可以完
成你的基本想法。
另外,还有一个使用Python写的代理服务器开源项目,也可做参考。

希望开发完毕后共享下你的软件给大伙试用;)

--
Bruce Song
岂能尽如人意,但求无愧我心。

吴道远

unread,
Apr 14, 2010, 7:40:44 AM4/14/10
to cisrg...@googlegroups.com
好的,没问题,非常感谢7all大哥:)

2010/4/14 Bruce(7all) Song <cis...@gmail.com>
--
您收到此邮件是因为您订阅了 Google 网上论坛的“CISRG Group”论坛。
要向此网上论坛发帖,请发送电子邮件至 cisrg...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 cisrg-group...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/cisrg-group?hl=zh-CN 访问此网上论坛。

Bruce(7all) Song

unread,
Apr 14, 2010, 9:15:18 AM4/14/10
to cisrg...@googlegroups.com
在 2010年4月14日 下午7:40,吴道远 <clz...@gmail.com> 写道:
> 好的,没问题,非常感谢7all大哥:)
>
不用客气:) 有机会大家多讨论技术问题。

吴道远

unread,
Apr 14, 2010, 11:05:55 PM4/14/10
to cisrg...@googlegroups.com
还有,那个WinPcap是不是只有监控的功能,没有截获的功能啊?

2010/4/14 Bruce(7all) Song <cis...@gmail.com>

Bruce(7all) Song

unread,
Apr 15, 2010, 4:48:50 AM4/15/10
to cisrg...@googlegroups.com
WinPcap可以实现你的这个项目,而且实现的很底层,应该说它有截获分析数据包的功能,
监控的话需要你自己去实现。

吴道远

unread,
Apr 15, 2010, 6:11:14 AM4/15/10
to cisrg...@googlegroups.com
2010/4/15 Bruce(7all) Song <cis...@gmail.com>
WinPcap可以实现你的这个项目,而且实现的很底层,应该说它有截获分析数据包的功能,
监控的话需要你自己去实现。


这个(⊙o⊙)…我要自己实践下,看看是不是7all大哥你说的这样。

因为又有人跟我说:
windows下面想要真正的达到过滤数据包的效果,winpcap是不行的,他只能抓取,不 能将数据包过滤掉。
使用SPI可以达到过滤的效果。

Bruce(7all) Song

unread,
Apr 15, 2010, 1:48:15 PM4/15/10
to cisrg...@googlegroups.com
SPI层还是基于winsock的技术,如果想实现数据包过滤,最好的应该是TDI层,
其实TDI和NDIS层很难有明显的区分,不过按照MS对TCP的讲解TDI层实现了
协议的区分。SPI层还是处于MS协议处理的上层,只是实现了winsock上层的拦截技术,从目前比较著名的WSE程序来看,虽然可以抓取封包,但还没有到wireshark的地步;)
我不知道是谁告诉你SPI层比TDI层更低级,但我建议你尽量考虑TDI层而不是
SPI层;)

> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“CISRG Group”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 cisrg...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 cisrg-group...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/cisrg-group?hl=zh-CN 访问此网上论坛。
>

--
Bruce Song
岂能尽如人意,但求无愧我心。

吴道远

unread,
Apr 15, 2010, 8:35:16 PM4/15/10
to cisrg...@googlegroups.com
2010/4/16 Bruce(7all) Song <cis...@gmail.com>

我不知道是谁告诉你SPI层比TDI层更低级,但我建议你尽量考虑TDI层而不是
SPI层;)


TDI层是比SPI层更底层的,毕竟在核心态了,这个没问题的。

照7all大哥的意思看,WinPcap就是在TDI层实现的?我对WinPcap没感性的认识哈。。。

Bruce(7all) Song

unread,
Apr 16, 2010, 9:19:34 PM4/16/10
to cisrg...@googlegroups.com
winpcap是NDIS层;)

http://en.wikipedia.org/wiki/Winpcap#WinPcap
http://baike.baidu.com/view/696423.htm?fr=ala0_1

--
Bruce Song
岂能尽如人意,但求无愧我心。

吴道远

unread,
Apr 20, 2010, 10:51:33 AM4/20/10
to cisrg...@googlegroups.com
2010/4/14 Bruce(7all) Song <cis...@gmail.com>


另外,还有一个使用Python写的代理服务器开源项目,也可做参考。


很诡异的是,作者没公布源码的?而且,https://pythoxy.org/run.py这个链接也打不开。

Google了一会,也没找到Pythoxy的源码。

7all大哥,你有它的源码不?

Bruce(7all) Song

unread,
Apr 20, 2010, 9:22:32 PM4/20/10
to cisrg...@googlegroups.com
我也没有代码,而且现在访问不了他的网站。
给你另外的一个参考吧,SPIKEProxy,这个
工具不用多介绍了;)
http://www.immunitysec.com/downloads/SP148.zip
下面的网址还有一些常用工具:
http://www.immunitysec.com/resources-freesoftware.shtml

吴道远

unread,
Apr 21, 2010, 12:10:20 AM4/21/10
to cisrg...@googlegroups.com
给Pythoxy的作者发邮件了,他说还需一段时间:

 I will try to have the source code available for release as soon as I can. Right now it has some problems and I'd be embarrassed for people to see.

昨天晚上用BaseHTTPServer(docs.python.org/library/basehttpserver.html) 练习着写了一下,参考了《Python网络编程基础》上的例子。觉得这个库比较有用!

SPIKEProxy好庞大哈,它其他的安全方面的功能挺多!看懂它估计要花好些时间的,我目前就参考这个例子:GAppProxy,它的代码相对少很多。它的服务端架在GAE上的,以前用它翻墙过~

2010/4/21 Bruce(7all) Song <cis...@gmail.com>

吴道远

unread,
Apr 21, 2010, 12:15:13 AM4/21/10
to cisrg...@googlegroups.com
噢,对了!这边有个Java和Python写的开源Proxy的列表:

proxies.xhaus.com/ 很全!

2010/4/21 吴道远 <clz...@gmail.com>

Bruce(7all) Song

unread,
Apr 21, 2010, 7:39:32 AM4/21/10
to cisrg...@googlegroups.com
哈,看来你离成功实现你的功能越来越近了。

吴道远

unread,
Apr 21, 2010, 8:41:20 AM4/21/10
to cisrg...@googlegroups.com
2010/4/21 Bruce(7all) Song <cis...@gmail.com>
哈,看来你离成功实现你的功能越来越近了。


%>_<%,写了一下午,晚上又写了一小会(当然,看Python的官方文档花了好些时间)。发现很郁闷,跑出来一大堆问题。 

可能是太急了,想看到一些阶段性的效果,结果反而把自己搞崩溃了!

哎,先不管了。过几天还要数据库考试,考完了再定定心心写了。。。

吴道远

unread,
Aug 26, 2010, 2:15:27 AM8/26/10
to cisrg...@googlegroups.com
昨天在写英文简历,就把之前做的那个HttpProxy开源了出来,使用了“中间人攻击”的思想来解密SSL通信。

不过,代码写得很ugly,所以迟迟不想开源。哎,现在也管不了这么多了…

HttpDebuger: HTTP-Based Analysis and Control System used for Debugging Web Apps

Bruce(7all) Song

unread,
Aug 26, 2010, 8:03:11 AM8/26/10
to cisrg...@googlegroups.com
cool

> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“CISRG Group”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 cisrg...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 cisrg-group...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/cisrg-group?hl=zh-CN 访问此网上论坛。
>

--
Bruce Song
岂能尽如人意,但求无愧我心。

Reply all
Reply to author
Forward
0 new messages