zoukankan      html  css  js  c++  java
  • App开发如何利用Fidder,在api接口还没有实现的情况下模拟数据,继续开发

        相信app开发很多时候,都是等后台出接口,拿到数据调试错误。殊不知,我们完全可以不用等,只要有约定好的接口定义文档,借助工具就能做到,自己模拟数据返回~  

       下面主要是在项目组开发过程中,使用Fidder,摸索总结的经验之谈.

       

    一、初步介绍及前期准备
    1、抓包工具简介
    抓包工具有很多,以下列一下最常用的几个工具别简单介绍下
    firebug:web最常用的调试工具,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。
     
    Wireshark:通用的抓包工具,比fiddler更强大,消息量更多,比如在验证反作弊信息的时候,反作弊pingback信息的消息用fiddler就没抓到,用wireshark就抓到了。
     
    fiddler:HttpWatch 和 Firebug绝大多数前端开发人员都比较熟悉,但是HttpWatch虽然可以抓到每个 HTTP 请求的全部数据,但无法修改返回的数据;尽管Firebug可以修改 HTML和CSS,但是在调试CGI接口时无法干预HTTP请求的参数值和CGI返回的数据。而 Fiddler作一个 HTTP 调试代理,不但能够记录客户端同服务器之间的所有 HTTP 通讯数据,还能够修改请求数据和返回数据,也叫做“构造请求”和“模拟响应”。除此之外, 添加了willow插件的Fiddler 还可以:统计数据包、修改Host、请求重定向、编码转换、低网速模拟、断点调试以及过滤HTTP请求…Fiddler包含了一个强大的基于事件脚本的子系统,并且能够使用.net框架语言扩展
     
    2、下载
    根据.netframework 2.0 或 4.0版本下载fiddler2或fiddler4
    可以直接百度进行下载,或者上官网下载:http://fiddler2.com/get-fiddler
    安装:I Agree->Install
     
    3、配置抓取https
    Tools->Fiddler Options->HTTPS选项卡->勾选“Capture HTTPS CONNECTs”和“Decrypt HTTPS traffic”前面的复选框,然后点击“OK”
    勾选后就可监听到https的请求和响应了
    PS:Decrypt HTTPS traffic是解密https流量的意思,勾选后可以查看https内容,如果证书不会导的话,可能会导致部分应用无法连接、部分图片无法显示的问题
     
    4、配置允许远程连接
    Tools -> Fiddler Options-> Connections选项卡,选中“Allow remote computers to connect”前面的复选框,然后点击“OK”
    设置后,就可以监听设置过代理的手机了,注意,设置后需重启Fiddler才生效
     
    5、手机设置代理
       本机的IP可以通过cmd命令的ipconfig获取本机IP,或者直接将鼠标悬停在Online上(小屏幕时Online会被收起来),如下图(手机和电脑最好是同一wifi或同一网段)
    不需要非得本机开热点才能连接,只需要手机和安装 Fiddler 电脑在同一WIFI下,手机连接到WIFI。不同的手机设置有所区别,以我的努比亚手机/iphone6p为例,注意,fiddler的默认端口是8888,不是8080
     
    设置好后可以随意打开几个APP,看看连接是否抓到,没抓到很可能就是你刚才设置的代理没保存
     
     
    6、安装fiddlerroot证书(安装证书后就能抓到大部分https的内容)
    在手机浏览器中输入ip:8888,如下图,点击最下方的蓝字FiddlerRoot certificate(注:手机未设置锁屏密码时会让你先去设置密码)
     
     
     
     
     
    二、界面介绍
    1、fiddler中各种图标的含义
     
     
    2、抓包是Fiddler的最基本的应用
    以本博客为例,启动Fiddler之后,在浏览器中输入http://www.cnblogs.com/cingchen 键入回车之后,在Fiddler的web session界面捕获到的HTTP请求如下图所示:
    另外,注意请求的host字段。可以看到有来自多个api.ad.cnblogs.com的子域名的响应,说明在大型网站的架构中,大多需要多个子域名,这些子域名可能是单独用于缓存静态资源的,也可能是专门负责媒体资源的,或者是专门负责数据统计的
     
     
    2、Fiddler主界面的布局如下:

    主界面中主要包括四个常用的块:

    1.Fiddler的菜单栏,上图绿色部分。包括捕获http请求,停止捕获请求,保存http请求,载入本地session、设置捕获规则等功能。

    2.Fiddler的工具栏,上图红色部分。包括Fiddler针对当前view的操作(暂停,清除session,decode模式、清除缓存等)。

    3.web Session面板,上图黄色区域,主要是Fiddler抓取到的每条http请求(每一条称为一个session),主要包含了请求的url,协议,状态码,body等信息,详细的字段含义如下图所示:

    4.详情和数据统计面板

    针对每条http请求的具体统计(例如发送/接受字节数,发送/接收时间,还有粗略统计世界各地访问该服务器所花费的时 间)和数据包分析。如inspector面板下,提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报 文的信息:

    而composer面板下,则可以模拟向相应的服务器发送数据的过程(不错,这就是灌水机器人的基本原理,也可以是部分http flood的一种方式)。

    也可以粘贴一次请求的raw http headers,达到模拟请求的目的:

    Filter标签则可以设置Fiddler的过滤规则,来达到过滤http请求的目的。最简单如:过滤内网http请求而只抓取internet的http请求,或则过滤相应域名的http请求。Fiddler的过滤器非常强大,可以过滤特定http状态码的请求,可以过滤特定请求类型的http请求(如css请求,image请求,js请求等),可以过滤请求报文大于或则小于指定大小(byte)的请求:

    更多的过滤器规则需要一步一步去挖掘。

    三、常用功能介绍

    1、更改host
    fiddler可以直接更改host,不需要重启手机就可立即生效,而且对IOS也是支持的,可以在正式环境/测试环境来回切换,非常方便
    Tools->HOSTS...
     
     
     
    2、模拟弱网环境,限速
    Rules → Performances → Simulate Modem Speeds。勾选之后,你会发现你的网路瞬间慢下来了很多。至于慢下来后网络速度是多少,则由CustomRules.js 中如下程序控制的(Ctrl+R):
    ...
    var m_SimulateModem: boolean = true;
    ...
    if (m_SimulateModem) {
    // Delay sends by 500ms per KB uploaded.
    oSession["request-trickle-delay"] = "500";
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = "150";
    }
    ...
     
    算法就是 1000/下载速度 = 需要delay的时间(毫秒),比如50kB/s 需要delay20毫秒来接收数据,所以根据你需要的网络速度来修改上述值。
     
    【注】:存档之后,原本已经勾选的Simulate Modem Speeds 会被取消勾选,需要再到Rules → Performances → Simulate Modem Speeds 勾选,同时需要注意一定要禁用浏览器代理插件,以及修改完成后重启浏览器才能生效。
     
     
     
    3、打断点(会将所有的请求打断点)
    Before Requests F11 修改请求数据
    After Responses Alt+F11 修改响应结果
    Break On Response 点击后会在响应的地方打断点
    Run To Completion 修改后点击运行,将修改后的数据进行请求/返回
     
     
     
    4、composer 模拟请求
    可以模拟所有的http请求,具体的参数可以在raw里面写,写完后点击Execute进行执行模拟请求
     
     
    5、AutoResponder 自动响应
    可以精确的对抓到的数据进行处理,比如打断点(*bpu/*bpafter),直接返回写好的返回值(find a file...)等
     
     
    6、TestWizard 转码
     
     
    7、Replay 重新模拟个一样的请求,Shift+左键可以生成N个一样的请求,可用于简单的压力测试
     
     
    8、快捷命令 (Alt+Q可直接focus到命令行)
     
    请求断点:bpu 192.168.0.1
    清除请求断点:bpu
    响应断点:bpafter 192.168.0.1
    清除响应断点:bpafter
    停止/开始抓本地请求:stop/start
    替换请求地址:urlreplace www.zhuaqianmao.com 121.41.58.3(将zhuaqianmao的请求替换为58.3)
    放开所有断点:go/g
    选择所有该host的请求:@118.178.168.129
    所有请求类型为xxx进行断点:bpv(bpm) xxx(如post/get)
    清除所有请求:clear/cls
    退出fiddler:quit
     

    9、更改UA ,可以设置所有请求默认的User-Agent 

  • 相关阅读:
    Jmeter压力测试-结果分析(三十)
    C#正则密码验证
    Docker
    c# framework 缓存依赖
    NETMQ订阅,超时断线重连
    RabbitMQ发布/订阅模式
    RAS非对称加密解密,公钥私钥
    .NETCore批量插入数据BulkLoader
    .NETcore使用CSRedisCore操作Redis
    Rabbitmq简单队列
  • 原文地址:https://www.cnblogs.com/softwarelanguagebs/p/6228702.html
Copyright © 2011-2022 走看看