• Fiddler抓取HTTP请求


    参考链接:http://blog.csdn.net/ohmygirl/article/details/17849983/

    http://www.cnblogs.com/kingwolf_JavaScript/archive/2012/11/07/Fiddler_config_cols.html

     主要分为6大部分:

    菜单栏,工具栏,会话列别,QuickExec命令行的使用,HttpRequest显示栏  HttpResponse显示栏

     

    4、查看HTTP统计视图:

          通常fiddler会话列表中会显示捕获的所有的http通信量,并以列表的形式展示出来,点击你想查看的一个或者多个会话,再点击软件右边的【Statustics】菜单,你就可以很轻松的查看到请求数、发送字节数等信息。如果你选择第一个请求和最后一个请求,还可以获得页面加载所消耗的总体时间,还可以从图表中分辩出那些请求耗时最多,从而可以对页面的访问速度进行优化。

    5、QuickExec命令行的使用:

         QuickExec命令行是会话列表下边的黑色区域,你可以在里面输入命令,回车之后即可执行你的命令,非常方便,在这里为大家介绍几个常用的命令:

          help  打开官方的使用页面介绍,所有的命令都会列出来

          cls   清屏  (Ctrl+x 也可以清屏)

          select  选择会话的命令

          ?.png  用来选择png后缀的图片

          bpu  截获request

    6、如何在fiddler中设置断点修改Response:

       主要有两种方法:

    1、点击【设置】菜单—【自动断点】—【响应之后】,这种方法是中断所有的会话,如果你想消除断点的话,就点击【设置】—【自动断点】—【禁用】就可以了。

    2、在QuickExec命令行中输入:"bpuafter 网址/会话名",这种方法是中断某一具体的会话,如果想消除命令的话,在命令行中输入"bpuafter"。

       7、如何在fiddler中创建AUTOResponder规则:

            设置AUTOResponder规则的好处是允许你从本地返回文件,而不用将http request发送到服务器上。我们就以访问博客园网站为例说明一下该功能的用法。

            1) 打开博客园首页,把博客园的LOGO图片保存在本地,并把图片修改一下。

            2) 打开fiddler找到刚才我们有该LOGO图片的会话,然后点击软件右边的自动响应选项卡,在"Enable authomatic reponses"和"permit passthrought unmatched requests"前面都打上勾,将会话拖到"自动响应"列表框中。

            3) 在右下角的Rule Editor的第二个文本框选择"Find a File……",然后选择本地保存的图片,点击"SAVE"按钮保存就可以了。

    Fiddler抓取HTTP请求。

    抓包是Fiddler的最基本的应用,以本博客为例,启动Fiddler之后,在浏览器中输入http://blog.csdn.net/ohmygirl 键入回车之后,在Fiddler的web session界面捕获到的HTTP请求如下图所示:

     

    上面的图标后面的英文的意思依次为:

    1.请求正在被发往服务器

    2.正在从服务器接收请求内容

    3.请求被一个断点停住了。

    4.响应被一个断点停住了。

    5.请求使用HEAD方法,响应应该没有响应体。

    6.请求使用POST方法

    7.请求使用了HTTPS

    8.返回内容为HTML页面

    9.返回内容为JS脚本

    10.返回内容为CSS

    11.返回内容为XML文件

    12.返回内容为JSON文件

    13.返回内容为音频文件

    14.返回内容为视频文件

    15.返回内容为Silverlight

    16.返回内容为Flash

    17.返回内容为字体文件

    18.一般成功的响应

    19.响应被重定向了,通过HTTP/300,301,302,303 or 307

    20.HTTP 304 请求

    21.返回一个需要客户端证书验证的请求

    22.服务器端错误

    23.会话被客户端、Fiddler、服务器意外终止。

    和会话列表的交互

    在一个或者多个会话上面单击右键会出现下面的菜单

    小提示:你可以通过在FiddlerScript中使用ContextAction标志为这个菜单添加菜单项。

    在“复制”菜单上面有以下内容:

    • Session - 以纯文本和HTML语法加亮形式复制原始的请求内容到剪贴板。
    • Just URL - 仅仅复制主机名和URL地址
    • Headers Only - 以纯文本和HTML语法加亮形式复制请求头和响应头到剪贴板。
    • Full Summary - 为了粘贴到Excel中方便,以纯文本和HTML语法加亮形式把请求的各个列的信息复制到剪贴板。
    • Terse Summary - 复制请求地址和响应状态到剪贴板。

    在“保存”菜单上面有以下内容:

     

    • Session > In ArchiveZIP - 把相关的请求内容打包为一个 .SAZ 文件. 
    • Session - 把请求和响应的所有内容存为一个文本文件
    • Headers Only - 把请求头和响应头存为一个文本文件
    • Full Request - 把请求的所有内容存为一个文本文件
    • Request Body - 把请求体存为一个文本文件,通常是POST的数据包。
    • Full Response - 把响应的所有内容存为一个文本文件
    • Response Body - 把响应体存为一个文件,通常是HTML文件或者图片。

    AutoResponder 快速引用

                今天我们来看一下Fiddler的AutoResponder选项卡的强大功能。

    Fiddler的AutoResponder 选项卡允许你使用本地硬盘的文件来作为返回内容,而不是把请求发往服务器。

    创建AutoResponder 规则。

              使用AutoResponder选项卡,你可以创建一个匹配规则和一个响应字符串,如果请求的URL地址跟你的匹配规则相匹配,

    Fiddler就会自动执行这个对应的响应字符串。

    小提示:

             

    • 匹配规则会按照它在规则列表中出现的顺序进行匹配, 按+键可以使一个匹配规则向上移一项,按-键可以使一个匹配规则向下移一项。
    • 使用右键菜单, 你可以导出一个包含了所有的匹配规则和对应响应字符串的后缀为 .FARX 的文件。
    • 你也可以通过导入  .SAZ or .FARX 文件来创建基于以前创建的规则列表和响应列表.
    • 你可以从会话列表中拖动一个会话到AutoResponder选项卡中来重新演示以前的响应. 你也可以选中一条规则,然后回车这样就可以来编辑一条规则。
    • 你也可以直接从Windows的资源管理器中拖动一个文件到 AutoResponder选项卡中来为这些文件创建规则和响应。

    匹配规则:

    纯粹字符串

    Fiddler将会按照不区分字母大小写来匹配字符串。

    Demo如下:

    RuleMatches
    * 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

    跟上面的类似,Fiddler还有一个非字符串匹配的规则:NOT:

    Demo如下:下面的都匹配。

    RuleMatches
    NOT:EXAMPLE http://www.test.com/Path1/query=test
    NOT:path1/ http://www.example.com/Path2/query=example
    NOT:query http://www.example.com/Path1/q

    Exact匹配:

    表达式以EXACT:为前缀,此匹配区分字母大小写

    Demo如下:

    RuleMatches
    EXACT:http://www.example.com/path http://www.example.com/path
    EXACT:http://www.example.com/path http://www.example.com/Path (不匹配- 大小写不一样)
    EXACT:http://www.example.com/path http://www.example.com/path/q=Query (不匹配- 子字符串不一样)

    正则表达式:

    Fiddler支持以regex:为前缀的正则表达式语法,使用.+匹配一个或多个字符,使用.*匹配0个或多个字符,使用^匹配字符串开始位置,使用$匹配字符串结尾位置。

    Demo如下:

    RuleMatches
    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
       

    想要学习更多正则表达式的请看这里here.

    响应字符串

    除了简单的返回文件,AutoResponder选项卡还有更多的用处........

     

    Beyond simply returning files, the AutoResponder can also perform special actions...

    Action StringResult...
    filename 返回文件内容作为消息响应
    http://targetURL 返回此URL的内容作为消息响应
    *redir:http://targetURL 返回一个跳转URL,注意,不是一般的URL,一定要确保此URL知道要到哪里去,以便携带上相关的Cookie信息。
    *bpu 设置一个断点在发往服务器以前停住此请求Non-final action.
    *bpafter 设置一个断点在接收响应之前停住此请求Non-final action.
    *delay:#### 设置在发给服务器之前的延时,以毫秒为单位。Non-final action.
    *header:Name=Value 设置请求头的内容,如果没有那个请求头,则新建一个请求头Name并设置为ValueNon-final action.
    *flag:Name=Value  设置Session Flag的内容,如果没有那个Session Flag,则新建一个Session FlagName并设置为ValueNon-final action.
    *CORSPreflightAllow 返回一个响应标志 CORS 是否被允许。.
    *reset  使用一个TCP/IP RST 重新设置客户端的链接。
    *drop 马上关闭客户端链接。
    *exit 这时候停止处理匹配。

    如果你的匹配规则使用了正则表达式,那么响应也可以使用正则表达式,更多信息请看这里: Learn more...

    标志为Non-final action.的请求会匹配多个响应规则,如果一个规则是final action ,那么再找到匹配之后,匹配过程就会结束,对于那条请求来说就不会再匹配其它的规则。

    延迟响应

    在一个请求返回来之前你可以设置一下请求延迟返回的时间。选中Enable Latency 复选框,可以设置所有的规则的延迟。

    右键单击一个或者多个规则,然后选择 Set Latency 就可以设置具体的延迟时间。如果你想调整现存的延迟时间,只需要输入一个带有+或者-号的数字即可。

    如果你想在现在的延迟时间基础上面减少500毫秒,那么在弹出的输入框中输入-500即可。

    各字段的详细说明已经解释过,这里不再说明。需要注意的是#号列中的图标,每种图标代表不同的相应类型,具体的类型包括:

     

    另外,注意请求的host字段。可以看到有来自多个www.csdn.net的子域名的响应,说明在大型网站的架构中,大多需要多个子域名,这些子域名可能是单独用于缓存静态资源的,也可能是专门负责媒体资源的,或者是专门负责数据统计的(如pingback)。

    右键单击其中的一条请求。可以选择的操作有:save(保存请求的报文信息,可以是请求报文,可以是响应报文)。例如,我们保存的一条请求头信息如下:

     

    不仅是单条session,Fiddler还支持保存所有抓取到的session(并支持导入),这对于抓取可疑请求然后保存,并在之后随时分析这些请求是很有帮助的。

    如果想要重新发送某些请求,可以选中这些请求,然后点击工具栏中的reply.就可以重新发送选中的这些请求。

    左键点击单条HTTP请求,可以在右侧的tab面板中看到如下信息:

    1. Statistic。

    关于HTTP请求的性能和其他数据分析:

     

    我们可以从中看出一些基本性能数据:如DNS解析的时间消耗是8ms,建立TCP/IP连接的时间消耗是8ms等等信息。

    2. Inspectors。

    分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。对于每一部分,提供了多种不同格式查看每个请求和响应的内容。JPG 格式使用 ImageView 就可以看到图片,HTML/JS/CSS 使用 TextView 可以看到响应的内容。Raw标签可以查看原始的符合HTTP标准的请求和响应头。Auth则可以查看授权Proxy-Authorization 和 Authorization的相关信息。Cookies标签可以看到请求的cookie和响应的set-cookie头信息。

     

    3. AutoResponder

    Fiddler比较重要且比较强大的功能之一。可用于拦截某一请求,并重定向到本地的资源,或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是Fiddler的内置响应。当勾选allow autoresponser 并设置相应的规则后(本例中的规则是将http://blog.csdn.net/ohmygirl的请求拦截到本地的文件layout.html),如下图所示

     

    然后在浏览器中访问http://blog.csdn.net/ohmygirl,得到的结果实际为:

     

    这刚好是本地layout.html的内容,说明请求已经成功被拦截到本地.当然也可以使用Fiddler的内置响应。下图是Fiddler支持的拦截重定向的方式:

    因此,如果要调试服务器的某个脚本文件,可以将该脚本拦截到本地,在本地修改完脚本之后,再修改服务器端的内容,这可以保证,尽量在真实的环境下去调试,从而最大限度的减少bug发生的可能性。

    不仅是单个url,Fiddler支持多种url匹配的方式:

    I. 字符匹配

    如 example可以匹配 http://www.example.com和http://example.com.cn

    II. 完全匹配

    以EXACT开头表示完全匹配,如上边的例子

    EXACT:http://blog.csdn.net/ohmygirl

    III. 正则表达式匹配

    以regex: 开头,使用正则表达式来匹配URL

    如:regex:(?insx).*.(css|js|php)$  表示匹配所有以css,js,php结尾的请求url

    4. Composer。

    老版本的fiddler中叫request-builder.顾名思义,可以构建相应的请求,有两种常用的方式构建请求:

    (1)Parsed 输入请求的url之后executed即可,也可以修改相应的头信息(如添加常用的accept, host, referrer, cookie,cache-control等头部)后execute.

    这个功能的常见应用是:“刷票”(不是火车票!!),如刷新页面的访问量(基于道德和安全原因,如果你真去刷票,刷访问量,本博客概不负责)

    (2)Raw。使用HTTP头部信息构建http请求。与上类似。不多叙述

    5. Filter

    Fiddler另一个比较强大的功能。Fiddler提供了多维度的过滤规则,足以满足日常开发调试的需求。如下图示:

    过滤规则有:

    a. host和zone过滤。可以过滤只显示intranet或则internet的HTTP请求

    也可以选择特定域名的HTTP请求

     

    b. client process:可以捕获指定进程的请求。

    这对于调试单个应用的请求很有帮助。

    其他更多的设置可以参考fiddler的官方文档。

  • 相关阅读:
    质量属性的六个常见属性应用场景(淘宝篇)
    软件架构师如何工作?
    寒假学习第十五天
    寒假学习第十四天
    ADMEMS方法体系:3个阶段,一个贯穿环节之Refined Architecture阶段阅读感悟
    《企业应用架构模式》阅读笔记一
    《重构:改善既有代码的设计》阅读笔记三
    大数据分析01——数据爬取
    《重构:改善既有代码的设计》阅读笔记二
    kettle--Trans插件之输出
  • 原文地址:https://www.cnblogs.com/jpfss/p/10231874.html
Copyright © 2020-2023  润新知