iOS使用Charles 抓包并篡改返回数据图文详解

摘要:
网易不进行任何加密,因此可以捕获数据。这一步表明你已经完全掌握了通过使用青花瓷篡改返回数据来测试应用程序的技术。
1.开始之前的准备工作

首先安装一下这个软件

这个相信很多人电脑里应该都安装了,没安装的搜charles破解版也能很容易搜到。如果没安装java环境,首次进入charles会提示让你安装java包得,直接给你链接是苹果官网的,去下一个一键安装就行了。

 iOS使用Charles 抓包并篡改返回数据图文详解第1张安装完成后先打开,在进行下面操作。

然后去自己电脑的系统偏好设置-》网络-》选中现在连着的网(大部分人应该都是WiFi吧)可以查到自己这个电脑在现在这个wifi里的IP地址,比如我现在这个就是192.168.0.105(建议最好用私人网络,用公司网络的话可能会有限制会出现没反应的问题)

iOS使用Charles 抓包并篡改返回数据图文详解第2张

然后找到自己手机也连着这个同名的wifi,然后选中右边的蓝色i。

 iOS使用Charles 抓包并篡改返回数据图文详解第3张 iOS使用Charles 抓包并篡改返回数据图文详解第4张

然后进入到了这个无线局域网的高级设置页面。进去之后拉到最下方,找到HTTP代理字样。然后选中手动代理,并在服务器中填自己电脑查到的ip地址,然后把端口调8888,最后点击左上角返回。返回值后系统会自动设置代理重新连接。

这时候你的手机上网的过程中就要经过你的电脑了。刚用手机打开一个联网的程序,你的电脑上应该会显示一个弹窗问你【allow】还是【deny】肯定不能拒绝啊就点allow吧。这个只有第一次才弹窗,图没截上,你到时候看见肯定能看懂的。点了同意之后你手机发出的每一个请求都会被拦截出痕迹。

2.拦截某个软件的接口数据

拿网易新闻举例,以前就练习这写过网易新闻的项目,其中网易的接口全是用charles拦截的。拦截到了网易发请求时发的是什么,然后在练习项目中需要获取数据的地方也把这一串链接直接拿过来用即可。

iOS使用Charles 抓包并篡改返回数据图文详解第5张

当然这上面拦到的比较多,如果有过开发经验的话应该能很快看出来右边哪个是真正返回json数据的接口。或者一个一个点看内容也行啊。

比如选中一个url然后右键点击copy。

iOS使用Charles 抓包并篡改返回数据图文详解第6张

放到浏览器地址栏里打一下。能看到

iOS使用Charles 抓包并篡改返回数据图文详解第7张

这就说明这个接口是对的了。可以获取到数据。然后可以给他转化一下看的更清楚。虽然很多人都是用bash看,但我还是推荐一个网址http://www.w3cschool.cc/jsontool。转JSON之后看的非常清晰。大部分软件json整理后都是默认把大括号全都打开,而仅有这个网站是默认全给你把大括号关上。想点哪个再点开,而且能知道字典里有多少个键值对,所以看着非常清晰。

iOS使用Charles 抓包并篡改返回数据图文详解第8张

到此就已经完成了一次完整的,拉取接口,和获得数据。

这里有两点我想说下:

①就是如果这个App发的请求加密了或是RSA什么的,这个就算拦截了你也弄不到数据。网易是没有做任何加密,所以可以抓取到数据。以前试了拦截百度医生的就不行。他设置的是一分钟内能获取到数据,超过了1分钟这个复制过来的接口就取不到数据了。怀疑可能是用的HMAC方法加密,并且在里面加入了时间判断。32分和33分发出的请求经过编码后是不一样的,后台可能做了容错,会把32分和31分都和你判断下,只要有一个对上就让你过,但是超过了整整一分钟后是肯定获取不到数据了。

②就是很多比较大型的网站,一般会开放一个开发者平台,里面注册开发者账号后会向你公开一个接口文档,你不用再去费事的拦截了。像新浪微博和大众点评都有开发者平台。

3.更改返回数据来测试临界情况。

这个是重点了。因为这种做法可以让一个iOS前端的开发人员独立完成测试而不用拉过来一个后端一起联调。并且各种特殊维度,或是临界的账号也不用再去辛苦找了,仅仅自己在青花瓷上改来改去就可以达到效果了。比如这个地方如果返回了nil程序会不会崩,直接改response就行了。下面是具体操作方案。

