iOS Charles抓包也是博大精深

Charles这个工具我想对于Android和iOS开发的小伙伴来说并不陌生,很多从机构学习的小伙伴做项目都是利用chares这个工具去获取数据,从而构成APP的,而且它也是测试工程师喜爱的工具。对于了解Charles,我们首先想到的几个问题应该就是:

  1. 什么是Charles?
  2. Charles这个工具如何配置环境和安装?
  3. Charles能为我们做什么?

什么是Charles?

Charles,天朝的iOS兄弟也把它叫做青花瓷,是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。该软件是用Java写的,能够在Windows,Mac,Linux上使用。

Charles这个工具如何配置环境和安装?

官网下载:https://www.charlesproxy.com/download/
免费版下载:http://xclient.info/search/s/charles/

Charles安装包可以分为两种:一种是官网正版的,但是它只有30天的试用期,过了三十天没过30分钟就得重新打开一次。另外一种是破解版,网上流传的Charles破解版只有4.0一下版本的,虽然可以解决30天试用期的问题,但是却不能更新最新版本的Charles,这个用户体验也不优秀。总的来说,小编还是建议下最新版的官方版本,这样更加perfect!

如何进行抓包?

对于抓包而言,我们需要分类讨论,分为真机和模拟器两种情况。

1.真机抓包

网上讲解真机抓包的过程很多,小编在这里带大家过一遍,还是很so easy的。
首先,对Charles进行配置:

菜单:Proxy -> Proxy Settings... -> 勾选 Enable transparent HTTP proxying


image.png

然后找到电脑的局域网IP地址:这里自己去找吧,我就不赘述了。

接着,打开你的iPhone:设置 -> Wifi -> 连接上和电脑同一路由器的Wifi,点击右边的 i 进入配置

配置:拉到底部,找到 <HTTP代理>, 选择手动, 服务器填入电脑的IP地址,端口号写 8888 然后返回会刷新Wifi连接

image.png

此处配置完成后,Charles会弹出提示框,

大意是:有人请求连接Charles ip是xxx.xxx.xxx.xxx是否允许?

这里要注意!!!Charles的默认选项是Deny拒绝,所以一定不要按回车!!! 手动选择Allow!!!

到此,即可正常抓取iPhone的连接。

继续

回到Charles,进行证书安装:
Charles菜单:Help -> SSL Proxying -> Install Charles Root Certificate 点击后自动打开钥匙串访问,请输入电脑开机密码


image.png

完成后你会看见两个证书:


image.png

双击证书,打开证书详情:展开信任 -> 使用此证书时:修改为 始终信任,关闭证书详情要求输入开机密码


image.png

两个证书都设置为始终信任。

接着,安装手机端的证书:

回到Charles,菜单:Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser

image.png

点击后会弹出对话框,大意是:配置你的设备来使用Charles,证书下载地址:chls.pro/ssl


image.png

打开手机Safari,访问下载地址:chls.pro/ssl (如果我们显示的不同,则以提示中的地址为准)

正常情况下访问此地址会请求安装一个配置文件。若无请求请检查Wifi是否设置了 HTTP代理 (参考配置图:设置 -> Wifi -> i -> HTTP代理 手动)。


image.png

点击安装:

image.png

网上很多教程到这就结束了,但返回Charles会发现还是无法正常抓取HTTPS的请求。

其实还有一个设置,信任证书:

打开iPhone设置:通用 -> 关于手机 -> 拉到最底部 证书信任设置 -> 勾选刚刚安装的证书


image.png

最后
完成上面操作,最后再设置下SSL Proxying ,就可以利用 Charles 抓包 https 请求了。

  • 选择 Charles 菜单中:Proxy -> SSL Proxying Settings...*
    
image

作者:Maxdon
链接://www.greatytc.com/p/e26151084add
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

好了,到了这里,我相信你一定可以愉快的获取数据了。

2.模拟器抓包

网上大部分都是描写如何用真机去抓包,但是小编今天要讲的是如何用模拟器去抓包,因为在开发当中如果用真机去抓包,还得去设置代理,当你不用的时候,还得关掉代理,这个体验不优秀。当然了,如果你是测试工程师,这个你就不用看了,因为你没有苹果电脑,也没有模拟器,😁😁😁!

