iOS Charles抓包

级别:★★☆☆☆
标签:「iOS手机抓包」「iOS HTTPS抓包」「Charles证书」
作者: Xs·H
审校: QiShare团队


前言:在iOS应用开发过程中,通过抓包调试服务接口的场景时常出现。Charles和Wireshark是我在iOS开发过程中最常用的两款软件。

在日常开发中,我们无法看到应用程序与服务器之间发送和接收的内容,没有这种可见性,我们在确定故障的确切位置时会非常困难且耗时。而Charles是一个运行在PC上的Web代理,我们将应用程序配置为通过Charles访问网络,便可以在Charles上记录并显示发送和接收的所有数据,进而可以大大提高调试程序的效率。Charles官网

从下图可以看出Charles的角色:

Charles有以下几个常用功能:

  • 请求预览:通过分组或序列视图预览和过滤请求数据;
  • 请求抓包:抓取HTTP和HTTPS的请求数据和响应数据;
  • 请求断点:拦截指定的请求或响应,预览中间的数据;
  • 数据修改:修改请求数据和响应数据以配合数据测试;
  • 请求重发:指定请求重复发送,以测试后端功能和性能;
  • 网速模拟:设置网速延迟,模拟手机上2G/3G/4G网络;

由于Charles的功能很多,很难在文章中详尽介绍,所以作者以在项目中对Charles的使用为切入点,对最常用、最有用的几个功能进行介绍。

一、安装

Charles是收费软件,有30天的免费试用期限,之后每使用30分钟会被强退一次,重启后可继续使用。从Charles官网可以获取Charles安装包,也可以从互联网中查找破解版。

下载破解版时要注意甄别安装包来源,谨防木马和病毒。

二、请求预览

Charles启动后,就运行在抓包模式。由于Charles会自动配置PC浏览器的代理,所以,随意打开一个网页(只要有网络请求即可)即可预览到请求信息。

如果使用插件为浏览器设置了独立代理,请关闭插件或者设置成系统代理。

Charles提供了Structure和Sequence两种预览模式。
Structure以域名对请求进行分组,可以很方便地预览同一域名下的请求数据,也方便于日常开发中对某一服务接口的分析和处理。图示如下:

Sequence以时间顺序显示请求信息,可以最直接的预览请求信息。在此模式下,可以使用Filter过滤请求,针对性分析。图示如下:

在两种模式下,都可以通过切换标签(Overview、Request、Response等)预览不同类型的请求信息。在最常用的Request和Response标签下,还可以通过切换子标签(Headers、Cookies、Text等)预览对应标签详细内容。图示如下:

三、请求抓包

使用工具栏的白圆红点按钮(快捷键是“Command+R”)可以使Charles在抓包(Start Recording)和不抓包(Stop Recording)之间切换。使用此按钮,在需要调试时再打开抓包功能可以有效减少干扰信息,而快速抓取到需要调试的请求。

对从手机(以iPhone示例)发出的请求进行抓包,需要保证iPhone和PC工作在同一局域网内。

1. 获取PC的IP地址

在Charles菜单栏 -> Help -> Local IP Address中可以查看PC的IP地址。图示如下:

也可以在Mac终端使用命令ifconfig en1查看PC的IP地址。图示如下:

2. 配置iPhone代理

在iPhone的设置 -> 无线局域网 -> 局域网信息(i) -> 配置代理 -> 手动中配置代理,服务器输入框中填写PC的IP地址,端口输入框中填写Charles的代理端口(一般是8888)。图示如下:

具体的端口可以从Charles菜单栏 -> Proxy -> Proxy Settings中查看。图示如下:

iPhone代理配置完成后,Charles会弹出连接提示框,点击Allow之后即可使用Charles对从该iPhone发出的请求进行抓包了。图示如下:

3. 抓包HTTPS请求

在配置iPhone代理完毕后,就可以通过Structure或者Sequence窗口预览HTTP请求的数据了。但由于HTTPS请求被加密过,预览请求时只能预览到乱码数据。要预览到HTTPS请求的数据明文,需要PC和iPhone安装证书授权。

1) PC安装证书

在Charles菜单栏 -> Help -> SSL Proxying -> Install Charles Root Certificate中可以为PC安装证书,证书可以在Mac的钥匙串中查看。图示如下:

证书可以在Mac的钥匙串中查看,双击证书,将信任权限设定为始终信任。图示如下:

2) iPhone安装证书

在iPhone浏览器中访问http://charlesproxy.com/getssl可以下载证书并安装。此地址一般不会变化,可以在Charles菜单栏 -> Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser中查看最新的官方证书下载地址。图示如下:

基于iOS的证书信任机制,在安装完成并信任证书后,需要到iPhone设置 -> 关于本机 -> 证书信任设置中启用根证书。图示如下:

