简介
Charles是一款用于网络调试和分析的代理工具,可以拦截和查看设备与服务器之间的网络通信。通过Charles,可以监视应用程序的网络流量、修改请求和响应,甚至模拟不同的网络条件。其主要功能包括:
- 截取http和https网络封包。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 支持模拟慢速网络。
Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。
使用Charles进行Web网络抓包非常简单,启动Charles会自动与浏览器设置成代理,不需要进行过多的设置,接下来就是通过浏览器发送网络请求,Charles就会直接抓取到这些信息和响应信息。
Charles抓包不仅仅可以抓取来自电脑端的HTTP请求,也能够抓取来自App发出的HTTP请求,但是手机抓包需要在电脑端配置下,并且需要手机和电脑在同一网络下,即需要完成下面的设备代理设置步骤。
虽然现在Charles能够直接抓包了,但是https协议的报文我们是抓取不了的,需要安装SSL证书才可以,即需要完成下面的Charles证书下载与证书安装步骤。
Charles配置流程
Charles整体的配置流程分为以下三步:
设备代理设置。
查看Charles的IP地址。
Charles的IP地址查看方式:点击【Help】---\>【Local IP Address】查看。
- 电脑IP地址查看方式:打开“运行”(快捷键:win+R键或者在任务栏的”搜索”按钮中查找并点击”运行”),输入“cmd”后进入命令行窗口,在命令行窗口中输入”ipconfig”命令查看IP。
设置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】。
手机与PC连接在同一局域网下,手机Wi-Fi设置为手动代理,服务器主机名与端口为Charles的IP地址和Charles监听的端口。
点击需要连接的Wi-Fi进入密码输入页面---\>在输入密码前点击【代理】---\>选择【手动】---\>设置代理的【服务器主机名】为Charles的IP地址,【服务器端口】为Charles监听的端口,即设置成8888---\>最后输入密码,连接上Wi-Fi。
说明:
第一次连接手机时需要在电脑Charles弹出的连接窗口中选择【Allow】。
Charles证书下载。
安装Charles根证书到PC可信任的目录下:
点击顶部菜单栏【Help】---\>选择【SSL Proxying】---\>点击【install Charles Root Certificate】---\>点击【安装证书】---\>设置存储位置(可选择当前用户或是本地计算机)后点击【下一步】---\>选择【将所有的证书都放入下列存储】---\>点击【浏览】---\>设置证书存储路径为【受信任的根证书颁发机构】。
导入系统根证书至手机:
点击Charles顶部菜单栏【Help】---\>选择【SSL Proxying】---\>点击【Install Charles Root Certificate On a Mobile Device or Remote Browser】---\>在手机的自带浏览器中访问http://chls.pro/ssl---\>点击【立即下载】,将证书下载至手机内存内。
<p id="p1897112555512">【Install Charles Root Certificate On a Mobile Device or Remote Browser】</p> <p id="p139718512554">访问http://chls.pro/ssl</p> <p id="p129725515514"><span><img id="image7972259557" src="figures/导入-new.png" height="159.60000000000002" width="523.6875"></span></p> <p id="p1897218518550"><span><img id="image89725510554" src="figures/zh-cn_image_0000002043941893.png"></span></p>
在移动设备上安装Charles证书。
证书在手机上的安装步骤如下:
在手机端点击【设置】---\>【隐私和安全】---\>下滑点击【高级】---\>选择【证书与凭据】进入证书的安装选项中---\>选择【从存储设备安装】---\>点击【CA证书】---\>点击【继续】---\>选择【浏览】---\>找到下载的证书的位置---\>点击证书---\>弹出【安装证书成功】的弹窗文字,则安装成功。
网络请求过滤
通常情况下,我们需要对网络请求进行过滤,只监控指定目录服务器上发送的请求。对于这种需求,有以下两种办法:
在主界面的中部点击Ctrl+F快捷键打开搜索栏中填入需要过滤出来的关键字。例如我们监听的地址是:www.charlesproxy.com, 那么只需要在上方过滤条件中填入或勾选你需要的信息后点击【Find】按钮即可。
在 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受信任的根证书颁发机构目录下。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。