我们在开发的过程中,往往需要对网络信息进行抓包,如果是Debug的安卓应用可以使用Android Studio自带的抓包工具Network Inspector进行抓包。
在pc端的抓包工具有很多例如Fiddler、Wireshark、httpwatch等,本文主要介绍Charles(花瓶)进行介绍。下文所有的安装,设置均以mac为例,windows也相似,如果有需求还请自行探索~
1. 软件的安装与激活
Charles官网
Charles下载地址
Charles激活码生成地址
注意 本文仅供个人学习研究和交流使用,请勿用于任何商业用途。
- 安装:过程非常简单,一路授权确认即可,不做赘述。
- 激活:通过Charles激活码生成地址可以生成一个任意名字的激活码,之后在Help->Register Charles中输入对应的name和License Key即可完成破解。
2. 软件介绍
Charles是一个运行在你自己的计算机上的web代理(HTTP代理/ HTTP监视器)。可以将你的web浏览器(或任何其他Internet应用程序)配置为通过Charles访问Internet,Charles能够为你记录和显示发送和接收的所有数据。
在Web和Internet开发中,你无法看到Web浏览器/客户端和服务器之间正在发送和接收什么。如果没有这种可见性,要确定故障的确切位置是非常困难和耗时的。Charles可以方便地查看正在发生的情况,因此可以快速诊断和修复问题。
特性:
- SSL代理-以纯文本查看SSL请求和响应
- 带宽节流,以模拟较慢的互联网连接,包括延迟
- AJAX调试——将XML和JSON请求和响应视为树或文本
- AMF -以树的形式查看Flash Remoting / Flex Remoting消息的内容
- 重复请求以测试后端更改
- 编辑请求以测试不同的输入
- 用于拦截和编辑请求或响应的断点
- 使用W3C验证器验证记录的HTML、CSS和RSS/原子响应
3. 软件配置
3.1 系统代理权限
启动 Charles后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy”来将 Charles 设置成系统代理。
3.2 安装根证书
“help”->“SSL Proxy”->“install Charles Root Certificate
3.3 证书不受信任解决办法
之后可以在系统的“钥匙串访问”中看到安装的证书,右键这个证书,在显示简介里选择始终信任。
3.4 https乱码解决办法
“proxy”->“SSL proxy setting” 选中SSL代理的开关,之后在include中添加一个host为 * ,port为443的配置,表示解析所有域名的443端口。
3.5 抓取https请求出现unknown解决办法
“proxy”->“Proxy setting” 设置http代理端口为8888,并勾选启用透明http代理。
3.6 Android和iOS安装证书
如果我们需要在iOS 或 Android 机器上截取 Https协议的通讯内容,还需要在手机上安装相应的证书。点击Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”
之后就会看到类似下面的提示,根据提示即可完成证书安装
Configure your device to use Charles as its HTTP proxy on 192.168.53.16:8888, then browse tochls.pro/ssl to download and install the certificate.
Note that on iOS 10 and later you must then go into Settings > General > About > Certificate Trust
Settings and enable the Charles certificate to be trusted.
4. 软件使用技巧
4.1 抓包数据查看
Charles提供了Structure和Sequence两种数据视图,可以根据自己的需求进行切换,底部有对应的过滤器,可以过滤出指定域名的数据
4.2 自行组装网络请求
“tools”->“compose” 可以用于调试服务器的接口,需反复尝试不同参数的网络请求。
4.3 模拟弱网环境
“proxy”->“Throttle Setting”可以用来限制网速,模拟弱网环境。
列举几个常见的功能以供参考,Charles的能力远不止于此,类似设置断点,服务器压力测试等这里不做赘述,其他功能还请自行探索~