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.rhkb.cn/news/415506.html

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

相关文章

redroid搭建云手机学习笔记(一)

参考链接 通过Redroid搭建自己的云手机 docker安装 docker官网目前打不开了,通过官网安装的方式无法实现,这里需要借助镜像网站来实现docker的安装 参考链接:https://developer.aliyun.com/mirror/docker-ce # step 1: 安装必要的一些系统…

ADB 获取屏幕坐标,并模拟滑动和点击屏幕

本文声明:本文是参考https://blog.csdn.net/beyond702/article/details/69258932编制。同时,补充了在windows系统模式下,详细的获取屏幕坐标的步骤。 1.判断设备与windows电脑USB连接是否正常 在CMD窗口输入命令:ADB devices,按ENTER键,输出如下结果,则表示连接正常。 …

【非常简单】 猿人学web第一届 第17题 天杀的 Http2.0

题目标题已经很明显了,Http2.0 数据接口 对应的请求协议也为 http2.0 python 代码 import httpx # pip install httpxheaders {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.…

LangChain学习资料

本文提供了一个LangChain框架的综合资源库,包括低代码工具、服务、代理、模板等,还列举了知识管理和聊天机器人等开源项目,以及学习笔记、视频教程等学习资料,旨在帮助开发者更好地利用和学习LangChain。 摘要由CSDN通过智能技术…

【深海王国】小学生都能玩的单片机!番外2:Arduino控制其他元器件(2)

Hi٩(๑ ^ o ^ ๑)۶, 各位深海王国的同志们,早上下午晚上凌晨好呀~辛勤工作的你今天也辛苦啦 (o゜▽゜)o☆ 今天大都督为大家带来单片机的新番外系列——小学生都能玩的单片机!番外2:Arduino控制其他元器件,带你学习如何使用Ard…

【ragflow】安装2:源码安装依赖

中文文档【ragflow】安装1: docker:失败官方说的成功 docker 安装的启动失败 重新来一遍,不会重新拉取: root@k8s-master-pfsrv:/home/zhangbin/perfwork/rag# cd ragflow/ root@k8s-master-pfsrv:/home/

单片机-串口通信(二)

目录 一、串口概念 1.相关概念: 按数据传输方式分类: 按时钟分类 二、STM32F103ZET6中串口 USART特性: NRZ数据格式: 三、配置串口通信 查看硬件原理图 软件配置流程 USART相关的寄存器 新建my_usart1.c和my_usart1.h …

游戏开发者必看:Perforce龙智即将携手亮相2024 Unreal Fest上海站,打造游戏开发版本控制新生态

2024年9月5- 6日(周四-周五),Unreal Fest Shanghai 2024将在上海宝华万豪酒店隆重举行!作为游戏行业备受瞩目的盛会之一,Unreal Fest每年都会吸引来自世界各地的技术专家和行业领导者齐聚一堂,分享最新的技…

LabVIEW中升采样和降采样

升采样 (Upsampling) 和 降采样 (Downsampling) 是信号处理中的两种常见操作,用于改变信号的采样率。它们在数字信号处理(DSP)和许多工程应用中非常重要,尤其是在处理不同采样率的数据流时。 升采样 (Upsampling) 升采样是增加信…

W.A.L.T: Photorealistic Video Generation with Diffusion Models

Paper name W.A.L.T: Photorealistic Video Generation with Diffusion Models Paper Reading Note Paper URL: https://arxiv.org/pdf/2312.06662 Project URL: https://walt-video-diffusion.github.io/ TL;DR 2023 斯坦福大学和 google 联合出品的视频生成工作&#x…

ssm面向企事业单位的项目申报小程序论文源码调试讲解

2 系统实现的技术支持 2.1微信开发者工具 在传统web浏览器中,在加载htm15页面时先加载视图层的html和css,后加载逻辑层的java script,然后返回数据并在浏览器中展示页面。而微信开发者工具的系统层是基于Native System的,视图层和…

Excel 导入和导出--前后端整合

文章目录 Excel基础Easy Excel导出会员数据导入会员数据 前端代码:代码解析总结组件简介详细解释总结 用来操作excel文件的。银行网银系统导出交易明细数据、各种业务系统导出excel报表数据、批量导入业务数据。 Excel基础 **工作簿 workbook**就是一个文件工作表 sheet属于…

Linux中如何查看一个进程?如何杀死一个进程?如何查看某个端口有没有被占用?

在Linux中 如何查看一个进程? 使用 ps 命令 ps aux这会显示所有正在运行的进程,可以使用 grep 来过滤特定的进程 ps aux | grep process_name使用 top 命令 top这个命令会实时的显示系统重正在运行的进程 如何杀死一个进程? 使用 kill …

8、Django Admin后台中添加Logo

在项目settings.py文件 # 导入os,并且修改DIRS内容如下所示 import os TEMPLATES [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR, templates/)],APP_DIRS: True,OPTIONS: {context_processors: [django.template.con…

WebRTC协议下的视频汇聚融合技术:EasyCVR构建高效视频交互体验

视频汇聚融合技术是指将来自不同源、不同格式、不同网络环境的视频流进行集中处理、整合和展示的技术。随着视频监控、远程会议、在线教育、直播娱乐等领域的快速发展,视频数据的规模急剧增长,对视频处理能力和效率提出了更高要求。视频汇聚融合技术通过…

excel扒数据到ini文件小工具

一、源码 注释很详细&#xff0c;就不讲了 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QVariant>QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpu…

免费SSL证书申请入口——支持自动续签

SSL证书是一种数字证书&#xff0c;用于在客户端&#xff08;如浏览器&#xff09;与服务器之间建立加密通信&#xff0c;确保数据传输的安全性和完整性。它通过加密技术保护网站免受数据窃取和篡改&#xff0c;同时验证网站的身份&#xff0c;让用户确认他们正在与正确的网站进…

最全盘点!国内外主流的在线CRM有哪些?

本文将盘点10款主流的在线CRM&#xff0c;为企业选型提供参考。 在线 CRM 就如同企业与客户之间的强力纽带&#xff0c;能把企业的客户关系管理得妥妥当当。 对于企业来说&#xff0c;如果没有好用的在线 CRM&#xff0c;就像航海者失去了罗盘&#xff0c;在市场的海洋中容易迷…

48.【C语言】结构体补充

承接20.【C语言】初识结构体&#xff08;重要&#xff09;中的结构体成员的访问 目录&#xff1a; 1.结构体创建 2.利用函数控制结构体 3.使用“结构体指针变量-->结构体成员变量”来修改结构体的数据 4.传值还是传址&#xff1f; 1.结构体创建 依据第20篇&#xff0c;可以…

Learning——protobuf的下载

目录 一、protobuf在windows下安装 1.下载地址 2.配置环境变量 ①打开设置 ②搜索框中搜索编译环境变量 ③ 点击“环境变量” ④ 找到PATH并双击打开编辑 ⑤配置环境变量后点击确定 3.检验是否安装成功 二、protobuf在Linux下安装 1.库依赖安装 2.下载地址 我不能使用…