zoukankan      html  css  js  c++  java
  • 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的官方文档。

  • 相关阅读:
    leetcode 78. 子集 JAVA
    leetcode 91. 解码方法 JAVA
    leetcode 75. 颜色分类 JAVA
    leetcode 74 搜索二维矩阵 java
    leetcode 84. 柱状图中最大的矩形 JAVA
    last occurance
    first occurance
    classical binary search
    LC.234.Palindrome Linked List
    LC.142. Linked List Cycle II
  • 原文地址:https://www.cnblogs.com/jpfss/p/10231874.html
Copyright © 2011-2022 走看看