Charles 抓包工具详解
前言
不管是移动开发者还是测试者,于抓包工具对于我们的工作都是非常有帮助的,而Charles是一款非常优秀的抓包工具
Charles不仅可以帮助我们抓取服务器返回的数据,还可以修改请求参数,修改响应体
基本上HTTP能修改的东西,Charles都能帮我们修改
所以当我们接口在Mock阶段时我们可以通过Charles设置我们本地的JSON数据,加速我们的开发
而且还能模拟弱网环境,帮助我们调试网络极端情况的用户体验,下面我们就一起来体验下Charles的功能吧
本机安装的 Charles 版本是 Windows 平台下的 Charles 4.0.2
本文主要内容:
- Charles 抓包 HTTP
- Charles 抓包 HTTPS
- Android7.0及以上系统中HTTPS抓包
- 使用Charles模拟慢网速
- Breakpoints断点功能
- Compose功能修改Request
- Rewrite重写功能
- Map映射功能
- Repeat 重试功能
- 实战手机天猫抓包(Charles + Drony)
1. Charles 抓包 HTTP
首先到 Charles 官网去下载软件,安装非常简单,一直下一步就可以了
1.1 初始设置
Charles 设置
开启 start recording 按钮,如下图所示:
查看 Charles 代理监听的端口号,Proxy -> Proxy Settings , 我机器上的是 8888 端口, 如下图所示:
1.2 手机设置
以Android手机为例,进入我们已经连接的WIFI,设置该WIFI:
设置好之后,Charles 会弹出一个框,提示是否允许手机进行连接,接受即可,如下图所示:
如果你不小心点击了 拒绝(Deny),也可以在这里: Proxy -> Access Control Settings 进行添加你的手机IP
通过以上的设置,Charles就可以抓HTTP请求了
2. Charles 抓包 HTTPS
经过上面的设置之后,我们就可以对手机的网络请求进行抓包了,但是如果请求的是 HTTPS,抓到的包无法查看,需要电脑和手机安装证书 (Help -> SSL Proxying)
电脑上安装证书很简单,直接下一步就可以了,不用任何设置。这里讲下手机上安装证书,因为手机上安装证书可能会遇到问题:
点击上图的 Install Charles Root Certificate on a Mobile Device or Remote Browser , 会给我们安装提示:
上面的提示框意思是说,在手机设置好代理后,在手机浏览器中访问 chls.pro/ssl 下载证书
这里需要注意的是,有的手机可能会提示:无法安装该证书,因为无法读取证书文件
解决方法:不要使用系统的浏览器下载,使用第三方浏览器下载 UC 或者 Edge 浏览器
下载完成后,证书文件名可能是:charles-proxy-ssl-proxying-certificate.pem
证书下载完成后,在手机上安装该证书,流程如下(小米手机为例):
打开手机 设置 -> 更多设置 -> 系统安全 -> 从SD卡安装 , 然后输入你自定义的证书名称即可:
点击 “确定” 按钮,有些手机可能需要输入密码凭证,输入你的手机密码即可。
电脑和手机上证书都安装完毕后,在Charles上开启 SSL Proxy (Proxy -> SSL Proxying Settings )
经过以上步骤后,你就可以对 HTTPS 请求抓包了
3. Android7.0及以上系统中HTTPS抓包
为了安全起见,一般我们只在 Debug 版本允许抓包,正式版本不应该允许抓包。可以 AndroidManifest.xml 文件中配置安全策略:
<application android:networkSecurityConfig="@xml/network_security_config" >
</application>
<?xml version="1.0" encoding="utf-8"?>
<network-security-config><debug-overrides><trust-anchors><!-- Trust user added CAs while debuggable only --><certificates src="system" /><certificates src="user" /></trust-anchors></debug-overrides><base-config cleartextTrafficPermitted="true"><trust-anchors><certificates src="system" /></trust-anchors></base-config><domain-config cleartextTrafficPermitted="true"><domain includeSubdomains="true">182.254.116.117</domain><domain includeSubdomains="true">pingma.qq.com</domain></domain-config>
</network-security-config>
<?xml version="1.0" encoding="utf-8"?>
<network-security-config><debug-overrides><trust-anchors><certificates src="system" /><!-- debug版本情况下,信任用户添加的证书 --><certificates src="user" /></trust-anchors></debug-overrides><base-config cleartextTrafficPermitted="true"><trust-anchors><certificates src="system" /></trust-anchors></base-config>
</network-security-config>
https://developer.android.com/training/articles/security-config.html
4. 使用Charles模拟慢网速
可以在 Proxy -> Throttle Settings 设置网络速度,还可以自定义带宽(Bandwidth):
5. Breakpoints断点功能
通过断点功能,可以修改 Request 参数 和 Response 返回值。需要注意的是修改完 Request 参数需要点击 Excute 按钮,请求成功后,才能修改 Response 返回值
6. Compose功能修改Request
还可以通过 Charles 修改请求的 URL、Method、Header、Parameter等.
7. Rewrite重写功能
Rewrite重写功能是全局设置的,并不是对某个请求单击右键的方式临时操作下, Rewrite可以:
- 修改请求头(Add/Modify/Remove Header)
- 修改Host/Path/URL
- 修改请求参数(Add/Modify/Remove Query-Parameter)
- 修改响应状态(Response Status)
- 修改Body
Rewrite重写顾名思义就是替换,所以是基于某个固定的值替换成某个值,添加规则的时候,支持正则表达式:
8. Map映射功能
Map映射包含两种一种是 Map Remote,另一种是 Map Local
设置路径:Tools -> Map Local/Remote
Map Remote 顾名思义就是把匹配的请求映射到另一个远程URL:
Map Local 是将匹配的请求映射到本地文件:
9. Repeat 重试功能
Repeat 功能有两种:一种是简单的重试一次(Repeat);还有一种 Repeat advances 可以设置重试的次数和并发的数量
重试一次主要用于是和服务端联调,如果接口有问题,服务端开发人员可能需要在后台代码打断点的方式来排查问题
这个时候,我们不需要在app中重新重复上次的请求(可能需要填写字段比较多或者界面链路比较长),只需要在Charles中对该请求单击右键,然后 Repeat 即可
Repeat advances 可以来对服务器进行压力测试,或者批量提交写数据等,如:
10. 实战手机天猫抓包
通过上面的介绍我们可以抓包 HTTPS 请求的,但是打开手机天猫进入首页发现 Charles 上并没有图片的请求URL,说明 Charles 并没有抓到手机天猫的下载网络图片的请求
这个时候需要设置手机代理,下载 Drony App,然后滑到 设置 页面
最后我们成功抓取了手机天猫的图片了,如果图片无法展示,可以把 _.heic 去掉,只保留 .jpg 后缀,然后复制到浏览器中展示
Charles 抓包工具详解相关推荐
- 正所谓:抓包抓的好,牢饭吃的饱,银白手铐准备好、抓包工具-fiddler/charles抓包工具详解
目录 简介: Charles的基本功能使用 手机端使用charles进行抓包: 第二步,把手机按照charles的IP和端口进行配置:(手机和电脑网络在同一个wifi) 第三步,手机配对成功后,cha ...
- TCP Dump 抓包工具详解
tcpdump使用技巧 作者: 潜水大叔 一般情况下,非HTTP协议的网络分析,在服务器端用tcpdump比较多,在客户端用wireshark比较多,两个抓包软件的语法是一样的. 一.基本语法 1.1 ...
- Charles抓包实战详解
访问我的博客 前言 通过上一篇文章,想必你已经掌握了如何正确安装抓包神器 Charles,如果还是抓不了包,可以再看看. 今天要做是抓包实战,因为我在做网络文学的公司就职,所以就拿网络文学的 APP ...
- Fiddler抓包工具详解(五)(IOS、安卓抓包+fildder插件)
文章目录 HTTPS抓包 HTTPS与HTTP区别 设置过程 错误解决 验证 Firefox HTTPS请求捕获 IOS设备APP抓包 Fiddler设置 IOS设备设置 IOS设备抓包-安装证书解密 ...
- Fiddler抓包工具详解(三)(fiddler监控面板+辅助工具)
文章目录 fiddler的主界面 Session List会话列表 组成部分 命令行 常用命令 状态栏 代理状态 会话选择 断点设置 选择Session数 附加信息 辅助标签加工具 Statistic ...
- Fiddler抓包工具详解(二)(fiddler菜单工具栏详解,相关快捷键)
文章目录 fiddler的主界面 菜单栏(设置选项) File菜单 Rules菜单 Tools菜单栏 View菜单栏 help菜单栏 工具栏 工具栏内容 如何显示工具栏 增加备注 重放请求 移除会话 ...
- Fiddler抓包工具详解(四)(断点设置+弱网测试)
这里写目录标题 断点设置 全局断点 局部断点 bpu命令 bpafter命令 篡改响应报文 弱网测试 开启网络限速 精确限速 断点设置 全局断点 特点:所有请求断点 设置方法一:Rules-Autom ...
- Fiddler抓包工具详解(一)(fiddler原理,HTTP请求构成)
文章目录 fiddler原理 B/S架构 工作原理 HTTP协议 请求报文 请求行 请求方法字段 统一资源定位符(URL) http版本 请求头部 请求体 响应报文 状态行 响应头 fiddler原理 ...
- HTTP协议版本介绍以及使用Wireshark工具针对HTTP进行抓包分析详解
一.http协议版本介绍 http:Hyper Text Transfer Protocol 超文本传输协议,是互联网应用最为广泛的一种网络协议,主要用于Web服务.通过计算机处理文本信息,格式为HT ...
最新文章
- 全局变量中断原子操作_原子操作原理分析
- autosar架构详细介绍_【技术】基于AUTOSAR的电机驱动系统分析
- TCP、UDP和HTTP详解
- 粘包问题,以及在python中如何调用操作系统命令
- Python-类的学习
- chiinv函数java_Excel统计函数:CHIINV函数实例-excel技巧-电脑技巧收藏家
- 编写c语言程序的可视化编程环境有哪些,C语言可视化编程环境设计及实现.pdf
- CFS调度主要代码分析二
- tensorflow Dataset操作
- 变量、变量类型与cin的基本用法详解(C++)
- Discuz 3.2x 的那些坑
- 操作系统-io控制器
- Matlab自动保存图像时使用saveas函数运行出错
- 液晶屏背光LED驱动电路设计参考
- 计算机声卡原理,什么是电脑声卡 电脑声卡的工作原理
- 关闭IDEA提示 empty tag doesn't work in some browsers(设置inspections)
- 如何用Python生成二维码
- 一键php win10,一键批处理制作纯64位网络骨头版WIN10pe
- 透过数据读懂纷繁世界 中译语通“NexMagic再·奇迹”年度峰会召开
- 酒店管理系统(C语言)
热门文章
- 前端常用UI且好用的网站总结
- Laravel Mix 4升级说明与“排坑儿”指南
- 第三方授权的应用苹果审核被驳回解决方案和app版本更新
- android 连接已配对蓝牙耳机,连接/配对蓝牙耳机和Android
- 设计模式六大原则(2):里氏替换原则
- 企业邮箱怎么修改密码?企业邮箱安全中心,企业邮箱账号密码安全
- python实现钉钉机器人,发送自定义消息
- java反射更改方法内容_Java反射
- 小程序:自定义控件,父控件与子控件的交互triggerEvent
- html 闪电的动态效果图,利用HTML5实现Canvas空中闪电动画特效