一、英雄不问出处?
Charles是目前强大、流行的http
抓包调试工具,Mac
、Unix
、Windows
各个平台都支持,其功能强大到包括:
- 支持SSL代理,可以截取分析SSL的请求
- 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
- 支持AJAX调试。可以自动将
json
或xml
数据格式化,方便查看。 - 支持AMF调试。可以将
Flash Remoting
或Flex Remoting
信息格式化,方便查看。 - 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 检查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段,只要是同一个路由器下就可以了。
开启
Charles http
代理;手机端
Wifi
添加代理;开启
Charles
录制功能;启动
APP
开始抓包;开启
Charles http
代理
a.设置Charles
代理。因为只是要监控手机端APP网络请求,所以将此前设置的电脑代理勾去掉
a.激活http代理功能。进入Proxy->Proxy Setting,设置http proxy代理端口:8888(一般默认设置为这个)
- 手机端
Wifi
添加代理
点击你所连接的wifi - - 选择手动 – 输入代理服务器的IP与端口
IP即你的电脑IP地址(打开电脑的网络设置,里面就醒目的显示了IP地址,或者打开终端,使用ifconfig
命令查看),端口就是前面一步设置Charles
时所设置的端口(即8888)。
此处需要注意的是,当结束抓包时,要记得把手机WiFi代理恢复过来(选择自动即可),否则会影响手机上网
- 开启Charles录制功能
当手机连接上代理后Charles
会弹出相应的提示框,点击Allow
即可。点击工具栏上的开始录制按钮,即启动了Charles
的抓包功能了(录制按钮有的版本是默认开启的)
- 启动应用开始抓包
此时只需启动你想抓包的APP就可以完成抓包,查看网络请求的数据了。因为现在大部分APP网络请求都做了加密处理,而Charles
是不会进行自动解密的,所以会经常看到以下乱码。但是Charles
作为测试时期的工具还是十分方便的。
三、获奖感言
到此Charles
简单的网络请求抓取已经完成。当然,如此强大的工具并不仅仅只有这一个功能,后续会陆续为大家带来Charles
工具其他功能的使用讲解,敬请期待。