写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教程,于是待问题解决后抽时间截了图,自己写一遍封存在博客园中以便以后随时查阅。

charles又名青花瓷,在iOS开发中的抓包中具有重要作用。最大的三点用处,一就是拦截别人软件的发送的请求和后端接口,练习开发。二是自己后端返回的response拦截修改后再接收以达到测试临界数据的作用。三写脚本重复拦截抓取别人的数据。(因为不太道德,本文不提第三点)

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

1.开始之前的准备工作

首先安装一下这个软件

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

安装完成后先打开,在进行下面操作。

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

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

 

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

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

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

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

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

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

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

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

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

这里有两点我想说下:

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

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

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

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

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

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

    

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

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

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

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

这里的有好几种查看的方式,但是推荐使用JSON Text看的比较清楚。 现在我们对拦截回来的数据进行修改,我把这些统计数据全改成999如下图

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

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

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

这么做的意义:

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

iOS使用Charles(青花瓷)抓包并篡改返回数据图文详解的更多相关文章

  1. 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(5)-Fiddler监控面板详解

    1.简介 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的监控面板了.监控面板主要是一些辅助标签工具栏.有了这些就会让你的会话请求和响应时刻处监控中毫无隐私可言.监控面板是fiddl ...

  2. spark最新源码下载并导入到开发环境下助推高质量代码(Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2.2.0源码包为例)(图文详解)

    不多说,直接上干货! 前言   其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. ...

  3. 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(6)-Fiddler状态面板详解

    1.简介 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的状态面板了. 2.状态面板概览 Fiddler的状态面板概览,如下图所示: 3.状态面板详解 Fiddler底端状态栏面板详 ...

  4. 【答疑解惑】为什么你的 Charles 会抓包失败?

    作为一名 Web 开发工程师,天天都会和网络打交道.Charles 作为一款网络抓包工具,几乎成了 Web 开发的标配. 本文是我深度使用 Charles 后总结而成,不同于其它介绍 Charles ...

  5. vue-cli建立的项目如何在手机端运行以及如何用charles来抓包

    刚开始自己在config文件夹下的index.js中的dev下的host写成的是localhost,但是发现自己不能在手机端访问,并且也不可以在charles进行抓包处理,后来把localhost改成 ...

  6. charles 抓包修改app页面数据

    1,首先给手机安装Charles证书,安装官方的来,在无线网配置项目,输入手动代理地址,后开启飞行模式刷新网络, 2,在浏览器输入chls.pro/ssl 下载并安装证书,此时电脑端charles 会 ...

  7. Charles 手机抓包

    Charles 手机抓包 请求抓包对于程序员调试代码必不可少,Charles是一个用与抓包的好工具(也可以使用Fiddler),Charles抓包是通过中间人代理实现,在客户端和服务端通信时,Char ...

  8. (转)iOS应用程序生命周期(前后台切换,应用的各种状态)详解

    原文:http://blog.csdn.net/totogo2010/article/details/8048652 iOS应用程序生命周期(前后台切换,应用的各种状态)详解         分类:  ...

  9. 全网最详细的Sublime Text 3的安装Package Control插件管理包(图文详解)

    不多说,直接上干货! 全网最详细的Windows里下载与安装Sublime Text *(图文详解) 全网最详细的Sublime Text 3的激活(图文详解) 全网最详细的Sublime Text ...

随机推荐

  1. 优化MySchool数据库总结

  2. dp or 贪心 --- hdu : Road Trip

    Road Trip Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 29 ...

  3. for循环的执行顺序

    一边回顾基础一边记录记录做个整理,这篇关于for循环的执行顺序: for(表达式1;表达式2;表达式3) {循环体} 第一步,先对表达式1赋初值; 第二步,判别表达式2是否满足给定条件,若其值为真,满 ...

  4. C# ~ 数据库连接

    C#连接数据库(SQL Server)进行数据的读取和写入,学习之. 1. 数据库连接 服务器:“Data Source=服务器IP; Initial Catalog=数据库; User ID=用户名 ...

  5. 【译】java.lang.ThreadLocal

    This class provides thread-local variables. These variables differ from their normal counterparts(副本 ...

  6. C#使用Process调用批处理阻塞问题

    PS:又见到熟悉的C#代码了,好开心,哈哈哈.这次又跳坑了,好不容易才爬起来.   公司有自己开发的一套Submit.Compile.Publish的生命周期系统. 在Compile时,需要调用外部的 ...

  7. 导入项目时Loading descriptor ...

    最近导入了一个项目,始终在Loading descriptor ...,很长时间都没有结束. 这是Eclipse在从java.sun.com的服务器上下载配置文件,下载速度过慢导致的,其实配置文件不是 ...

  8. Gym 101102C---Bored Judge(区间最大值)

    题目链接 http://codeforces.com/gym/101102/problem/C problem description Judge Bahosain was bored at ACM ...

  9. 2015暑假多校联合---Assignment(优先队列)

    原题链接 Problem Description Tom owns a company and he is the boss. There are n staffs which are numbere ...

  10. 框架Spring笔记系列 一 基础

    主题:Spring 1.什么样的问题,使得Spring框架应用而生?使用Spring解决了那些问题? 2.