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

更多命令可参考:http://www.xuanfengge.com/fiddler2-shortcut-command-tutorial-translation.html

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

时间: 2024-10-13 10:43:40

App开发如何利用Fidder,在api接口还没有实现的情况下模拟数据,继续开发的相关文章

【php】利用新浪api接口与php获取远程数据的方法,获取IP地址,并获取相应的IP归属地

本文与<[Servlet]Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地>(点击打开链接)为姊妹篇,只是后端编程语言换成了php. 做出同样的效果,打开页面,得到客户端的ip,并获取利用新浪api接口获取此ip的归属地. 可以看到,在IE6也是相当正常的. 目录结构如下,非常简单,同样就两个文件,其实如果你愿意,写成一个php文件也可以,但是显示层和逻辑业务层还是不混在一起为好吧? 唯一值得注意的是,这两个文件打死也不能一个叫ipGet.php,ipGet.html

淘宝API开发系列:淘宝api接口接入说明

为了进行淘宝API接口开发,正常会有以下几个步骤操作: 1)开发者注册一个账号. 2)然后为每个淘宝应用注册一个应用程序键(App Key) . 3)下载淘宝API的SDK并掌握基本的API基础知识和调用,具体可以参考博客的信息点击查看详细接口说明里面的技术分享区等.3)下载淘宝API的SDK并掌握基本的API基础知识和调用,具体可以参考博客的信息(淘宝商品详情介绍请添加链接描述)里面的技术分享区等. 4)利用SDK接口和对象,传入AppKey或者必要的时候获取并传入SessionKey来进行程

利用fitnesse实现api接口自动化测试

上午在园子里乱逛,看了不少小伙伴们分享的接口测试方面的知识,仔细想想,我做接口测试也有几个年头了,大家所叙述到的一些经验或多或少,我也曾遇到过,突然意识到知识的点滴积累是多么的重要,我记得我最早接触接口测试的时候,就是只在浏览器里人工测试单个接口的返回结果,后来用python的unittest自己写测试框架,和现在大多数小伙伴们的方法差不多,测试用例也是存放在excle表中,这对于单人测试来说都还ok,但是如果是多人协同测试时,问题就出来了,因为按目录存放在不同的excle表中的测试用例,维护起

移动共享开发(六)授权API接口和分享API接口

新浪微博.腾讯微博.豆瓣.人人网.QQ在执行分享前需要先进行授权操作, 其他平台可以直接调用分享API接口. 授权接口 ( doOauthVerify ) 授权接口以新浪为例,添加下面的代码: 注意在授权前先检查是否已经授权过,重复授权有可能引起错误 OauthHelper.isAuthenticated(mContext,SHARE_MEDIA.SINA) 确保未授权,则先调用下面的代码 mController.doOauthVerify(mContext, SHARE_MEDIA.SINA,

【Servlet】Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地

这里之所以调用新浪api接口,主要是可以避免我们在本地存放一个ip归属地库, 同时,我们在本地要存放用户的ip,仅仅存放其ip就可以了,无须存放其归属地,节省一个字段. 如下图,写一个带有获取客户端IP地址的网页: 首先,在Eclipse的目录结构如下: 里面除了servlet的支持包之外,就一个.jsp与一个.java. 其中这里用到Servlet3.0,因此web.xml没有任何东西: <?xml version="1.0" encoding="UTF-8"

在vue-cli环境下模拟数据接口及如何应用mockjs

第一种办法 1.需要先准备json文件 在根目录下新建个oapi文件夹下新建个iorder.json文件将需要遍历的json数据沾里面. 2.在build文件夹下新建dev-server.js 文件 // build/dev-server.js var apiRoutes = express.Router(); var appData = require("../oapi/iorder.json"); apiRoutes.get('/oapi',function(req,res){ r

关于WP8.1开发中,调用网络API接口时JSON无法反序列化的解决方法

分享一个自动生成json的C#对象的方法网址: http://tools.wx6.org/json2csharp/ 复制后就在项目中新建一个类,类名可以按照自动生成的Root,也可以自定义,自定义的话,别忘了修改复制的类名 如自定义类名为C,则把Root改成C 关于复杂的嵌套JSON,要记住:集合中不要放集合,要构建对象来放集合,这样才能在绑定数据时调用 反序列化推荐用json.net这个开源库,引用时注意要用WinRt中的json.dll 然后用Root r=JsonConvert.Deser

初识Django —Python API接口编程入门

初识Django -Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言,基于Django框架,利用MVC模型,实现后台方面的针对数据库的API开发.先了解一下互联网的WEB架构, 如上图: 互联网的WEB架构大致分为三层,web层.app层和数据库层.Web层:如apache网站服务器:app层主要是应用业务:DB指后台数据库.随着互联网的高速发展,网站访问量的增长.数

【转】整套完整安全的API接口解决方案

原文地址:http://www.cnblogs.com/hubro/p/6248353.html 在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对于公开访问的接口,专业点的都会做下安全验证,数据签名之类 反而现在,谁都可以用WEB API估接口,安全性早忘一边了,特别是外包小公司的APP项目,80%都有安全漏洞(面试了大半年APP开发得出的结论)