这样,就可以使用Charles中抓包iPhone发出的HTTPS请求并预览明文数据了。

抓包模拟器上的HTTPS请求需要点击Install Charles Root Certificate in iOS Simulators安装证书。

3) 启动抓包SSL权限

在Charles菜单栏 -> Proxy -> SSL Proxying Settings中勾选Enable SSL Proxying,然后在Locations中添加需要抓包的Host和Port即可。图示如下:

也可以在抓包界面,右键点击某条/组请求,在弹出的选项列表中点击Enable SSL Proxying启用权限。图示如下:

四、请求断点

在Charles的请求预览界面中,右键点击某条/组请求,在弹出的选项列表中有Breakpoints选项。图示如下:

点击Breakpoints后即为该请求设定了断点。默认情况下,在该请求的Request / Response过程都会受断点控制,即在Request数据发送到的服务端之前会被暂停,在Response数据发送到客户端之前也会被暂停。可以从Charles菜单栏 -> Proxy -> Breakpoint Settings中编辑断点的参数。比如,只需要对Response过程加断点,可以将Request的勾选状态取消。图示如下:

在断点状态下,可以预览和修改请求的中间数据,之后点解Execute按钮即可继续执行请求。

五、数据修改

RewriteBreakpoint Editing都可以起到修改请求数据的作用。

1. Rewrite

在Charles菜单栏 -> Tools -> Rewrite中可以开启Rewrite功能,点击Add按钮可以添加一条设置,并可以在右侧的LocationsRules中分别添加要Rewrite的请求路径和Rewrite规则。图示如下:

Rewrite适合应用于对请求的批量和长期修改,对请求数据影响较大(测试结束后经常忘记去掉规则)。所以,在一些轻量级的数据修改场景中,我经常结合Breakpoint功能修改数据。

2. Breakpoint Editing

结合断点功能,可以很好的实现临时修改请求的Request / Response数据的需求。为某条请求设置断点后,当该请求发生时,会自动跳到断点窗口。点开Edit Request / Response界面,可以看到中间信息,选择合适的数据格式(HTML、Json等)进行修改。修改完成后,点击Execute按钮即可在终端上看到修改后的的效果。图示如下:

六、请求重发

在Charles的请求预览界面中,右键点击某条/组请求,在弹出的选项列表中有RepeatAdvanced Repeat两个选项。图示如下:

单击Repeat会重发该请求一次,常用于测试服务接口能否正常访问,客户端能否正常收到返回数据等。单击Advanced Repeat会弹出重发参数编辑页面,图示如下:

在此编辑界面上,可以自定义Iterations(重发次数)、 Concurrency(并发数)和 Repeat(重发延时),常用于对服务接口进行压力测试。

七、网速模拟

在Charles菜单栏 -> Proxy -> Throttle Settings中可以启用Throttling(节流)功能,并自定义Locations(受限服务接口)和Throttle Configuration(节流配置)。支持对Throttle preset(预置的数据传输方式)、Bandwidth(带宽) Utilisation(利用比率)、 Round-trip latency(往返延迟)、MTU(最大传输单元) Reliability(可靠性) Stability(稳定性)等参数进行编辑。其中,在Throttle preset支持模拟3G/4G网络环境。图示如下:

使用Throttle功能,可以方便地排插因为若网而导致的bug,而这类bug在线上很容易出现,而且很难排查复现。


关注我们的途径有:
QiShare(简书)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公众号)

推荐文章:
初探TCP
初探IP、UDP
iOS 多线程之线程安全
iOS 多线程之GCD
iOS 多线程之NSOperation
iOS 多线程之NSThread
iOS Winding Rules 缠绕规则
奇舞周刊

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

推荐阅读更多精彩内容

  • 没需求?No!不想拦截某个软件的接口数据瞧瞧到底干了啥?是否遇到想把返回数据更改下,来测试临界值情况,得找个...
    Maxdon阅读 17,173评论 5 51
  • Charles这个工具我想对于Android和iOS开发的小伙伴来说并不陌生,很多从机构学习的小伙伴做项目都是利用...
    英俊神武阅读 2,491评论 0 6
  • 转载地址:http://www.jianshu.com/p/5539599c7a25 如果没配置好,请往上走。 h...
    Again_lcl阅读 2,548评论 0 2
  • 1 什么是广告? 把这个问题丢给100个普通人,可能会得出100种答案。 电视上放的就是广告;广告是一种艺术;广告...
    贾桃阅读 1,406评论 0 2
  • 敬爱的李老师,智慧的班主任,亲爱的跃友们: 大家好!我是来自青岛西海岸新区直路房产的薛萍 今天是我的日精进行动第...
    薛艳萍阅读 154评论 0 1