1 前言
1.1 介绍
Charles是一款强大的网络抓包工具,主要用于分析和调试网络流量。它适用于多种操作系统,包括 Windows、macOS和linux。
Chaels可以捕获 http和https协议的请求和响应,帮助开发人员和测试人员了解应用程序与服务器支架的通信情况,以及识别潜在的问题。
官网:https://www.charlesproxy.com/
1.2 主要功能介绍
- 抓包功能:Charles可以接货设备和服务器之间的网络通信,无论是浏览器、移动应用还是其他网络请求,都能够捕获和显示相关的请求和响应。
- 支持多种协议:Charles主要用于http和https协议的分析,但它还支持许多其他网络协议,如WebSocket、FTP等。
- SSL代理和解密:对于https流量,charles可以作为中间人代理,使得开发人员可以查看加密后的数据,这对于调试和排查安全问题非常有帮助。
- 请求和响应查看:Charles以直观的方式展示请求和和响应,包括头部信息、主体内容、响应状态码等。这有助于开发人员深入了解通信细节。
- 重发和编辑请求:在Charles中,您可以编辑请求的内容并重新发送,从而测试不容的情况、这对于模拟特定的情景或修复问题非常有用。
- 短点调试:Charles允许您设置短点,以便在特定的条件下中断流量并进行调试。这对于分析特定请求或响应的行为非常有帮助。
- 自动化和脚本:Charles支持使用 API 进行自动化操作。您可以编写脚本来处理请求、响应和会话,从而简化重复性任务。
- 限速和模拟:Charles 可以模拟不同网络条件,包括延迟、带宽限速等。这有助于测试应用在不同网络环境下的性能表现。
- 过滤和搜索:工具内置了过滤器和搜索功能,可以帮助您更轻松地找到特定的请求、响应或其他网络数据。
- 映射远程:您可以使用 Charles 将本地流量映射到远程服务器,或将远程流量映射到本地开发环境,以便于分析和调试。
- 会话跟踪:Charles 跟踪整个会话的流量,让您可以在多个请求和响应之间进行导航和分析。
哈喽,大家好,我是[有勇气的牛排](全网同名)🐮🐮🐮
https://www.couragesteak.com/article/441
有问题的小伙伴欢迎在文末[评论,点赞、收藏]是对我最大的支持!!!。
2 下载安装
官方版本:https://www.charlesproxy.com/download/
3 Web 抓包(https)
web抓包相对简单,启动 Charles 后即可抓包,重点是要配置 https。
3.1 配置 SSL
这里我们需要为 Charles 安装 SSL 证书。
【Help】–> 【SSL Proxying】–> 【install Charles Root Certificate】
3.2 开启代理监听
【Proxy】–> 【SSL Proxying Setting】
-
勾选【Enable SSL Proxying】
-
输入:
* *:443
-
最后点击 【ok】保存
4 App 抓包
由于部分app已经在很多模拟器上做了限制,因此采用 Charles 作为代理,来对手机app抓包,是一个不错的方案。
- https也需要安装
4.1 PC端配置
4.1.1 查看本地 ip:
- 【Help】–> 【local IP Addresss】
4.1.2 配置暴露端口号
步骤:【Proxy】–> 【Proxy Setting】,这里我们配置端口号为 8888
(默认)。
4.2 手机端配置(连接)
… --> 【编辑当前wifi】–>【代理】–> 【手动】
主机名:ip
端口:8888
4.3 安装手机https协议
如果不安装,https协议的请求则会爆出: <unknow>
。
4.3.3 安装整证书
配置步骤:
【Help】–> 【SSL Proxying】–> 【Install Charles Root Certificate On a Mobile Device or Remote Browser】
访问:chls.pro/ssl
证书导出
1、保存pem文件:【Help】–> 【SSL Proxying】–> 【Save Charles Root Certificate】
2、然后获取pem文件的hash值,作为名字
openssl x509 -inform PEM -subject_hash_old -in ./charlesRoot.pem
3、修改名称为:哈希值.0
4、adb导入
adb shell mount -o remount,rw /system
adb push D:/git仓库/blog_article/python爬虫/cc4dc6b5.0 /system/etc/security/cacerts/
adb shell chmod 777 /system/etc/security/cacerts/cc4dc6b5.0
adb push D:/git仓库/blog_article/python爬虫/cc4dc6b5.0 /system/etc/security/cacerts/
adb push D:/git仓库/blog_article/python爬虫/cc4dc6b5.0 /storage/emulated/0/00
adb kill-server
adb start-server
adb remount
4.3.1 http连接
设置–>wifi -->手动
4.3.2 代理软件
代理类型socks5
端口:8889
5 过滤操作
- 过滤器面板: 在Charles工具的主界面上,您会看到一个"Filter"选项卡,点击它可以打开过滤器面板。在这里,您可以设置不同类型的过滤规则。
- 域名过滤: 通过域名过滤,您可以只显示与特定域名相关的请求和响应。在过滤器面板中,您可以输入域名,然后Charles将只显示与该域名相关的网络流量。
- 路径过滤: 如果您只关心特定路径下的请求和响应,您可以设置路径过滤。输入路径信息后,Charles会仅显示与该路径相关的流量。
- 响应代码过滤: 您可以选择只显示具有特定HTTP响应状态代码的请求和响应。这对于快速查找错误或特定情况下的网络流量非常有用。
- 方法过滤: 如果您只关心特定HTTP请求方法(如GET、POST等),您可以设置方法过滤以仅显示这些方法的请求和响应。
- 内容类型过滤: 通过内容类型过滤,您可以只显示特定媒体类型的请求和响应,如JSON、XML等。
- 会话过滤: Charles可以根据会话来过滤流量,以便仅显示特定会话的请求和响应。这对于跟踪特定用户或操作的网络通信非常有用。
- 自定义规则: Charles还提供了一些高级过滤规则选项,您可以使用正则表达式等方式创建自定义过滤规则。
- 过滤和查找组合: 您可以结合使用过滤和查找功能,以便更精确地找到您感兴趣的请求和响应。
- 过滤的启用和禁用: 在过滤器面板中,您可以启用或禁用不同的过滤规则,以便根据需要动态调整过滤设置。
5.1 网络过滤
方案一:
在主界面的左下角,我们可以看到有个 Filter,在这里输入需要过滤的关键字即可。
方案二:
选择【Proxy】–> 【Recording Settings】–【include】,然后填入相关信息。
6 限速和模拟
步骤:【Proxy】–> 【Throttle Setting】
- Enable Throttle:启用 节流
- Only for select host:仅适用于选定的hosts
7 短点调试
- 开启短点调试:【鼠标右键会话】–> 【短点】 (菜单栏的 六边形的按钮会变红,带对勾)
- 设置短点:【Proxy】–>【Breakpoint Setting】
8 重发和编辑请求
8.1 重复发送
选择会话 --> 【点击 重复按钮】
8.2 高级重复发送(压力测试)
选择会话 --> 【右键 高级重复】
案例:重复发送10次请求
8.3 Compose 编写/撰写 接口
这个适用于,编辑接口的不同参数请求
步骤:选择会话 --> 【右键 Compose/撰写】
9 远程映射
单个会话映射:
【选择会话】–> 【远程】
批量映射:
【工具】–> 【远程映射】–>【勾选 启用远程映射】