charles – HTTP瑞士军刀
嗯,得提一下这个非开源的charles软件,这是个让我惊讶的软件,我本想找的是一个可以监视http的软件,又不想动用Ethereal(后改名为WireShark)这样的牛刀(而且这个牛刀用来监视http也不好用),一番gooooooogle就发现了这个Java版的charles。
除了满足了我的http监视需求外,charles还是一个下载软件(它不仅监视http头部,还把所有的内容也截获下来了,所以可以下载,这个用途很多啊,省略省略。。。),charles还可以显示XMLRequest的内容,也就是可以作为AJAX开发的调试工具,用于显示Browser-Server的交互过程。
charles的独特的设计是它并没有监视底层的数据包,而是实现了一个HTTP Proxy(也支持Socks Proxy,我没有试过),直接通过代理得到的HTTP请求来完成截获,这样就不影响所有的非代理应用,而且性能较好,也方便charles来解析http数据流。这个设计是charles的关键,它使得charles具备了上面的优点,同样它也有很大的缺点,就是对于非代理的http请求很难处理(可以通过charles的反向proxy来解决这个问题,但不是很完美)。
由于charles基于浏览器的设计,对于firefox,需要安装一个插件,IE不需要,这样在使用charles时才能自动配置浏览器的proxy,不过易用性还是做的相当不错的,无需手动的配置,基本上是即装即用了,不错的说。
update 2009-04-08: charles又帮我分析了一个未知的HTTP URL(从一个iPod touch发出来的),真不错,只要配置一下代理到运行charles的PC的8888端口即可。