APP 数据抓取 - Charles 抓包工具的使用(Charles 端口配置、CA 证书配置、Charles Android 模拟器配置)

前言说明

此文章是我在学习 Charles APP 抓包时编写,内容都是亲测有效,文章内容也有参考其他人,参考文章如下:

  • Android 手机使用 charles 抓 https 请求(保姆级教程)
  • 网易 mumu 模拟器安装下载 charles 的 CA 证书
  • Python3 网络爬虫开发实战 - 崔庆才

编写此文章时,依旧在升级打怪中(APP 抓包学习中。。。),内容还需完善


更新时间:08.31

更新内容:

  • 增加了Charles 案例,内容包括:抓包分析、修改请求内容重发出去、修改响应内容
  • 排版优化

本文章内容:

  • Charles 基本配置(端口,CA证书)
  • windows 配置 CA 证书
  • Android 配置 CA 证书
  • Iphon 配置 CA 证书
  • mumu 模拟器配置 CA 证书
  • charles 基本使用

读者可根据所需内容,跳转到该内容


目录

前言说明

一、设置好 charles 的代理

charles 的配置

端口配置

配置 CA 证书

Charles 配置

PC(Win) 配置

Android

Iphone

mumu 模拟器配置 CA 证书

1. 设置 mumu 模拟器

2. 制作 CA 证书

1)用 Charles(点击下载 Charles>>)导出证书,命名为 charles.pem

2) OpenSSL 签发证书

3) 重命名文件

3. 把签发好的 24e12a67.0 证书上传到 mumu 模拟器 Android 系统里。

1)提前准备好 adb 工具

2)连接 mumu 模拟器

4. 查看是否上传到,可以再次登录 shell 查看

5. 案例

1. 准备

2. 分析

3. 重发

4. 修改响应内容


一、设置好 charles 的代理

Charles download: 点击跳转

charles 的配置

抓包之前需要配置端口和 CA 

端口配置

charles 中 [proxy->proxy Settings]设置进行代理的端口

配置 CA 证书

[Help->SSL Proxying]点击 install charles root certificate on a mobile device or remote browser,查看如何与 charles 相连

Charles 配置

如果不执行这一步骤,将无法抓取 HTTPS 协议

(1)点击顶部菜单栏[Help]–> 选择 [SSL Proxying],点击[install Charles Root Certificate]安装 Charles 证书,最后提示导入成功即可。

(2)点击[Proxy] –> [SSL Proxying Settings…](Ctrl + Shift + L),在弹出选项卡中,勾选[Enable SSL Proxying] 点击 [add],在 Host 输入[*]表示接收任何主机,在 Prot 输入 [*] 最后点击 [ok] 保存。

(3)确保 [Windows Proxy] 功能打上对勾,做法 : [Proxy -> Windows Proxy]

PC(Win) 配置

(1)根据弹窗消息提醒,前往该网站下载证书:http://chls.pro/ssl

注意:下载路径记住,后续要用到

  

(2)打开浏览器设置(chrome为例),[settings] -> [Privacy and security] -> [Security] -> [Manage certificates]

Android

参考连接:https://www.cnblogs.com/bao0/articles/16769863.html

Iphone

pass

mumu 模拟器配置 CA 证书

官网教程:https://mumu.163.com/help/20221018/35047_1047210.html

教程有些地方不详细,这里补充一下

1. 设置 mumu 模拟器

image

允许对系统盘操作

image

开启 Root 权限

image

之后会提示重启生效,点击立即重启。

image

2. 制作 CA 证书
1)用 Charles(点击下载 Charles>>)导出证书,命名为 charles.pem

image

2) OpenSSL 签发证书

安装 openssl 方法:https://www.cnblogs.com/wutou/p/17873881.html

openssl x509 -subject_hash_old -in d:\CA\charles.pem

d:\CA\charles.pem 要写对,怕写错,就写成绝对路径

image

3) 重命名文件

将刚才 charles.pem 文件名改成 执行命令后提示的 24e12a67 后缀名为.0

image

3. 把签发好的 24e12a67.0 证书上传到 mumu 模拟器 Android 系统里。
1)提前准备好 adb 工具

百度云:百度网盘 请输入提取码

2)连接 mumu 模拟器
adb connect 127.0.0.1:7555
adb root
adb shell

adb root 这步和直接执行 adb shell 后,进入 Android 命令行里 su 命令效果一样。

执行 adb root 时,系统会提示,权限,选择允许 (如果选仅此次,那以后每次执行 adb root 都要点允许)

image

注意命令行提示符变化,执行完 adb shell 后就进入到 mumu 模拟器的 Android 系统里了。

image

挂载系统盘,因为 CA 证书文件要放到系统盘中

mount -o remount,rw /system
exit

mount 命令执行成功,如图,不显示任何提示,就可以 exit 退出命令行(注意不是关闭和 android 的连接,是命令行要操作的命令结束了)

