使用Charles对安卓手机进行抓包

2024-09-07 16:12

本文主要是介绍使用Charles对安卓手机进行抓包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面的话

Charles 介绍

Charles 的主要功能

网络请求拦截与分析

Charles 通过将自己配置成系统的代理服务器,拦截所有通过它的 HTTP 和 HTTPS 请求与响应。开发者可以查看每个网络请求的详细信息,包括请求的 URL、请求头、请求体、响应头、响应体、状态码等,便于调试和分析网络通信问题。

SSL 抓包

Charles 支持 HTTPS 协议的抓包。通过安装 Charles 提供的 CA 证书,Charles 能够解密 SSL/TLS 加密的网络请求,查看明文内容。这对分析第三方应用的网络通讯协议特别有用。

重发和修改请求:开发者可以使用 Charles 修改网络请求的内容,然后重新发送这些请求。这种功能常用于测试接口,模拟不同的请求参数或 HTTP 状态码。

带宽限制

Charles 允许开发者模拟不同网络环境下的带宽、延迟、丢包等网络条件,从而分析应用在不同网络环境下的表现,特别适用于优化移动端应用的网络性能。

会话记录与导出

Charles 能够保存网络抓包会话,便于以后查看和分析。它还支持导出会话为多种格式,如 HAR 文件格式,用于进一步分析或分享。

Charles 的应用场景

移动端开发调试

在开发 Android 或 iOS 应用时,调试应用与服务器的网络通信协议是非常常见的需求。通过配置移动设备的代理为 Charles 的 IP 地址和端口,Charles 可以拦截和分析应用发出的网络请求。这在接口调试、错误定位、网络性能优化等方面尤为有用。

第三方应用分析

Charles 也可以用于分析第三方应用的网络通讯协议。通过配置代理以及 SSL 证书,即可捕获到 HTTPS 请求,并解密查看明文数据。这在逆向工程、协议分析、数据抓取等场景中有较大应用价值。

网络性能调优

利用 Charles 提供的带宽控制功能,开发者可以在不同的网络条件下(如慢速 3G、4G 网络)模拟测试应用的表现,帮助优化网络请求的响应速度、减少延迟,提升用户体验。

注意事项

隐私与法律问题:在使用 Charles 抓包时,要注意遵守相关的法律法规和隐私政策。未经授权抓取他人网络请求,尤其是解密 HTTPS 请求,可能会侵犯隐私和违反法律。

证书信任问题:安装 Charles CA 证书后,部分应用可能会检测到非官方证书而阻止网络请求。在这种情况下,可以考虑使用 Charles 的 SSL Pinning 解除功能,或者尝试其他抓包工具。

Charles使用步骤

下载安装Charles

前往官网下载Charles 官网下载地址

安装对应系统的版本

设置SSL代理

这样就可以对抓取https的链接

启动Chrales,打开 “菜单栏 -> Proxy -> SSL Proxying Settings”

在这里插入图片描述

在PC上安装本地证书

菜单栏 -> Help -> SSL Proxying -> Install Charles Root Cert…
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在安卓设备设置代理

  1. 查看代理IP和端口
    在这里插入图片描述
    在这里插入图片描述

  2. 确保安卓设备和PC在同一个局域网后,修改安卓的WLAN设置

修改红框中的内容,点击保存后,电脑上会出现弹窗,点击"allow"确认。
在这里插入图片描述
3. 准备charles证书

以下方式选一种即可

  • 安卓设备启动浏览器,输入“http://chls.pro/ssl”,下载CA证书
    注意:可能浏览器有网站不安全之类提示。

  • PC浏览器打开,输入“http://chls.pro/ssl”,下载CA证书后复制到安卓设备

  1. 设置CA证书

在安卓设备的设置中搜索“CA证书”,进入CA证书设置。安装上一步准备的CA证书。

在这里插入图片描述


至此,即可在Charles中查看安卓设备的被抓的内容。
在这里插入图片描述

这篇关于使用Charles对安卓手机进行抓包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145534

相关文章

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器