1、原理简介:Fiddler 是目前最强大最好用的 Web 调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置 CGI 请求的断点,甚至修改输入输出数据。同类的工具还有httpwatch,firebug,wireshark,google审查元素。与这些基于网页浏览器的工具不同,fiddler是一个富客户端桌面工具,不仅能监听浏览器对网页的请求和对浏览器的响应(http和https请求),而且可以监听其他程序(比如java桌面应用)的http请求(当然需要额外的设置,在此不赘述)。另外,值得一提的是,即便在浏览器的调试中,它也能胜任其他工具,比如IE浏览器,当我们需要弹出一个模式对话框(modalDialog)时,这些浏览器监听插件就派不上用场了,还得fiddler出场。如果你还未曾听说过这个工具,请先阅读这篇科普文:《WEB 调试利器:Fiddler 教程》 fiddler 和常见的底层抓包(网卡) 工具不一样(如 wincap、wireshark),它是在 web server 和 web browser 之间搭了一层 proxy,所有的请求都会经过它,如下图所示: fiddler在客户浏览器及web服务器之间充当了一个请求及响应的代理角色,它会在本地建立一个默认代理服务,端口为8888,为此我们访问一下此端口,可见如下效果: 2、一些常用技巧介绍:(1)Fiddler中设置断点修改Request第一种:打开Fiddler 点击Rules-> Automatic Breakpoint ->Before Requests(这种方法会中断所有的会话) (2)Fiddler中设置断点修改Response第一种:打开Fiddler 点击Rules-> Automatic Breakpoint ->After Response (这种方法会中断所有的会话) (3)自动重定向 AutoResponder 到本地文件创建重定向规则,例如将目标请求是这个js的HTTP请求重定向到本地文件 请参考阿里 UED 的这篇:使用Fiddler提高前端工作效率 (实例篇) http://www./2010/04/25/use-fiddler-to-improve-efficiency-of-front-development-example.html (4)过滤会话 session list filter:比如你可能在debug某些网页时,会遇到上百个请求,看的你眼花缭乱,这是你可以启用 fiddler 强大的过滤机制,还可以依据正则来过滤, 如: REGEX:(empty.js.gif|__utm.gif) , 具体你可以参考: http:///documentation/KnowledgeBase/Filters, 例如: (5)请求构建器(Request Builder)、对两个数据流进行比较(6)文本编码和解码:开启Tools -> Text Encode/Decode(7)模拟user-agent:Rules->Customize Rules、模拟慢速网络(8)fiddler 打印 cgi log:http://my.oschina.net/leejun2005/blog/65259 (9)fiddler-使用技巧:http://vdisk.weibo.com/s/CcitC7ClCn_vr http://vdisk.weibo.com/s/CcitC7ClCopIM (10)FiddlerScript:http:///blog/blog/2013/07/15/understanding-fiddlerscript (11)Filters Reference:http:///documentation/KnowledgeBase/Filters (12)自定义列:Add Columns to the Web Sessions List:可以看上图的蓝色方框就是自定义列 http:///documentation/KnowledgeBase/FiddlerScript/AddColumns 举个栗子: 在 rule规则脚本的 static function Main() 函数中添加 3 列:远程ip、referer、ReturnedCookie
(13)常用fiddler命令:选择类:?text、>size、<size、=status、@host、 其他:cls/clear、dump、g/go、help、urlreplace 例如:?text 高亮选中会话后,shift + delete 即可反选删除,这样就过滤除了你要的 session 请求。 http:///documentation/KnowledgeBase/QuickExec
3、注意的问题及解决方法(1)chrome和firefox浏览器无法被监听fiddler安装之后,默认会在IE浏览器中安装一个fiddler的插件,所以它对IE及国内基于IE内核的各类浏览器都能实现监听,但其他内核的浏览器无法被监听。 (2)无法代理本地web服务器的访问请求使用fiddler的时候,我们更多的是基于本地程序的调试,可惜fiddler捕捉不了本地(localhost或127.0.0.1)的http请求。难道fiddler就束手无策了吗?当然不是。 方法一:在localhost后增加.fiddler 具体请参考:http://www./2013/06/19/666/ (3)Fiddler不能监听Java HttpURLConnection请求,请看:http://www.cnblogs.com/tt-0411/archive/2012/03/18/2404355.html http:///questions/8549749/how-to-capture-https-with-fiddler-in-java (4)Fiddler 不能监听、捕获 python urllib2 proxy、ProxyHandler 的问题:In Fiddler2, go to the page Tools->Fiddler Options ...->Connections, remove the trailing semicolon from the value in the "IE should bypass Fiddler for ..." field and restart Fiddler2. http:///questions/7681305/fiddler-does-not-capture-my-scripts-requests 也就是说,去掉 <-loopback> 后面的那个分号,保存然后重启你的 fiddler 即可。 4、其它为什么想来总结一下呢,是因为最近有个测试需求,需要检测某个网页指定的 url 请求个数,Fiddler 虽然可以,但是需要人工进行,想了想准备用 JPCAP 然后封装个浏览器内核试试,做成一个自动化的工具。 JPCAP 简介: 众所周知,JAVA语言虽然在TCP/UDP传输方面给予了良好的定义,但对于网络层以下的控制,却是无能为力的。JPCAP扩展包弥补了这一点。 http://fulong258.blog.163.com/blog/static/17895044200801145924745/ 最后谈谈Java里面连接操作系统网络协议栈的API。 下表显示了网络层标准的开放系统互连(OSI)模型。
Java 7 SDP:Java套接字直接协议——直接访问OSI第一层物理层,请参考: http://www./cn/articles/Java-7-Sockets-Direct-Protocol 5、推荐阅读:(1)基于fiddler来模拟限速 (2)Fiddler (二) Script 用法 http://www.cnblogs.com/tankxiao/archive/2012/04/25/2349049.html (3)Fiddler的高级用法-Fiddler Script (4)Fiddler ScriptSamples http:///Fiddler/dev/ScriptSamples.asp (5)fiddlerscript addcolumns http://docs./fiddler/knowledgebase/fiddlerscript/addcolumns/ |
|
来自: WINDevelops > 《通讯协议类》