image

上传刚才签发的 CA 证书到 mumu 模拟器 Android 系统目录中。

adb push d:\CA\24e12a67.0 /etc/security/cacerts/

/etc/security/cacerts 或 /system/etc/security/cacerts 都是指向同一目录

image

4. 查看是否上传到,可以再次登录 shell 查看
adb shell
cd /etc/security/cacerts/
ls 24e12a67.0

image

5. 案例
1. 准备

apk 安装包:http://app1.scrape.center

(1)安装需要测试的应用

打开连接后会自动下载,

(2)重启 charles 清空请求列表

(3)mumu 模拟器打开测试app

这里就看到charles抓取到的数据了

2. 分析

现在分析一下捕获的请求内容和响应内容的详细信息。首先回到 Overview 选项卡,界面右侧的上方显示了请求 URL、响应状态码 Response Code 和请求方法 Method等信息,如图所示,这些内容和在网页中用浏览器开发者工具捕获的内容是类似的。

接下来点击 Contents 选项卡,查看请求内容和响应内容的详情,界面如图所示。上半部分显示的是请求的信息,下半部分显示的是响应的信息。切换到Headers 选项卡即可看到请求头,切换到 JSON Text选项卡即可看到响应体,并且响应体的内容已经被格式化。

3. 重发

Charles还有一个强大功能,是可以对捕获的请求内容加以修改并把修改后的请求发送出去。点击界面右侧上方的修改按钮,左侧列表就会出现一个以编辑图标为开头的接口,代表我们正在修改此接口对应的请求。

可以修改请求参数中的某个字段,例如这里将ofset字段的值由0修改为10,如图所示然后点击界面下方的 Execute 按钮即可发送修改后的请求。

可以发现左侧列表出现了对应的请求结果,点击Contents选项卡,查看响应内容,这次返回的是第2个列表页中的电影信息,如图所示。

有了重发功能,就可以方便地使用Charles做调试了,可以通过修改参数、接口等测试不同请求的响应状态,从而知道哪些参数必要和哪些不必要,以及参数分别有什么规律,最后抽象出一个最简单的接口供模拟使用。

4. 修改响应内容

除了修改请求内容,Charles还可以修改响应内容,例如将响应内容修改为本地或远程的某个文件,这样就可以实现数据的修改和伪造了。

右击任意一个请求,可以看到出现的菜单中有 MapRemote 和 Map Local 这两个选项,通过这两个选项就可以将响应内容修改为远程或本地的文件,如图所示。

以生成本地文件为例,怎么实现呢?可以先把当前的响应内容,也就是JSONText的内容复制下来,保存成本地文件,文件名是data.json,然后修改其中的字段值,例如将第一个条目的 name 值修改为“霸王别姬 2”,并保存修改,如图所示。

再在 Map Local的配置中,选定 data.json 文件的保存路径,如图  所示。


这样,我们就把 appl的第一个请求--加载列表页成功修改成本地文件 data.json 中的内容了。接下来重新启动 app1,界面如图所示。

可以发现,第一个电影的名称变成了“霸王别姬2”,我们成功修改了响应内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络(八股文)

这里写目录标题 计算机网络一、网络分层模型1. TCP/IP四层架构和OSI七层架构⭐️⭐️⭐️⭐️⭐️2. 为什么网络要分层?⭐️⭐️⭐️3. 各层都有那些协议?⭐️⭐️⭐️⭐️ 二、HTTP【重要】1. http状态码?⭐️⭐️⭐️2. 从输入URL到页面展示…

2024年9月3日嵌入式学习

数据结构 1定义 一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据) 程序的设计:将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中, 并在此基础上实现某个特定的功能的操作&am…

「Python程序设计」条件控制:if-elif-else语句

我们在进行程序设计的过程中,基本上遵循的过程是,找出变量和常量,通过python编程语言,设置变量和常量,以及考虑是否需要赋予初始值。 设计变量和常量,其实就是为了模拟和计算我们的现实世界中,…

学习笔记--Docker

安装 1.卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 2.配置Docker的yum库 首先要安…

IntelliJ IDEA 自定义字体大小

常用编程软件自定义字体大全首页 文章目录 前言具体操作1. 打开设置对话框2. 设置编辑器字体3. 设置编译软件整体字体 前言 IntelliJ IDEA 自定义字体大小,统一设置为 JetBrains Mono 具体操作 【File】>【Settings...】>【Editor】>【Font】 统一设置…

C++:list篇

前言: 观看C的list前需要对链表有一些了解,如C语言的链表结构。本片仅介绍list容器中常用的接口函数概念以及使用。 list的概念: 简而言之,C的list是一个双向带哨兵位的链表容器模板 list的构造: 1.list():默认构造 2.li…