如果你安装了Charles,发现模拟器抓不了数据,你可以从以下三个方向去找原因:
情况1:没有安装模拟器证书

解决:charles->Help -> Install Cahrles CA SSL Certificatein iOS Simulators (charles 3.9.3以上)


image.png

情况2:同时使用了其他的网络代理,产生冲突,charles无法抓取数据


image.png

情况3:就是你没有打开macOS Proxy,这个问题小编晚上研究了几个小时都没找出原因,后来无意中点了一下发现是这个原因造成的,一场乌龙,乌龙!!!
屏幕快照 2018-06-13 上午11.38.23.png

chares主要能为我们做什么?

主要功能

  • 支持SSL代理。可以截取分析SSL的请求。
  • 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
  • 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
  • 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
  • 支持重发网络请求,方便后端调试。
  • 支持修改网络请求参数。
  • 支持网络请求的截获并动态修改。
  • 检查HTML,CSS和RSS内容是否符合W3C标准。

应用一: 过滤网络请求
1.方法一:Filter 栏–>过滤关键字
2.方法二:在 Charles 的菜单栏选择
Proxy –> Recording Settings –>Include –> add( 依次填入协议+主机地址+端口号,实现只截取目标网站的封包 )

image.png

3.方法三:在想过滤的网络请求上右击,选择 “Focus”,在 Filter 栏勾选上 Focussed


image.png

应用二: 截取 Https 通讯信息
1.安装证书
“Help” –> “SSL Proxying” –> “Install Charles Root Certificate” –> 输入系统的帐号密码,即可在 KeyChain 看到添加好的证书。
Charles 默认也并不截取 Https 网络通讯的信息,若想对截取某网站上所有 Https 网络请求,在该请求上右击选择 SSL proxy

image.png
image.png
  • 2.截取移动设备中的 Https 通讯信息
  • 2.1 Help –> SSL Proxying –> Install Charles Root Certificate on a Mobile Device or Remote Browser
  • 2.2 在手机浏览器中访问地址:「http://charlesproxy.com/getssl
image.png

注意:默认情况下 Charles 并不做截取,你还需要在要截取的网络请求上右击,选择 SSL proxy 菜单项

3.补充一点
还要进入 设置->关于本机→证书信任设置
打开相关的开关

应用三: 模拟慢速网络
1.选择 Proxy –> Throttle Setting –>勾选上 Enable Throttling –> 选择Throttle Preset 类型


image.png

2.若只想模拟指定网站的慢速网络,再勾选图中的 Only for selected hosts 项,然后在对话框的下半部分设置中add指定的 hosts 项

对于弱网这个,还是比较重要,当你的网络无法某种环境的时候,你是需要利用一些工具去模拟的,经得起各种临界环境测验的App才是优质App。

总结

为什么小编要突然想起来要写这篇文章,是因为那边晚上我回去突然发现我家里电脑的模拟器抓不了包,但是我公司电脑模拟器是可以抓包,这就意味着之前这个问题遇到过,解决了,只是想不起来是如何解决的,一整晚都在找各种方法,问题没解决,觉还没睡好。所以当大家遇到一个比较好问题,解决了的同时,还要及时做好一些笔记去归纳去总结,这样下次很快就可以解决,不用浪费太多时间。知识只有不断的自我归纳,才能形成良好的体系。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • 简介 Charles 是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协...
    faunjoe阅读 740评论 0 0
  • 必须用海绵一样的眼神 去触碰殷红的呼吸 不要惊动空气 或许遗忘,或不想谈起 荒岛上长出的影子 像黄金般沉默 从枪口...
    萧竺阅读 180评论 0 1
  • 三国题材是影视剧的大热题材,但也是影视剧的“雷区”所在。毕竟小说《三国演义》在中国老少皆知,里面的人物早已定格化、...
    郭鸣睿阅读 1,014评论 0 1
  • 记得以前是一过完中秋节就念叨着自己生日了,找爷爷要点吃的,奶奶烧的丰盛的饭菜,外婆给的零花钱,就一天过得好开心,好...
    清炒虾仁阅读 144评论 0 0
  • 前天去了姨妈家,吃到了姨妈亲自做的大包子!真是好好吃呀!自从工作了,去姨妈家的次数明显减少了,每次都是匆匆去,...
    斜杠小孩阅读 230评论 0 0