zoukankan      html  css  js  c++  java
  • 【测试工具】http协议调试利器fiddler使用教程

    转自:http协议调试利器fiddler使用教程http://bbs.phpchina.com/thread-207418-1-1.html

    Fiddler真乃神器!它和市面上常见的很多web调试器、http调试器、sniffer都不同!它的原理是在浏览器(或者其他使用http协议的进程)和服务器之间做代理角色,这样所有的通信都要经过它,尽管sniffer和这个原理是一样的,但他们工作的网络层不同。


    看上图,你就明白原理了咯,它以8888端口(多么吉利的数字呀!)开本地代理服务器,并且支持https!所以,只要你的http通讯将代理设置为本地8888,fiddler都能帮助你截获数据(最新2.2.0.3以上版本不用你设置,它会自动帮你设置。旧版本可以到ie→工具→internet选型→连接里设置。其他浏览器类似);另外,说他是神器,除了他具有一般web调试器的所有功能之外,其最最大的一个特点是可以中途修改http通信内容。看下图:

    嗯,就是这样,提交内容和服务端响应内容都可以被fiddler中断,修改内容后再次继续,在ajax通信的时候,我们可以利用这个功能来调试数据,测试bug!方便至极。

    其实,一旦运行fiddler,就相当于跑了一个http服务器一样,你可以在浏览器地址栏输入http://localhost:8888就能看到它的信息了。

    下载地址:http://www.fiddler2.com/Fiddler2/version.asp

    现在来了解下它的功能。

    1.http请求断点调试

    如上图,是一个网页的原始请求和响应。现在在规则→自动断点里设置“响应后”,点击提交按钮,现在请求发出,经过代理发送到服务器,服务器返回响应数据道代理,此时由于设置了断点,响应被挂起,我们就能在fiddle中修改响应数据,然后提交,此时响应由代理发送到客户端,就能看到响应数据了。如下图所示:

    我们还可以在请求发送前设置断点,修改请求头,fiddler代理将会把修改后的请求发送到服务器,然后读取服务器响应,中转并返回响应数据。
    这对于调ajax程序特别有用。你可以中断httpxml请求并修改请求内容。

    2.自定义响应AutoResponder

    利用fiddler还可以自定义替换响应。这是原始的请求。

    设置如下过滤规则:

    刷新网页,响应页资源已被修改。

    我们还可以使用正则,指定一套规则,把符合规则的把请求替换为我们从网上抓取的数据包。

    首先,我们可以把我们从网络中抓取的一张图片保存为dat数据文件

    对应的图片资源如下:

    导出为dat文件

    我们将其导出为59_Response.dat,

    设置如下过滤规则:

    请求规则:regex:(?insx)^http://.*gravatar.*$ #Match HTTPS-delivered GIFs

    替换的响应数据:C:UsersAdminDesktop emp159_Response.dat

    刷新网页,效果如下,所有满足规则的响应都被替换:

    59_Response.dat文件的内容由http头和实体数据两部分组成。

    *下面是详细的过滤规则:

    String Literals

    Fiddler will match string literals (大小写不敏感)

    Rule

    Matches

    *

    http://www.example.com/Path1/query=example

    EXAMPLE

    http://www.example.com/Path1/query=example

    path1/

    http://www.example.com/Path1/query=example

    query

    http://www.example.com/Path1/q=Query

    Exact Match(精确匹配)

    Fiddler supports an exact, 大小写敏感 match syntax for expressions which begin with exact:

    Rule

    Matches

    EXACT:http://www.example.com/path

    http://www.example.com/path

    EXACT:http://www.example.com/path

    http://www.example.com/Path (No Match - mismatched case)

    EXACT:http://www.example.com/path

    http://www.example.com/path/q=Query (No Match - substring different)

    Regular Expressions(正则表达式)

    Fiddler supports regular expression syntax for expressions which begin with regex:

    Rule

    Matches

    regex:.*

    http://www.example.com/Path1/query=example

    regex:.*.jpg

    http://www.example.com/Path1/query=foo.jpg&bar
    http://www.example.com/Path1/query=example.jpg

    regex:.*.jpg$

    http://www.example.com/Path1/query=foo.jpg&bar (No Match - improper ending)
    http://www.example.com/Path1/query=example.jpg

    regex:.*.(jpg|gif|bmp)$

    http://www.example.com/Path1/query=foo.bmp&bar (No Match  - improper ending)
    http://www.example.com/Path1/query=example.gif
    http://www.example.com/Path1/query=example.Gif  (No Match - mismatched case)
    http://www.example.com/Path1/query=example.bmp

    regex:(?insx).*.(jpg|gif|bmp)$

    http://www.example.com/Path1/query=foo.bmp&bar (No Match - improper ending)
    http://www.example.com/Path1/query=example.gif
    http://www.example.com/Path1/query=example.Gif 
    http://www.example.com/Path1/query=example.bmp

    都是简单的正则表达式,具体含义就不解释了。

    3.页面请求统计

    在左侧选中要统计的请求,点击右侧统计栏就能看到统计情况了,点击下端的show chart,还能以扇形图的方式直观地展示出来各种请求类型的大小。同时还能查看缓存以及一些请求的状态码,如发现404,那么请求的文件就是不存在了,应该检查路径了。一般这类状态都会以醒目的图标标出。


    你还可以禁止缓存,这在浏览器调试时会很有用。你还可以自定义UA头,如我用网站访问糗事百科,则显示的是普通网页,而自定义UA为IPAD后,访问后返回的将是相当于手机访问产生的页面。(这一点,opera浏览器做的就很到位,可以用opera轻易地来访问wap网页)

    效果如下:

    你还可以在配置文件里添加新的规则,如iphone,诺基亚老爷机等。

    这里有各类session前面请求图标所代表的含义。

     

    Request is being sent to the server

     

    Downloading response from server

     

    Request is paused at a breakpoint.

     

    Responseis paused at a breakpoint.

     

    Request used HTTP HEAD method; response should have no body

     

    Request used HTTP CONNECT method; this establishes a tunnel used for HTTPS traffic

     

    Response was HTML

     

    Response was an image

     

    Response was a script

     

    Response was Cascading Style Sheet

     

    Response was XML

     

    Generic Response successful

     

    Response was HTTP/300,301,302,303 or 307 redirect

     

    Response was HTTP/304: Use cached version

     

    Response was a request for client credentials

     

    Response was a server error

     

    Session was aborted by the client, Fiddler, or the Server.

    4.使用技巧与答疑

    你可以在左侧的命令框输入命令,执行某些操作。

    ?Text 高亮url中含有此字符串的请求

    >size Select sessions where response size is greater than sizebytes.

    <size Select sessions where response size is less than sizebytes.

    =status 状态码
    =method 请求方式

    @host 包含此主机的请求

    bold 标记含有某字符串的请求,如bold /a.jsp

    bpafter Break any response where the RequestURI contains the specified string.

    bps Break any response where the status code matches.类似的还有bpv(method)

    cls or clear :clear the session list.

    Select:Select any session where the response Content-Type header contains the specified string.select image

    更多命令可以参照官方文档,这些命令也是可以自定义的。

    你还可以把session直接拖到request build里构造请求,也可以完全手工构造。


    这样,就可以执行我们自行构造的请求了。更多细节可以参考HTTP RFC文档。

        另外,fiddler的可扩展性很强,能够用jscript来扩展它,实现自定义功能。

    如果你的fiddler突然不抓包了,可能是你浏览器代理的问题(fiddler没能成功帮你自动配置或者配置后又被你修改了)那看看tools-fiddler options-connections,看一下fidder listens on port的值是不是80,如果不是80而是8888的话,改回来。或者手动配置下代理。

    5.相关资源:

    http://www.fiddler2.com/fiddler/help/

    http://blogs.msdn.com/b/fiddler/

    http://blog.csdn.net/powerwolf/archive/2009/06/03/4237735.aspx

  • 相关阅读:
    [转]ATOM 规范 中文版
    Silverlight 点滴(一) 获取定义在Generic.xaml或其他*.xaml中的对象
    [转]将WinCE5.0模拟器(emulator)连接到VS2005
    div+css布局实例淘宝分析(三)(2)
    介绍几款所见即所得的WEB在线编辑器
    cFos V7.52 简体中文破解版
    div+css布局实例淘宝分析(三)(1)
    div+css布局实例淘宝分析(一)
    中国水网开通了
    div+css布局实例淘宝分析(三)(3)
  • 原文地址:https://www.cnblogs.com/qi09/p/3376197.html
Copyright © 2011-2022 走看看