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

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. git代码回滚:Reset、Checkout、Revert的选择

    代码回滚:Reset.Checkout.Revert的选择 Zhongyi Tong edited this page on Dec 8, 2015 · 5 revisions Pages 19 Ho ...

  2. Elasticsearch——Rest API中的常用用法

    本篇翻译的是Elasticsearch官方文档中的一些技巧,是使用Elasticsearch必不可少的必备知识,并且适用于所有的Rest Api. 返回数据格式化 当在Rest请求后面添加?prett ...

  3. DirectX.Capture Class Library

    DirectX.Capture Class Library Brian Low,              29 Mar 2008                                    ...

  4. Servlet生命周期中的service方法分析

    问题ServletLifeCycle中的service方法内,有super.service(request, response); 会执行this.doGet(HttpServletRequest r ...

  5. Nancy 学习-进阶部分 继续跨平台

    前面两篇,讲解Nancy的基础,及Nancy自宿主和视图引擎. 现在来学习一些进阶部分. Bootstrapper Bootstrapper 就相当于 asp.net 的Global.asax . 我 ...

  6. 浅谈你感兴趣的 C# GC 机制底层

    本文内容是学习CLR.via C#的21章后个人整理,有不足之处欢迎指导. 昨天是1024,coder的节日,我为自己coder之路定下一句准则--保持学习,保持自信,保持谦逊,保持分享,越走越远. ...

  7. 【C#】带等待窗体的BackgroundWorker

    ---------------201504170911更新--------------- 更新内容:删除bgwUI新增的Start方法,改为通过new修饰符+可选参数的方式同时覆盖基类(Backgro ...

  8. jquery-easyui-tree异步树

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  9. Oracle sqlplus设置显示格式命令详解

    / 运行 SQL 缓冲区 ? [关键词] 对关键词提供 SQL 帮助 @[@] [文件名] [参数列表] 通过指定的参数,运行指定的命令文件 ACC[EPT] 变量 [DEF[AULT] 值] [PR ...

  10. MVC5+EF6 入门完整教程13 -- 动态生成多级菜单

    稍微有一定复杂性的系统,多级菜单都是一个必备组件. 本篇专题讲述如何生成动态多级菜单的通用做法. 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单. 需要达成的效果:容易复用,可以根据mode ...