一、英雄不问出处?
Charles是目前强大、流行的http抓包调试工具,Mac、Unix、Windows各个平台都支持,其功能强大到包括:
1. 支持SSL代理,可以截取分析SSL的请求
2. 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
3. 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
4. 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
5. 支持重发网络请求,方便后端调试。
6. 支持修改网络请求参数。
7. 支持网络请求的截获并动态修改。
8. 检查HTML,CSS和RSS内容是否符合W3C标准
So、特别是做APP开发,抓取APP网络请求、调试与服务端的通信,尤其真机测试网络请求时,Charles是必备工具。
Charles的工作原理很简单,本质是就是一个http抓包分析工具,在工作的时候需要先把charles设置成代理服务器,这样所有的网络请求都会经过charles了。
在此借用网友的示例图(侵删)为大家详细展示一哈
1.普通http请求过程
2.加入了Charles的HTTP代理的请求与响应过程
Charles的安装的话可以去官网http://www.charlesproxy.com/download/下载,当然正式版的是需要付费的,大家可以找度娘安装破解版的,方便又舒心
二、超神之路
首先是如何用Charles抓取电脑模拟器的网络请求。电脑模拟器抓包相对比较简单,只需设置Charles代理即可。如图,打开Charles后,选择工具栏Proxy,确认勾选MAC OS X Proxy选项即可完成代理设置
这里需要为大家解释的是,Charles 主要提供两种查看封包的视图,分别名为 “Structure”和 “Sequence”。其中Structure 视图将网络请求按访问的域名分类;Sequence 视图将网络请求按访问的时间排序。大家可以根据具体的需要在这两种视图之前来回切换。Request的数据直接JSON格式化。如图
下面为大家详细介绍用Charles抓取手机APP网络请求的具体步骤。需要注意的是,抓取手机APP网络请求时,手机和电脑必须在一个局域网内,不一定非要是一个ip段,只要是同一个路由器下就可以了。
Step1:开启Charleshttp代理;
Step2:手机端Wifi添加代理;
Step3:开启Charles录制功能;
Step4:启动APP开始抓包;
Step 1: 开启Charleshttp代理
a.设置Charles代理。因为只是要监控手机端APP网络请求,所以将此前设置的电脑代理勾去掉
a.激活http代理功能。进入Proxy->Proxy Setting,设置http proxy代理端口:8888(一般默认设置为这个)
Step 2: 手机端Wifi添加代理
点击你所连接的wifi - - 选择手动 -- 输入代理服务器的IP与端口
IP即你的电脑IP地址(打开电脑的网络设置,里面就醒目的显示了IP地址,或者打开终端,使用ifconfig命令查看),端口就是前面一步设置Charles时所设置的端口(即8888)。
此处需要注意的是,当结束抓包时,要记得把手机WiFi代理恢复过来(选择自动即可),否则会影响手机上网
Step3:开启Charles录制功能
当手机连接上代理后Charles会弹出相应的提示框,点击Allow即可。点击工具栏上的开始录制按钮,即启动了Charles的抓包功能了(录制按钮有的版本是默认开启的)
Step 4:启动应用开始抓包
此时只需启动你想抓包的APP就可以完成抓包,查看网络请求的数据了。因为现在大部分APP网络请求都做了加密处理,而Charles是不会进行自动解密的,所以会经常看到以下乱码。但是Charles作为测试时期的工具还是十分方便的。
三、获奖感言
到此Charles简单的网络请求抓取已经完成。当然,如此强大的工具并不仅仅只有这一个功能,后续会陆续为大家带来Charles工具其他功能的使用讲解,敬请期待。
更多技术知识