打开青花瓷切换成结构页面

iOS使用Charles 抓包并篡改返回数据图文详解第9张

这里可以看到断点和调试信息

iOS使用Charles 抓包并篡改返回数据图文详解第10张    iOS使用Charles 抓包并篡改返回数据图文详解第11张

然后找一个我们公司的页面。这个页面本来应该返回是这样的:如上图右边

你先正常的打开这个页面把玩几下,这个青花瓷就会抓取很多接口和域名分类了。在这里找到你这个页面所属的域名分类应该不难。然后打上断点。这里要注意是在域名上打断点而不是在下面的单个请求上打断点。

再次用手机进入这个页面,就会通过你刚才打断点的那个域名来请求数据,就会被断点拦住,如下图所示。

iOS使用Charles 抓包并篡改返回数据图文详解第12张

右边的信息也很清晰,一开始可以编辑请求。如果点击单步执行,等一下相应回来了也可以编辑响应。

iOS使用Charles 抓包并篡改返回数据图文详解第13张

iOS使用Charles 抓包并篡改返回数据图文详解第14张这里的有好几种查看的方式,但是推荐使用JSON Text看的比较清楚。 现在我们对拦截回来的数据进行修改,我把这些统计数据全改成999如下图

iOS使用Charles 抓包并篡改返回数据图文详解第15张

然后再次点击下方的Execute单步执行,更改后的数据就会像正常返回回来的数据那样显示到,APP的页面上展示。

iOS使用Charles 抓包并篡改返回数据图文详解第16张

能来到这一步就说明已经完整的掌握了用青花瓷篡改返回数据测试App的技术。

如果你不是在董铂然博客园看到本文,请点击查看原文

这么做的意义:

这里只是简单的更改了一些数字,在页面显示更加直观。实际的操作中,你可以经常用来把某些值改为临界情况以看到App在处理这些临界状况时的反应,这样比找那些临界数据的测试账号成本要低得多。也可以把一些可能不会反回数值的字段找到,直接将里面的值删成nil,看看会不会报异常等等。

免责声明:文章转载自《iOS使用Charles 抓包并篡改返回数据图文详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇logback的使用和logback.xml详解,在Spring项目中使用log打印日志sublime中使用markdown并实时编辑下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Sqlite数据库完整性检测

/************************************************************************************************* * 函数名称: IntegrityCheck * 功能描述: 数据库完整性检测 * 输入参数: 无 * 输出参数: 无 * 返 回 值: 0:完整...

用bat文件传值(可读取系统环境变量)给c#控制台应用程序

1 新建控台应用程序(过程忽略),其代码: static void Main(string[] args) { foreach (var item inargs) { Console.WriteLine(item); }...

Anders谈C# 4.0:新功能和展望

刚才刚看完Anders的PDC Talk,感觉C# 4.0的变化不是很大,但是很多改动都方便了用户的使用,有些甚至当初Anders本来不愿意加入的功能最后由于用户的呼声最后还是加进去了(如 Optional Parameters),可见Anders对用户的意见还是非常重视的。稍微总结一下,C# 4.0中有下面这些功能: 1. dynamic/IDynami...

关于微服务(四)

一.架构实现 总的来说我的通用架构还是以三层架构为基础进行演变的,在经典的三层架构中,最上层的是controller,中间是service,下层是dao。 在微服务的架构中,最上层是网关层,controller只是网关的一种,中间是业务层,service只是业务层的入口,最下层是基础层,dao只是基础层中的数据存储组件。 二.网关层 网关层本质上是对不...

查询离指定日期最近的一条数据(oracle)

select * from (  Select   *   from   t_currency_rate   where f_orig_curr='USD'   and f_dest_curr='RMB'  Order   by   abs(f_date-sysdate) ) a where rownum=1...

ChipScope——ISE软件的抓波形操作

  Quartus II 下抓波形为 SignalTap,Vivado 下为 ila,而 ISE 下则为 ChipScope。目前 ISE 已经停止更新了,不再支持 Xilinx 的新芯片,但有些老的工程还是要用到 ISE 来开发维护,固在此以串口通信的工程为背景,记录一下 ChipScope 的使用过程。 1、新建管脚约束文件“toppin.ucf”...