认识git和git的基本使用,本地仓库,远程仓库和克隆远程仓库

本地仓库 #安装git https://git-scm.com/download/win #git是什么?有什么用? git相当于一个版本控制系统,版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 作用: 记录(项目&#…

物联网(IoT)支持的小型水处理厂实时硬件在环(HIL)仿真

这篇论文的标题是《Real-Time Hardware-In-The-Loop Simulation of IoT-Enabled Mini Water Treatment Plant》,作者是 Mohamad Taib Miskon 等人,发表在 2024 年 IEEE 自动控制与智能系统国际会议(I2CACIS)上。以下是该论文的主要…

【Agent】Agent Q: Advanced Reasoning and Learning for Autonomous AI Agents

1、问题背景 传统的训练Agent方法是在静态数据集上进行监督预训练,这种方式对于要求Agent能够自主的在动态环境中可进行复杂决策的能力存在不足。例如,要求Agent在web导航等动态设置中执行复杂决策。 现有的方式是用高质量数据进行微调来增强Agent在动…

vector 常见函数

目录 一.vector 构造函数 二 . Iterators 迭代器(random access iterator) 三.Capacity: 空间 3.1 resize 3.2 reserve 四.Element access: 元素访问 方式 4.1 operator[] 类似于数组的 [] 4.2 front 和back 五.Modifiers: 六.vector 的 二…

18、Gemini-Pentest-v2

难度 中 目标 root权限 一个flag 靶机启动环境为VMware kali 192.168.152.56 靶机 192.168.152.63 信息收集 web测试 访问80端口 上面介绍了一下这个系统是一个内部系统,让员工查看他们的个人资料还可以导出为PDF 页面还有一个链接是UserList可以访问但是页面什…

ES数据写入过程

1. 写入请求 当一个写入请求(如 Index、Update 或 Delete 请求)通过REST API发送到Elasticsearch时,通常包含一个文档的内容,以及该文档的索引和ID。 2. 请求路由 协调节点:首先,请求会到达一个协调节点…

微服务日常总结

1.当我们在开发中,需要连接多个库时,可以在yml中进行配置。 当在查询的时候,跨库时,需要通过DS 注解来指定,需要yml配置需要保持一致。 2. 当我们想把数据存入到clob类型中,需要再字段 的占位符后面加上j…

Zookeeper 官方示例2-SyncPrimitive 代码解读(二)

测试命令 java jar .\ZookeeperDemo-0.0.1-SNAPSHOT.jar bTest 192.168.206.100:2181 2 1. Barrier(阻塞原语) 1.1 概念 [!quote] A barrier is a primitive that enables a group of processes to synchronize the beginning and the end of a comput…

vulhub xxe靶机

先用御剑扫描出ip然后进入网页 进入robots.txt里面会发现俩个目录然后我们进去xxe里面 进入xxe页面进行登录&#xff0c;burp抓包 然后进入重放器 可以看到关于密码和用户名的是xml,那么就可以考虑用xxe注入 <?xml version"1.0" ?> <!DOCTYPE r [ <!…

监视SQL Server 内存使用量

文章目录 I 监视SQL Server 内存使用量确定页生存期确定当前的 SQL Server 内存利用率有关当前分配内存的信息II 等待资源池 %ls (%ld)中的内存资源来执行该查询时发生超时。 请重新运行查询。原因查看服务器级别设置的超时值资源信号灯 DMV sys.dm_exec_query_resource_semaph…

IP网络广播系统(IP网络广播系统是什么及它的优势与应用)

一、引言 在当今数字化的时代&#xff0c;音频传播技术也在不断革新。IP网络广播系统作为一种先进的音频传输解决方案&#xff0c;正逐渐在各个领域发挥重要作用。那么&#xff0c;究竟什么是IP网络广播系统呢&#xff1f;它又有着怎样独特的优势和广泛的应用呢&#xff1f;本…

深度学习(二)-损失函数+梯度下降

损失函数 损失函数&#xff08;Loss Function&#xff09;&#xff0c;也有称之为代价函数&#xff08;Cost Function&#xff09;&#xff0c;用来度量预测值和实际值之间的差异。 损失函数的作用 度量决策函数f&#xff08;x&#xff09;和实际值之间的差异。 作为模型性能…

检测CSRF漏洞的工具

免责声明此文档仅限于学习讨论与技术知识的分享&#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;本文作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担&…

二百五十九、Java——采集Kafka数据,解析成一条条数据,写入另一Kafka中(一般JSON)

一、目的 由于部分数据类型频率为1s&#xff0c;从而数据规模特别大&#xff0c;因此完整的JSON放在Hive中解析起来&#xff0c;尤其是在单机环境下&#xff0c;效率特别慢&#xff0c;无法满足业务需求。 而Flume的拦截器并不能很好的转换数据&#xff0c;因为只能采用Java方…