`

关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享

    博客分类:
  • web
 
阅读更多

链接:http://my.oschina.net/leejun2005/blog/151103

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(这种方法会中断所有的会话)
如何消除命令呢?  点击Rules-> Automatic Breakpoint  ->Disabled
第二种:  在命令行中输入命令:  bpu www.baidu.com   (这种方法只会中断www.baidu.com)
如何消除命令呢?  在命令行中输入命令 bpu

(2)Fiddler中设置断点修改Response

第一种:打开Fiddler 点击Rules-> Automatic Breakpoint  ->After Response  (这种方法会中断所有的会话)
如何消除命令呢?  点击Rules-> Automatic Breakpoint  ->Disabled
第二种:  在命令行中输入命令:  bpafter www.baidu.com   (这种方法只会中断www.baidu.com)
如何消除命令呢?  在命令行中输入命令 bpafter,

(3)自动重定向 AutoResponder 到本地文件

创建重定向规则,例如将目标请求是这个js的HTTP请求重定向到本地文件

请参考阿里 UED 的这篇:使用Fiddler提高前端工作效率 (实例篇)

http://www.aliued.cn/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://fiddler2.com/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://fiddler2.com/blog/blog/2013/07/15/understanding-fiddlerscript

(11)Filters Reference:

          http://fiddler2.com/documentation/KnowledgeBase/Filters

(12)自定义列:Add Columns to the Web Sessions List:

          可以看上图的蓝色方框就是自定义列

         http://fiddler2.com/documentation/KnowledgeBase/FiddlerScript/AddColumns

         举个栗子:

         在 rule规则脚本的 static function Main() 函数中添加 3 列:远程ip、referer、ReturnedCookie

// The Main() function runs everytime your FiddlerScript compiles
static function Main() {
    var today: Date = new Date();
    FiddlerObject.StatusText = " CustomRules.js was loaded at: " + today;

    FiddlerObject.UI.lvSessions.AddBoundColumn("remoteIP"200"X-HOSTIP");
    FiddlerObject.UI.lvSessions.AddBoundColumn("Referer"200"@request.Referer");
    FiddlerObject.UI.lvSessions.AddBoundColumn("ReturnedCookie"200"@response.Set-Cookie");
    
    // Uncomment to add a "Server" column containing the response "Server" header, if present
    // UI.lvSessions.AddBoundColumn("Server", 50, "@response.server");

    // Uncomment to add a global hotkey (Win+G) that invokes the ExecAction method below...
    // UI.RegisterCustomHotkey(HotkeyModifiers.Windows, Keys.G, "screenshot"); 
}

(13)常用fiddler命令

选择类:?text、>size、<size、=status、@host、 
blod text、select、allbut、keeponly 
断点类:bpafter、bps、bpv、bpm、bpu 
控制类:hide、start、stop、show、quit 

其他:cls/clear、dump、g/go、help、urlreplace

例如:?text 高亮选中会话后,shift + delete 即可反选删除,这样就过滤除了你要的 session 请求。

http://fiddler2.com/documentation/KnowledgeBase/QuickExec

 

3、注意的问题及解决方法

(1)chrome和firefox浏览器无法被监听

fiddler安装之后,默认会在IE浏览器中安装一个fiddler的插件,所以它对IE及国内基于IE内核的各类浏览器都能实现监听,但其他内核的浏览器无法被监听。 
解决办法:禁用chrome和firefox中具有代理功能的插件,比如我的chrome安装了switchSharp,禁用它或选择“使用系统代理设置”,或在switchSharp中新配置一个代理项(比如名为fiddler,用于指向代理127.0.0.1,端口8888,如下图),即可实现监听。

(2)无法代理本地web服务器的访问请求

使用fiddler的时候,我们更多的是基于本地程序的调试,可惜fiddler捕捉不了本地(localhost或127.0.0.1)的http请求。难道fiddler就束手无策了吗?当然不是。 
一般我们访问安装在本地的服务器程序时,使用的localhost或127.0.0.1,默认会绕过代理,直接访问目标服务器,通过fiddler特有的请求方式,可以使本地请求及响应都被fiddler拦截。

方法一:在localhost后增加.fiddler
比如请求http://localhost:8080改为http://localhost.fiddler:8080即可
方法二:更简单,在localhost或127.0.0.1后增加一个点即可
比如http://localhost.:8080

具体请参考:http://www.ichatter.cn/2013/06/19/666/

(3)Fiddler不能监听Java HttpURLConnection请求,请看:

http://www.cnblogs.com/tt-0411/archive/2012/03/18/2404355.html

http://stackoverflow.com/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://stackoverflow.com/questions/7681305/fiddler-does-not-capture-my-scripts-requests

也就是说,去掉 <-loopback> 后面的那个分号,保存然后重启你的 fiddler 即可。

4、其它

为什么想来总结一下呢,是因为最近有个测试需求,需要检测某个网页指定的 url 请求个数,Fiddler 虽然可以,但是需要人工进行,想了想准备用 JPCAP 然后封装个浏览器内核试试,做成一个自动化的工具。

 JPCAP 简介

       众所周知,JAVA语言虽然在TCP/UDP传输方面给予了良好的定义,但对于网络层以下的控制,却是无能为力的。JPCAP扩展包弥补了这一点。
  JPCAP实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用wincap/libpcap,而给JAVA语言提供一个公共的接口,从而实现了平台无关性。在官方网站上声明,JPCAP支持FreeBSD 3.x, Linux RedHat 6.1, Fedora Core 4, Solaris, and Microsoft Windows 2000/XP等系统。JPCAP的整个结构大体上跟wincap/libpcap是很相像的,例如NetworkInterface类对应wincap的typedef struct _ADAPTERADAPTER,getDeviceList()对应pcap_findalldevs()等等。 使用 JPCAP 实现监听利用的是所谓的“ARP欺骗”技术。具体请参考:

http://fulong258.blog.163.com/blog/static/17895044200801145924745/

最后谈谈Java里面连接操作系统网络协议栈的API。

下表显示了网络层标准的开放系统互连(OSI)模型

#

协议

Java SDK的核心APIs

7.

应用层

HTTP、FTP、SSL等

java.net.HttpURLConnection、javax.servlet.HttpServlet

6.

表示层

 

# 在Java里,OSI应用层和表示层没有真正区别

5.

会话层

NetBios、RCP

# Java SDK核心对OSI会话层没有支持

4.

传输层

TCP、UDP

java.net.Socket、java.net.ServerSocket、java.net.Datagram

3.

网络层

IP

Java.net.InetAddress

2.

数据链路层

PPP

# Java SDK核心对OSI数据链路层没有支持

1.

物理层

以太网、InfiniBand

# Java SDK核心对OSI物理层没有支持

不过……

现在有了Java 7 SDP(VM连接InfiniBand和java.net.*、java.io.*核心APIs的桥梁)

 

Java 7 SDP:Java套接字直接协议——直接访问OSI第一层物理层,请参考:

http://www.infoq.com/cn/articles/Java-7-Sockets-Direct-Protocol

5、推荐阅读:

(1)基于fiddler来模拟限速

http://blogread.cn/it/article/4540?f=wb

(2)Fiddler (二) Script 用法

http://www.cnblogs.com/tankxiao/archive/2012/04/25/2349049.html

(3)Fiddler的高级用法-Fiddler Script

http://cube.qq.com/?p=973

(4)Fiddler ScriptSamples

http://fiddlerbook.com/Fiddler/dev/ScriptSamples.asp

(5)fiddlerscript addcolumns

 

http://docs.telerik.com/fiddler/knowledgebase/fiddlerscript/addcolumns/

分享到:
评论

相关推荐

    web调试利器及http监控工具Fiddler

    Fiddler作为一款强大的HTTP代理服务器,被广大开发者誉为"web调试利器",它能够帮助我们深入理解网络请求的过程,从而进行精确的问题定位和优化。Fiddler的核心功能包括HTTP监控、请求修改、响应设定等,对于前端、...

    Fiddler之web调试工具

    **Fiddler——Web调试利器** Fiddler是一款强大的Web调试工具,由Telerik公司开发,主要用于捕获、分析和修改HTTP(S)通信数据。它能够帮助开发者、测试人员以及网络安全专家深入理解网络流量,从而解决网页应用的...

    Web调试抓包利器,Fiddler 2.2.7.5

    Fiddler 是一款免费的记录HTTP(S)通信的代理,支持监察请求和响应、设置断点,以及修改输入输出数据。

    Debugging with Fiddler 2012 (英文版 Eric Lawrence 亚马逊5星 热评 畅销书) 网络编程 Web服务开发调试利器

    Debugging with Fiddler 2012 (英文版 Eric Lawrence 亚马逊5星 热评 畅销书) 网络编程 Web服务开发调试利器 亚马逊11个客户全部评5星,热评畅销书。 Web Services 开发必备。

    自定义的Fiddler规则多环境切换解决跨域开发快速调试线上代码必备高效调试分析利器

    **Fiddler是一款强大的网络封包分析工具,尤其在JavaScript开发中,对于前端开发者来说,它是一个不可或缺的调试利器。本文将深入探讨如何利用自定义的Fiddler规则实现多环境切换,解决跨域开发问题,并高效地进行...

    Fiddler Web Debugger(5.0.20192.25092)中文版.zip

    《Fiddler Web Debugger——网络调试利器》 Fiddler Web Debugger是一款强大的网络抓包工具,主要用于HTTP/HTTPS协议的调试。它的版本号为5.0.20192.25092,特别推出了中文版,使得国内用户在使用过程中能够更加...

    fiddler-linux.zip

    《Fiddler for Linux:网络调试利器的跨平台探索》 在IT行业中,网络调试是开发者和运维人员日常工作中不可或缺的一部分。Fiddler,这款由Telerik开发的强大HTTP抓包工具,一直以来以其易用性和全面的功能深受...

    Fiddler+Web+Debugger(FD)汉化版

    它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。  既然是代理,...

    fiddler4抓包工具

    它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。 既然是代理,也...

    Fiddler 中文版.rar

    **Fiddler中文版——网络调试利器** Fiddler是一款强大的网络调试工具,它能够捕获HTTP/HTTPS协议的网络流量,帮助开发者、测试人员以及普通用户深入理解网络交互过程,排查网页加载问题,优化应用性能。Fiddler...

    1Fiddler2_fiddler_Fiddler工具_204-nocontent.dat_模拟https请求_抓包_

    这些特性使Fiddler2成为一个全方位的网络调试利器。 **七、1Fiddler2文件** 压缩包中的"1Fiddler2"文件可能包含的是Fiddler2的安装程序或者相关配置文件。对于初学者,可以通过安装这个文件来开始使用Fiddler2;...

    fiddler_4.6.rar

    《Fiddler 4.6:网络调试利器的深度解析》 Fiddler,这款强大的HTTP代理服务器,是Web开发者不可或缺的工具之一。它能够记录并解析所有HTTP通信,帮助我们深入了解网页应用的工作原理,排查网络问题。本文将围绕...

    FiddlerCore4.7z

    这使得FiddlerCore成为一个强大的网络工具,不仅适用于常规的Web开发,也适用于物联网(IoT)、移动应用、游戏等领域的网络调试。 总的来说,“FiddlerCore4.7z”压缩包提供了一套完整的工具集,让开发者能够深入理解...

    fiddler5.0安装包

    《fiddler5.0:网络调试利器的深度解析》 fiddler5.0,作为一款备受开发者青睐的网络调试工具,它以其强大的功能和易用性在软件/插件领域占据了重要的地位。本文将深入探讨fiddler5.0的安装过程以及其核心功能,...

    fiddlercore4.5修改版

    总的来说,FiddlerCore4.5的修改版是C#开发者在网络调试工具领域的一把利器,它克服了原版的一些限制,使得开发者能够更加高效地进行网络流量的监控和分析。无论是在开发过程中定位问题,还是在产品上线后进行性能...

    fiddler2&4

    Fiddler2和Fiddler4是两款强大的Web调试工具,主要用于捕获和分析HTTP/HTTPS网络通信。它们由Telerik公司开发,是开发者、测试人员以及网络管理员进行网页性能优化、问题排查和安全审查的必备工具。Fiddler2是早期...

    Fiddler web Debugger

    它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

    fiddler4_4.6.2.0

    《Fiddler4_4.6.2.0:网络调试利器详解》 Fiddler4,版本号4.6.2.0,是Web调试工具的翘楚,以其强大的功能和易用性赢得了广大开发者和测试人员的喜爱。这个安装包(fiddler4_4.6.2.0_setup.1453708442.exe)包含了...

    Microsoft Fiddler V2.4.1.0.zip

    它由Microsoft开发并提供,是.NET Framework平台上的一个免费应用,对于软件开发者,尤其是Web应用开发者而言,是不可或缺的调试利器。 Fiddler的核心功能在于拦截和记录HTTP/HTTPS协议的网络请求。通过它,开发者...

    fiddler 安装包

    它对于开发者、测试人员和网络安全专家来说是必不可少的工具,可以帮助他们理解、调试和优化Web应用程序。下面我们将深入探讨Fiddler的核心功能和使用方法。 **一、Fiddler的基础知识** 1. **HTTP代理**:Fiddler...

Global site tag (gtag.js) - Google Analytics