Mac OS X 下抓包工具 Charles 使用[ZT]

对于经常在 Windows 下进行 Web 开发的人来说,Fiddler 是神器。但由于它是 .Net Framework 下开发的,注定了用于 Linux 或者 Unix 之类系统上只能通过反向代理,如果不在同一个局域网内,非常麻烦。

还好在 Mac OS X 下我们还有 Charles

和 Fiddler 相比较,二者的功能不相伯仲。优势在于 Charles 跨平台能力强,Charles 支持 Windows/Mac OS/Linux,Fiddler 只能安装在 Windows 下;劣势在于 Charles 是商业软件,最便宜也得 50 美金。

当然,网上已经有很多破解版,感兴趣的网友请自己搜索。

一些使用技巧如下:

记录设置

主菜单 Proxy->Recording Settings…

Include 填写必须要记录的域名,可以使用通配符 和 ?,如: .beginios.com

Exclude 填写不需要记录的域名,可以使用通配符 * 和 ?

注:如果不设置此项,表示全部记录

禁用缓存

主菜单 Tools->No Caching…

勾选后,每次都从服务器读取

iOS 设备 HTTP 抓包

确保 iOS 设备和 Mac 电脑在同一个局域网内,启动 Charles
打开 Proxy->Proxy Settings…,勾选 Enable transparent HTTP proxying
查看 Mac 电脑的 IP 地址,如:192.168.1.100
打开 iOS 设备的设置,进入当前 Wifi 连接,设置 HTTP 代理切换到“手动”,将服务器填为上一步中获得的 IP,端口填8888
iOS 设备中,打开你要抓包的应用进行网络操作
Charles 弹出确认框,点击 Allow 按钮即可
HTTPS抓包

下载 Charles 证书,解压后导入到 iOS 设备中(将 crt 文件作为邮件附件发给自己,再在 iOS 设备中点击附件即可安装;也可上传至 dropbox 之类的网盘,通过 safari 下载安装)
在Charles的工具栏上点击设置按钮,选择 Proxy Settings…
切换到 SSL 选项卡,选中 Enable SSL Proxying,然后在 Locations 表单填写要抓包的域名和端口,点击Add按钮,在弹出的表单中 Host 填写域名,比如填 api.weibo.com,Port 填 443

替换本地文件

Tools –> Map Local…

网络延迟功能

主菜单 Proxy->Throttle Settings…

可以用于测试慢速网络下程序的兼容性