当前位置: 首页 > news >正文

安卓7.0以上抓包配置--Charles

一、准备工作

  1. 下载并安装Charles

下载地址:Charles官方网站

安装步骤:按照提示完成安装,启动Charles。

  1. 获取电脑端Charles的IP地址和端口号

步骤:点击Charles菜单栏中的Help -> SSL Proxying -> Install Charles Root Certificate,选择“本地计算机”,完成安装后记下Charles代理的IP地址和端口号(默认为8888)。

二、在安卓设备上设置代理

  1. 连接同一网络

确保安卓设备与安装了Charles的电脑连接到同一个Wi-Fi网络。

  1. 配置代理设置

路径:进入手机的“设置”->“WLAN”,点击当前连接的Wi-Fi网络,选择“修改网络”。

代理设置:选择“手动”,输入Charles的IP地址和端口号(如192.168.137.1:8888),保存设置。

三、安装Charles证书

  1. 下载Charles证书

步骤:在手机浏览器中访问chls.pro/ssl 下载证书,如果下载失败,可以尝试访问 http://charlesproxy.com/getssl 直接下载证书。

  1. 安装证书

格式转换:将下载的证书文件后缀改为.pem 或.crt。

安装步骤:进入手机“设置”->“安全”->“更多安全设置”->“加密与凭据”->“安装证书”→“CA证书”,找到下载好的证书并安装。

四、信任Charles证书

  1. 信任证书

路径:进入手机“设置”->“关于手机”->“证书信任设置”,找到刚刚安装的Charles证书,开启信任。

五、高级操作(针对Android 7.0及以上版本)

  1. 导出Charles证书

步骤:在Charles中点击Help -> SSL Proxying -> Save Charles Root Certificate…,保存到桌面或其他位置。

  1. 计算证书Hash值

命令:打开终端或命令提示符,使用openssl命令计算证书的Hash值。

openssl x509 -inform PEM -subject_hash_old -in charles-ssl-proxying-certificate.pem

以我的为例,示例输出:2b1c7f38(此值为示例,实际值以计算结果为准)。
在这里插入图片描述

  1. 重命名证书文件

步骤:将证书文件重命名为计算出的Hash值,例如e8c698d2.0。

  1. 上传证书到安卓系统目录

两种方法:

方法一,使用adb:

步骤:使用adb工具将证书上传到安卓设备的系统根目录。

adb push 2b1c7f38.0 /system/etc/security/cacerts/

权限修改:上传完成后,赋予证书正确的权限。

adb shell chmod 644 /system/etc/security/cacerts/2b1c7f38.0

方法二,使用界面工具导入修改后的证书文件
在mac本地电脑上安装开源工具:
下载地址:https://github.com/ganeshrvel/openmtp/releases
在这里插入图片描述

安装后,打开工具直接拖动即可
在这里插入图片描述

以荣耀magic6为例,手机本地安装证书路径如下:
在这里插入图片描述

六、验证安装

  1. 重启手机(我是那个荣耀magic6,使用上面的方法二安装证书,没有重启手机就生效了)

确保证书生效,建议重启手机。

  1. 测试抓包

打开Charles,确认SSL Proxying已启用,尝试通过手机浏览器访问HTTPS网站,检查Charles是否能成功抓包。

http://www.xdnf.cn/news/172135.html

相关文章:

  • ​​全栈自动化:从零构建智能CI/CD流水线​
  • 手搓传染病模型(SEIR)
  • k8s的volume
  • Alibaba Cloud Linux 3.2104 LTS 64位 容器优化版安装docker docker compose记录
  • MyBatis DTD [Element type “if“ must be declared]
  • Kafka HA集群配置搭建与SpringBoot使用示例总结
  • LeetCode -- Flora -- edit 2025-04-27
  • Spring AI Alibaba - MCP连接 MySQL
  • docker--docker的基本环境配置
  • Stable Diffusion 技术全景解析与行业竞争力分析
  • 小程序发布后,不能强更的情况下,怎么通知到用户需要去更新?
  • 图论---最大流(Dinic)
  • Golang 类型方法
  • 【2025最近Java面试八股】Spring中循环依赖的问题?怎么解决的?
  • 层级时间轮的 Golang 实现原理与实践
  • 环境DNA宏条形码技术,鱼类检测引物如何选择?
  • 基于知识库的客户服务工具
  • Unity Post Processing 小记 【使用泛光实现灯光亮度效果】
  • 2P4M-ASEMI机器人功率器件专用2P4M
  • ShardingSphere-Proxy数据隔离方案:不同用户操作不同的数据库
  • C#进阶学习(十五)关于特性的认识
  • Android10.0 Android.bp文件详解,以及内置app编写Android.bp文件
  • Spring 与 ActiveMQ 的深度集成实践(四)
  • 【大模型】图像生成 - Stable Diffusion 深度解析:原理、应用与实战指南
  • 基于STM32、HAL库的ADS1220IRVAR模数转换器ADC驱动程序设计
  • 服务器备份,服务器想要备份文件内容有哪些方法?
  • 【技术派后端篇】技术派并发访问性能优化
  • 多级缓存入门:Caffeine、Lua、OpenResty、Canal
  • 【上位机——MFC】文档
  • C语言结构体赋值与深拷贝