zoukankan      html  css  js  c++  java
  • Fiddler使用指南

    Fiddler使用指南

    简介

    Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

    既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端。使用了Fiddler之后,web客户端和服务器的请求如下所示:

    Fiddler界面简介

    主界面包括几大块:菜单栏、session栏、右上的request栏和右下的response栏。主要讲一下session栏、request栏和response栏。

    session栏

    • 有11列。每一列的意思都比较好懂。
      #:http request的顺序,从1开始。
      result:http响应状态码
      protocol:请求使用的协议(如HTTP/HTTPS/FTP)
      host:请求地址的域名
      url:请求服务器的路径和文件名,包括GET参数
      body:请求的大小,以byte为单位
      caching:请求的缓存过期时间或缓存控制header等值
      content-type:请求响应的类型
      process:发出此请求的windows进程及进程ID
      comments:用户通过脚本或者右键菜单给此session增加的备注
      custom:用户通过脚本设置的自定义值

    • 图标的意义
      第一列的图标其实代表了各种不同的意义。
      具体如下
      :response是HTML或者XML。有时候会发现返回值是json,但实际上也是这个图标,原因是返回值的Content-Type: text/html
      :response是脚本文件
      :response是css

    • 保存抓包

    request栏

    这一栏包括statistics,inspector,autoresponder,composer,log,filters

    • statistics
      这一栏主要是耗时和流量大小统计
      统计选项卡的一些信息含义如下解释:
      Request Count: 选中的session数;
      Unique Hosts: 流量流向的独立目标主机数。如果所有选中的流量都发送到相同的服务器上,则不会显示该字段。
      Bytes sent: HTTP请求头和请求体中向外发送的字节总数。后面括号中分别给出了头和body各自的字节数。
      Bytes received: HTTP请求头和请求体中接收到的所有字节数。在全部计数后面的括号中给出了请求头和请求体各自的字节数。
      Requests started at: Fiddler接收到的第一个请求的第一个字节的时间点。
      Responses completed at: Fiddler发送到客户端的最后一个响应的最后一个字节的时间点。
      Sequence(clock) duration: 第一个请求开始到最后一个响应结束之间的 “时钟时间”。
      Aggregate session duration: 所有选中的session从请求到响应之间的时间的和。
      DNS Lookup time: 所有选中的session解析DNS所花费的时间的总和。
      TCP/IP Connect duration: 所有选中session建立TCP/IP连接所花费的时间总和。
      HTTPS Handshake duration: 所有选中session在HTTPS握手上所花费的时间总和。
      Response Codes: 选中session中各个HTTP响应码的计数。
      Response Bytes by content-type: 选中session中响应的各个Content-Type的字节数。
      Estimated Performance: 选中的流量在不同语种(local)地区和连接方式下所需时间的初步估计。

    • inspector
      可以详细查看请求的 Headers、Cookies,并且可以对请求体格式化,以 WebForms、JSON、Raw 等方式查看。具体每种方式的区别可以自己感受一下。一般来说,想要查看请求的参数的话,WebForms 的方式就挺直观的。点击Raw就能看到原始的请求头部信息。

    • autoresponder
      这个地方可以模拟服务端返回值。顾名思义,当浏览器发出的请求满足你设置的匹配条件的话,Fiddler 就自动响应了,并不需要走网络。

    • composer
      模拟向服务端发送请求,用于测试服务端接口是否正确。

    response栏

    Headers:响应头。比如 Content-Type、Access-Control-Allow-Origin 等这些属性都在这个 tab 展示。
    Cookies:查看由服务端带回来的 cookie。
    JSON:将返回的内容以 JSON 格式显示。这个很有用,特别是当服务端返回的内容本身就是 JSON 的时候。
    RAW:查看返回的原始数据

    QuickExec

    重点实在是因为它太有用了。它位于Fiddler左下角,有个 QuickExec 的提示,非常显眼。官网介绍

    其实,当你看到它的时候,就已经会了第一个命令,输入时help
    输入help会带你到命令行的帮助页,上面列举了所有可用的命令。不是很多,而且都很直观。这里同样把常用的列一下。
    ?sometext:高亮包含匹配文字的会话。比如 ?/foo 就可以把所有包含 /foo 的请求都找出来。
    其他的高亮功能还有:=(匹配请求方法或状态码)、@(匹配host)、select(匹配MIME)。
    clear:清空会话面板。
    keeponly:清空会话面板,仅保留指定的MIME类型。比如 keeponly json 就能筛选出所有返回 json 的会话。
    go:放行所有的断点。

    设置断点

    按照之前介绍的,在状态栏启用断点(无论是请求断点,还是响应断点)后,所有的请求都会中断。
    事实上,一个网页加载时,会触发很多异步请求。
    而在上一节其实留了断点的命令行没有介绍。断点即 breakpoint,所有跟断点相关的都是以 bp 为前缀。
    bpu:请求时断点,比如 bpu /foo
    bpafter:响应时断点,比如 bpafter /foo
    bps:拦截状态码,比如 bps 404
    bpm:拦截方法,比如 bpm post
    用不带参数的命令可以清除断点,比如 bpafter 可以清除所有的响应断点。
    url 的匹配方式是判断“字符串是否包含”,比如 bpu /foo 会拦截所有包含 /foo 的请求。
    以上命令不带参数时,相当于去掉断点
    如果忘了这些命令,在命令行输入 bp ,敲回车,就能看到提示了。bp is short for breakpoint,这个能记住吗?

    模拟请求

    右侧的 Composer 窗口可以模拟发送请求。
    刚打开这个窗口的时候,应该是一片空白。你可以从左侧会话列表拖一个会话过去,这样就有预填的信息了,修改一下参数,点“Execute”,piu,一条请求就发送出去了。
    接着在会话列表就可以查看服务端的返回值。前面有介绍

    模拟返回值

    想要模拟返回值,首先要设置响应断点。
    bpafter qcssmd
    当满足条件的响应回来时,选中该会话,就可以看到如图所示的面板。选择 Raw 视图(其他也可以,Raw 可以修改更多的内容),可以搜索XD大侠,发现有两个地方,我们发现第二个地方是

    <h1><a id="Header1_HeaderTitle" class="headermaintitle" href="http://www.cnblogs.com/qcssmd/">XD大侠</a></h1>
    

    然后我们修改XD大侠为XD大侠222,然后单击“Run to Completion”,就能把修改后的返回值送还给浏览器了。

    还可以添加自动化:
    选中想要拦截的请求,比如 http://www.cnblogs.com/qcssmd/
    然后在 Request 面板选择 AutoResponder
    再选择 “Add Rule”
    在最下面的里面填你的返回内容的txt文件路径
    然后 “Save”
    此时会弹出一个对话框,跟 Response 面板的布局一样,在上面可以编辑返回值。
    或者你直接把定义好的返回内容保存成文件,在刚才那个下拉框中选择该文件就行了。这里我是直接把改好的文件另存为txt文件,然后让他自动导向这里,然后运行,就会出现之前一样的结果。

    Filter

    假如我只关心某个域名下的抓包,其他的我都不在意。这时可以利用filter,让Fiddler只显示我们筛选的包。避免无效的请求打扰我们。

  • 相关阅读:
    学Python要避免哪些坑,如何巩固好基础
    Python爬虫:现学现用xpath爬取豆瓣音乐
    福州大学软件工程1816 | W班 第10次作业[软件工程实践总结]
    福州大学软件工程1816 | W班 第10次作业[个人作业——软件产品案例分析]
    福州大学软件工程1816 | W班 第8次作业[团队作业,随堂小测——校友录]
    福州大学软件工程1816 | W班 第6次作业WordCount成绩排名
    福州大学软件工程1816 | W班 第4次作业(团队展示)成绩排名
    福州大学软件工程1816 | W班 第2次作业成绩排名
    软件工程github使用小结
    2018北航软工教学培训小结
  • 原文地址:https://www.cnblogs.com/qcssmd/p/5549767.html
Copyright © 2011-2022 走看看