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抓包,是一个不错的方案。
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 远程映射
单个会话映射:
【选择会话】–> 【远程】
批量映射:
【工具】–> 【远程映射】–>【勾选 启用远程映射】

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