使用Charles进行网络抓包
简介
Charles是一款用于网络调试和分析的代理工具,可以拦截和查看设备与服务器之间的网络通信。通过Charles,可以监视应用程序的网络流量、修改请求和响应,甚至模拟不同的网络条件。其主要功能包括:
- 截取http和https网络封包。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 支持模拟慢速网络。
Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。
使用Charles进行Web网络抓包非常简单,启动Charles会自动与浏览器设置成代理,不需要进行过多的设置,接下来就是通过浏览器发送网络请求,Charles就会直接抓取到这些信息和响应信息。
Charles抓包不仅仅可以抓取来自电脑端的HTTP请求,也能够抓取来自App发出的HTTP请求,但是手机抓包需要在电脑端配置下,并且需要手机和电脑在同一网络下,即需要完成下面的设备代理设置步骤。
虽然现在Charles能够直接抓包了,但是https协议的报文我们是抓取不了的,需要安装SSL证书才可以,即需要完成下面的Charles证书下载与证书安装步骤。
Charles配置流程
Charles整体的配置流程分为以下三步:
1. 设备代理设置。
a. 查看Charles的IP地址。
- Charles的IP地址查看方式:点击【Help】--->【Local IP Address】查看。
- 电脑IP地址查看方式:打开“运行”(快捷键:win+R键或者在任务栏的”搜索”按钮中查找并点击”运行”),输入“cmd”后进入命令行窗口,在命令行窗口中输入”ipconfig”命令查看IP。
b. 设置Charles侧的调试端口号。
- 点击 【Proxy】--->【SSL Proxy Settings...】--->在Include栏下点击【Add】--->添加【*:*】即 Host输入【*】Port输入【*】,添加 【*:443】,即Host输入【*】Port输入【443】--->最后点击【ok】;
- 点击 【Proxy】--->【Proxy Settings...】--->设置【HTTP Proxy】下的Port(即Charles监听的端口,默认是8888)--->勾选【Enable transparent HTTP proxying】--->最后点击【ok】。
c. 手机与PC连接在同一局域网下,手机Wi-Fi设置为手动代理,服务器主机名与端口为Charles的IP地址和Charles监听的端口。
点击需要连接的Wi-Fi进入密码输入页面--->在输入密码前点击【代理】--->选择【手动】--->设置代理的【服务器主机名】为Charles的IP地址,【服务器端口】为Charles监听的端口,即设置成8888--->最后输入密码,连接上Wi-Fi。
说明:
第一次连接手机时需要在电脑Charles弹出的连接窗口中选择【Allow】。
2. Charles证书下载。
a. 安装Charles根证书到PC可信任的目录下:
点击顶部菜单栏【Help】--->选择【SSL Proxying】--->点击【install Charles Root Certificate】--->点击【安装证书】--->设置存储位置(可选择当前用户或是本地计算机)后点击【下一步】--->选择【将所有的证书都放入下列存储】--->点击【浏览】--->设置证书存储路径为【受信任的根证书颁发机构】。
b. 导入系统根证书至手机:
点击Charles顶部菜单栏【Help】--->选择【SSL Proxying】--->点击【Install Charles Root Certificate On a Mobile Device or Remote Browser】--->在手机的自带浏览器中访问http://chls.pro/ssl--->点击【立即下载】,将证书下载至手机内存内。
3. 在移动设备上安装Charles证书。
证书在手机上的安装步骤如下:
在手机端点击【设置】--->【隐私和安全】--->下滑点击【高级】--->选择【证书与凭据】进入证书的安装选项中--->选择【从存储设备安装】--->点击【CA证书】--->点击【继续】--->选择【浏览】--->找到下载的证书的位置--->点击证书--->弹出【安装证书成功】的弹窗文字,则安装成功。
网络请求过滤
通常情况下,我们需要对网络请求进行过滤,只监控指定目录服务器上发送的请求。对于这种需求,有以下两种办法:
1. 在主界面的中部点击Ctrl+F快捷键打开搜索栏中填入需要过滤出来的关键字。例如我们监听的地址是:www.charlesproxy.com, 那么只需要在上方过滤条件中填入或勾选你需要的信息后点击【Find】按钮即可。
2. 在 Charles 的菜单栏选择【Proxy】--->【Recording Settings...】--->然后选择 Include 栏--->点击【Add】添加一个项目--->按需填入需要监控的协议后重新监听,这样就可以只截取目标网站了。
常见问题
Q1:通过web组件是否支持使用charles工具抓包 ?
A1:当前能力可支持。
Q2:2300077 Problem with the SSL CA cert (path? access rights?) 证书无法使用或路径下证书不存在报错如何解决?
A2:需要检查下capath设置证书路径是否可访问、证书文件是否存在。
Q3:2300060 远程服务器SSL证书或SSH秘钥不正确是什么原因导致?
A3:使用为charles证书或系统根证书无法通过https校验 ,需替换为请求的域名证书。
Q4:在手机的自带浏览器中访问http://chls.pro/ssl失败如何解决?
A4:请检查是否在同一局域网下,并确保手机与电脑正常连接,需在第一次弹窗弹出时选择Allow选项。请检查是否按照上述设备代理设置的步骤执行,并将Charles根证书安装到PC受信任的根证书颁发机构目录下。