HTTP抓包工具之Charles
Charles简介
Charles是一个HTTP代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。
Charles主要功能:
- 支持SSL代理。可以截取分析SSL的请求。
- 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
- 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
- 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 检查HTML,CSS和RSS内容是否符合W3C标准。
以上介绍了Charles的主要功能,个人在使用过程中主要用的是抓取HTTP和HTTPS请求。特别是HTTPS的请求,抓取起来还是有一些麻烦,特此记录。
Charles 抓包原理
市面上绝大多数的抓包软件,背后的原理都是中间人攻击(Man-in-the-middle attack,缩写:MITM)。
维基百科是这样定义 MITM 的:中间人攻击在密码学和计算机安全领域中是指攻击者与通讯的两端分别建立独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。
上面的定义写的很清晰,下图中结合箭头方向就能看懂 HTTP Packets 的流向:
Charles的使用
Charles的安装过程是比较简单,只需到 官网下载安装即可。比较困难的是HTTPS请求的配置。
Windows下HTTPS请求抓包
1、配置SSL支持。点击【Proxy】–>【SSL Proxying Settings…】,在弹出选项卡中,勾选【Enable SSL Proxying】点击【add】,在Host输入【*】表示接收任何主机,在Prot输入【*】表示任何端口,最后点击【ok】保存。
2、安装证书。点击【Help】–>【SSL Proxying】–>【Install Charles Root Certificate】,按照引导流程安装证书。
完成后打开IE进行测试:出现证书错误!
打开Chrome测试:
打开Edge测试:
都被安全拦截了,装了证书都不起作用。
解决方案:安装Firefox!
安装完毕后在开启Charles时,使用Firefox打开,http://chls.pro/ssl,弹出如下页面:
选择保存文件后按确定。文件默认保存到下载文件夹。
打开Firefox【设置】–>【隐私与安全】–>【证书】–>【查看证书】
使用【证书管理器】–>【证书办法机构】–>【导入】进行导入操作。
iOS下HTTPS请求抓包
在PC上开启共享网络。将手机连接到PC共享的WIFI上。
在手机上设置代理地址,代理IP为PC的IP,端口为Charles的端口。
在手机自带浏览器Safari中输入chls.pro,完成后需要进入【设置】安装描述文件。安装完毕后,如果是iOS 10 以后需要进入【设置】–>【通用】–>【关于本机】–>【证书信任设置】,开启证书。
Android下HTTPS请求抓包
在PC上开启共享网络。将手机连接到PC共享的WIFI上。
在手机上设置代理地址,代理IP为PC的IP,端口为Charles的端口。
在手机默认浏览器中输入chls.pro,下载downloadfile.crt文件,然后在【我的下载】中进行打开,按引导进行安装。