|
手艺频道
|
51CTO旗下网站
金沙js088
|
|
挪动端
www.js29.com

基于iOS的Charles抓包理论

在运用开辟历程中,经由过程抓包调试服务端接口的场景经常泛起。Charles和Wireshark是开辟历程中最常用的两款软件。那么今天,让我们以iOS为例,聊一聊Charles抓包。

作者:360手艺|2019-03-25 22:20

在一样平常开辟中,我们没法看到应用程序取服务器之间发送和吸收的内容,没有这类可见性,我们在肯定毛病的切实位置时会异常难题且耗时。而Charles是一个运转在PC上的Web署理,我们将应用程序设置为经由过程Charles接见网络,便能够在Charles上纪录并显现发送和吸收的所有数据,进而能够大大进步调试顺序的效力。

从下图能够看出Charles的脚色:

Charles的脚色

Charles有以下几个常用功用:

  • 恳求预览:经由过程分组或序列视图预览和过滤恳求数据;
  • 恳求抓包:抓取HTTP和HTTPS的恳求数据和相应数据;
  • 恳求断点:阻拦指定的恳求或相应,预览中央的数据;
  • 数据修正:修正恳求数据和相应数据以合营数据测试;
  • 恳求重发:指定恳求反复发送,以测试后端功用和机能;
  • 网速模仿:设置网速提早,模仿手机上2G/3G/4G网络;

因为Charles的功用许多,很易在文章中详实引见,以是作者以在项目中对Charles的运用为切入点,对最常用、最有效的几个功用停止引见。

一、安装Charles

Charles是免费软件,有30天的免费试用限期,

以后每运用30分钟会被强退一次,重启后可继承运用。

从Charles官网能够获得Charles安装包。

二、恳求预览

Charles启动后,便运转在抓包形式。因为Charles会主动设置PC浏览器的署理,以是,随便翻开一个网页(只要有网络恳求便可)便可预览到恳求信息。

PS:若是运用插件为浏览器设置了自力署理,请封闭插件大概设置成体系署理。

Charles供应了Structure和Sequence两种预览形式。

Structure以域名对恳求停止分组,能够很轻易天预览统一域名下的恳求数据,也方便于一样平常开辟中对某一服务接口的剖析和处置惩罚。图示以下:

金沙@js5网址

Sequence以工夫递次显现恳求信息,能够最间接的预览恳求信息。在此形式下,能够运用Filter过滤恳求,针对性剖析。图示以下:

在两种形式下,皆能够经由过程切换标签(Overview、Request、Response等)预览不同类型的恳求信息。在最常用的Request和Response标签下,借能够经由过程切换子标签(Headers、Cookies、Text等)预览对应标签详细内容。图示以下:

基于iOS的Charles抓包理论

三、恳求抓包

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

对从手机(以iPhone示例)收回的恳求停止抓包,需求包管iPhone和PC事情在统一局域网内。

第1步:获得PC的IP地点

在Charles菜单栏 -> Help -> Local IP Address中能够检察PC的IP地点。图示以下:

基于iOS的Charles抓包理论

也能够在Mac终端运用下令ifconfig en1检察PC的IP地点。图示以下:

基于iOS的Charles抓包理论

第2步:设置iPhone署理

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

基于iOS的Charles抓包理论

详细的端口能够从Charles菜单栏 -> Proxy -> Proxy Settings中检察。图示以下:

基于iOS的Charles抓包理论

iPhone署理设置完成后,Charles会弹出衔接提醒框,点击Allow以后便可运用Charles对从该iPhone收回的恳求停止抓包了。图示以下:

金沙js088

第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按钮便可继承实行恳求。

五、数据修正

Rewrite和Breakpoint Editing皆能够起到修正恳求数据的感化。

1. Rewrite

在Charles菜单栏 -> Tools -> Rewrite中能够开启Rewrite功用,点击Add按钮能够增加一条设置,并能够在右边的Locations和Rules平分别增加要Rewrite的恳求途径和Rewrite划定规矩。图示以下:

基于iOS的Charles抓包理论

Rewrite合适应用于对恳求的批量和临时修正,对恳求数据影响较大(测试完毕后常常遗忘去掉划定规矩)。以是,在一些轻量级的数据修正场景中,我常常联合Breakpoint功用修正数据。

2. Breakpoint Editing

联合断点功用,能够很好的实现暂时修正恳求的Request / Response数据的需求。为某条恳求设置断点后,当该恳求发作时,会主动跳到断点窗口。点开Edit Request / Response界面,能够看到中央信息,选择适宜的数据格式(HTML、Json等)停止修正。修正完成后,点击Execute按钮便可在终端上看到修正后的的结果。图示以下:

基于iOS的Charles抓包理论

六、恳求重发

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

单击Repeat会重发该恳求一次,常用于测试服务接口可否一般接见,客户端可否一般收到返回数据等。单击Advanced Repeat会弹出重发参数编纂页面,图示以下:

基于iOS的Charles抓包理论

在此编纂界面上,能够自定义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网络情况。图示以下:

基于iOS的Charles抓包理论

运用Throttle功用,能够轻易天排插由于若网而致使的bug,而这类bug在线上很容易泛起,并且很易排查复现。

【本文是51CTO专栏机构360手艺的原创文章,微疑民众号“360手艺( id: qihoo_tech)”】

【编纂推荐】

【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0
  •     
分享:
金沙@js5网址
人人皆在看
猜您喜好
  • 金沙@js5网址

360手艺

本周排行
本月排行
js383.com

视频课程

讲师:31589人进修过

讲师:42938人进修过

讲师:25875人进修过