zoukankan      html  css  js  c++  java
  • fiddler教程-抓包,弱网,断点,mock等

    Fiddler教程--常用功能介绍--抓包,弱网,断点,mock等

    --------------建议收藏,多去实践一下。。。

    我把文章分两部分简单来讲,第一部分讲常用的设置和使用,第二部分对常用按钮进行介绍,总要认识,不能总糊里糊涂。

    第一部分: 常用设置和使用

    1.1 HTTPS抓包设置。

    下载安装fiddler后,首次使用,默认只抓HTTP协议; https协议,需要在tools > fiddler options > HTTPS 勾选capture https connect decrypt https traffic,然后按照指示安装信任证书;

    1.2 过滤或标记自己的请求。

    Filters 、或者选中请求右键mark 、或者左下角点出capturing 输入栏输入host; 过滤或标记自己想看的请求,排除干扰;

    Filters的用法,勾选use filters, hosts下方选择显示模式,文本框内输入host, 多的话’;’分隔,下面其他选项根据需求勾选,最后actions > run filters now, 来使规则生效。

    1.3 手机抓包

    1.3.1. 打开允许远程连接,设置端口 tools options connections

    1.3.2. 手机没配置要先配置,首先是修改网络,设置代理手动,输入电脑的IP和端口,保存;首次连接一般需要下载证书,浏览器输入chls.pro/ssl,下载并安装证书。尽量让我们的手机和电脑处在同一个WiFi(同一个网段), 证书装好,一部分手机需手动去添加信任,别忘了。

    1.3.3. 证书装好,等待电脑弹出弹框,allow连接。然后就好了。不行的话手机wifi重新开关设置一下。

    1.4 弱网测试,先勾选rules performance  simulate modem speed

    然后CTRL+R ; fiddlerscript里搜300m_SimulateModem,在m_SimulateModem里更改上传和下载速度,单位毫秒/kb.
    上面的方式只是模拟一种稳定的网速,但实际情况中,网速是不稳定的,如果需要模拟这种情况,只需要修改代码如下:
    static function randInt(min, max)
    {
    return Math.round(Math.random()*(max-min)+min);
    }

    if (m_SimulateModem)
    {
    // Delay sends by 300ms per KB uploaded.oSession["request-trickle-delay"] = ""+randInt(1,2000);
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = ""+randInt(1,2000);}

    1.5 断点。

    1.5.1 rules > aotomatic breakpoints >  before requests or after response; 根据需要选择,这种情况是对所有请求打断点,请求中断后,如果不是自己想要的,可以点击go放行;找到自己想要的请求断点,点击,右侧详情页中可对请求或者响应进行修改,比如在inspectors>webform里对参数和值进行修改;修改后点击run to complete跑完请求。

    1.5.2 在左下角的命令行里,可以通过bpu+单一host的方式对单个url进行断点。

    1.5.3 简单说下,fiddler作为一个代理,位于服务器和前端之间,可以抓服务器和前端之间的请求和响应。before requests 就是在请求发送到服务器之前,对请求断点和修改,然后将修改后的请求发送到服务器;after response,就是将服务器返回给前端的响应拦截,然后修改后, run to complete将你修改后的响应返回给前端。

    1.6  autoresponder,就是你常听到的mock返回。

    可以设定简单的规则,比如抓到某个固定请求时,返回我们设置mock的数据。

    1.6.1 你想mock的请求,你把他的响应copytxt/.json文件里,对响应进行更改后保存。如果不是json文件,或不确定,可以尝试把请求头和格式一起考进去。

    1.6.2 设定规则,比如你想mock的特定请求

    1.6.3 设置返回,在最下面的输入框中选择自己的mock文件。Save,理论上下次请求就会返回你想要的mock数据了。

    1.7 composer ,你可以简单理解成,篡改数据重新发送请求,或者用fiddlercomposer进行简单的接口测试。

    直接拖拽,修改后,excute执行。

    第二部分:Fiddler中常用按钮标签及意义

    ——————————————————————————————————————
    1. 主界面包括几大块:菜单栏、session栏、右上的request栏和右下的response栏。

    1.1 左上的session栏,就是会话栏,左上url上面的列标签。

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

    ——————————————————————————————————————

    1.2 右上的request栏这一栏包括statisticsinspectorautorespondercomposerlogfilters

    1.2.1  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: 所有选中sessionHTTPS握手上所花费的时间总和。
    Response Codes: 选中session中各个HTTP响应码的计数。
    Response Bytes by content-type: 选中session中响应的各个Content-Type的字节数。
    Estimated Performance: 选中的流量在不同语种(local)地区和连接方式下所需时间的初步估计。

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

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

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

    ——————————————————————————————————————

    1.3 
    response

    1.3.1 Headers:响应头。比如 Content-TypeAccess-Control-Allow-Origin 等这些属性都在这个 tab 展示。

    1.3.2 Cookies:查看由服务端带回来的 cookie

    1.3.3 JSON:将返回的内容以 JSON 格式显示。这个很有用,特别是当服务端返回的内容本身就是 JSON 的时候。

    1.3.4 RAW:查看返回的原始数据

    ---------------------------------------------------------------------------------------------------------

    1.4  QuickExec

    1.4.1 它位于Fiddler左下角,有个 QuickExec 的提示,命令行模式。
    1.4.2  输入help会带你到命令行的帮助页,上面列举了所有可用的命令。

    下面列举一些常用的吧:
    ?sometext:高亮包含匹配文字的会话。比如 ?/foo 就可以把所有包含 /foo 的请求都找出来。
    其他的高亮功能还有:=(匹配请求方法或状态码)、@(匹配host)、select(匹配MIME)。
    clear:清空会话面板。
    keeponly:清空会话面板,仅保留指定的MIME类型。比如 keeponly json 就能筛选出所有返回 json 的会话。
    go:放行所有的断点。

    1.4.3 特意说下设置断点
    bpu:请求时断点,比如 bpu /foo
    bpafter:响应时断点,比如 bpafter /foo
    bps:拦截状态码,比如 bps 404
    bpm:拦截方法,比如 bpm post
    用不带参数的命令可以清除断点,比如 bpafter 可以清除所有的响应断点。
    url 的匹配方式是判断“字符串是否包含”,比如 bpu /foo 会拦截所有包含 /foo 的请求。
    以上命令不带参数时,相当于去掉断点。

  • 相关阅读:
    Linux设置系统时间并同步到硬件
    centos6.9安装mysql5.7.22并设置初始密码
    mysql修改数据库文件存储位置
    mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)
    mysql1.6(主从同步,数据读写分离)
    Mysql1.5(binlog增量备份与恢复,innobackupex)
    Mysql1.4(用户授权,权限撤销;图形管理工具,数据备份-恢复)
    MYSQL1.3(存储引擎,数据导入导出,管理表记录)
    MYSQL1.2(字段管理,索引类型)
    mysql1.1(搭建,数据类型,基本使用)
  • 原文地址:https://www.cnblogs.com/bernard-shen/p/13187393.html
Copyright © 2011-2022 走看看