iOS开发辅助工具-抓包工具-charles青花瓷

Charles可运行在Mac、Windows、Linux上。
官方免费30天,过期后,每次使用不能超过30分钟且启动有10秒延时。

大致原理:手机发出请求,先经过电脑上的Charles,再到服务端;服务端的响应先经过电脑上的Charles,再到手机上。

功能特点:
1、查看http请求的数据;
2、查看https请求的数据;
3、设置断点,修改数据,再发给手机;
4、模拟慢速网络;
5、过滤网络请求;
6、重新向服务器发请求;
7、给服务器做压力测试;
8、修改服务器返回内容 - 3种方案
9、反向代理(即:经过charles的时候,帮我们变更为指定的端口)

设置charles:
1、http数据抓取:电脑和手机的wifi要一致,手机WIFI上设置HTTP代理,如下图,
服务器:打开电脑的网络设置,查看IP地址即可,端口:8888。
设置完后,电脑上弹框,点击allow,就可以抓取手机上所有的http请求数据了。


设置手机HTTP代理,让手机的网络通过电脑

2、https数据抓取:

在http抓包的基础上再进行设置。
2.1 手机安装SSL证书到手机,点击Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device;根据弹框信息,在手机浏览器上输入地址 chls.pro/ssl
,下载安装证书。对于10.3的系统,需要多做一步:前往设置→通用→关于本机→证书信任设置 打开信任开关。

Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device
手机safari上输入弹框中的地址chls.pro/ssl
出现安装页面,点击安装
10.3的系统,需要多做一步:前往`设置→通用→关于本机→证书信任设置` 打开信任开关

此时,https的数据还是不能抓取到的,还需针对具体https的接口做单独设置:

Host设置要抓取的https接口,比如想抓这个:


开始操作:Proxy -> SSL Proxying Settings...


这个时候,手机重新发送https请求,可看到抓包:

引用 —— 十分钟学会Charles抓包(iOS的http/https请求)


模拟慢速网络

1.菜单中选择【Proxy】--->【Throttle Settings..】- 激活【Enable Throttling】。
2.在Throttle Configuration设置弱网的参数。
3.以下是各种2G3G4G网制式的速率参考文档:
移动网络制式与网速的参考文档

弱网模拟设置

设置断点,修改数据(Breakpoints 功能,适合临时一次修改网络请求结果)

设置断点的两种方式之一:鼠标右击


Snip20180226_3.png

设置断点的两种方式之二:Proxy --> Breakpoint Setting,手动填写,如果不知道怎么写,可参照鼠标右击设置好的怎么写

设置完后,手机发送请求,跑到断点界面,修改数据:

注意:使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。


过滤网络请求(过滤的内容是URL字符)

网络请求的内容太多了,但我们只需要看某个host的内容,这时候,就需要过滤下了。

三种方式之一(临时性过滤):在Filter 栏中填入要过滤的url所包含的字符:

三种方式之二(临时性过滤):sequence界面、右击、focus、选中focused,过滤的内容为host的字符。

Snip20180226_11.png
被focus后在Structure界面的分组显示情况

三种方式之三(经常性过滤):“Proxy”->”Recording Settings”->“Include”,这方式可以设置多个过滤host。

---- 参考来自唐巧de文章:《 Charles 从入门到精通

重新向服务器发请求

调试接口,需要反复尝试不同参数。Charles提供了网络请求修改和重发请求的功能。避免频繁运行Xcode来调试接口。

点击add添加该条请求的所有参数,URL和Form处都要填写,再Execute。

URL和Form选项都要填写

给服务器做压力测试

也就是重复给服务器发送请求,来简单的测试服务器的并发处理能力。

Snip20180305_2.png
Snip20180305_3.png

修改服务器返回内容 - 3种方案

使用场景:有些字段服务器暂时没有数据或者超时,这时候我们可以通过charles的功能来得到数据。

根据具体的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:
1、Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。(重定向到本地文件有潜在问题)
2、Rewrite 功能适合对网络请求进行一些正则替换。
3、Breakpoints 功能适合做一些临时性的修改。

Map 功能

charles 的 map 又分为 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。

进入 Map 设置的两种方式:

方式一:对某个请求鼠标右击。该种方式的好处是,对于刚开始使用,不知道怎么填写的人来说,Map From 已经自动帮你填写好了, Map To 可以照着格式写。该种方式只针对鼠标选中的那条请求。

第一步
第二部:Map Local
第二部:Map Remote

方式二:“Tools”->”Map Remote” 或 “Map Local” ,该方式可以添加多条请求的重定向。

Snip20180305_8.png

对于 Map Local 的本地目标文件,可以先 Save Response 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件。

charles-save-response.png

比如把一个请求映射到本地的一个修改过的文件:

charles-map-local.png

注意问题:Map Local 在使用的时候,有一个潜在的问题,就是其返回的 Http Response Header 与正常的请求并不一样。这个时候如果客户端校验了 Http Response Header 中的部分内容,就会使得该功能失效。

解决办法:同时使用 Map Local 以下面提到的 Rewrite 功能,将相关的 Http 头 Rewrite 成我们希望的内容。

Rewrite 功能
Snip20180305_10.png

目前还不知道怎么用 Map Local 和 Rewrite 联合起来用。没试成功。

Breakpoints 功能

上面提到过了: 《设置断点,修改数据》

反向代理

即:经过charles的时候,帮我们变更为指定的端口

Charles 的反向代理功能允许我们将本地的端口映射到远程的另一个端口上。例如,在下图中,我将本机的 61234 端口映射到了远程(www.yuantiku.com)的80端口上了。这样,当我访问本地的 61234 端口时,实际返回的内容会由 www.yuantiku.com 的 80 端口提供。

---- 参考来自唐巧de文章:《 Charles 从入门到精通

扩展阅读:
charles本地调试之map和rewrite功能

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

推荐阅读更多精彩内容