前言

不管是移动开发者还是测试者,于抓包工具对于我们的工作都是非常有帮助的,而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抓包

在Android7.0及以上系统中,HTTPS抓包可能会失败。因为处于安全的考虑,Android7.0及以上,系统默认只会信任系统(System)级别的证书
不再信任用户添加的证书(User),也就是说上面我们在设备上安装的 Charles 根证书,系统不再信任。

为了安全起见,一般我们只在 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断点功能

可以使用Charles在某个网络请求的时候进行断点, 这样可以精确的定位某个网络请求:

除了上面的手动添加需要断点的URL,如果这个URL已经请求过,可以对该请求单击右键,然后点击 Breakpoints

通过断点功能,可以修改 Request 参数 和 Response 返回值。需要注意的是修改完 Request 参数需要点击 Excute 按钮,请求成功后,才能修改 Response 返回值

6. Compose功能修改Request

还可以通过 Charles 修改请求的 URL、Method、Header、Parameter等.

修改方式:对请求单击右键,然后点击 compose 按钮

7. Rewrite重写功能

Rewrite重写功能是全局设置的,并不是对某个请求单击右键的方式临时操作下, Rewrite可以:

Rewrite设置路径: Tools -> Rewrite

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,然后滑到 设置 页面

点击选择网络,然后选择你已经连上的 WIFI,然后里面有 3 个地方需要设置:

设置完 Drony App 后,还需要设置 手机系统里 WIFI 选项,以前我们是设置了 Charles 局域网的 IP 和 Charles 监听的端口 现在要把IP改成 Drony所在的局域网 IP,因为 Drony 就安装在手机里面,所以可以把 IP 改成 127.0.0.1,端口改成 Drony 监听的端口 8020

最后我们成功抓取了手机天猫的图片了,如果图片无法展示,可以把 _.heic 去掉,只保留 .jpg 后缀,然后复制到浏览器中展示

Charles 抓包工具详解相关推荐

  1. 正所谓:抓包抓的好,牢饭吃的饱,银白手铐准备好、抓包工具-fiddler/charles抓包工具详解

    目录 简介: Charles的基本功能使用 手机端使用charles进行抓包: 第二步,把手机按照charles的IP和端口进行配置:(手机和电脑网络在同一个wifi) 第三步,手机配对成功后,cha ...

  2. TCP Dump 抓包工具详解

    tcpdump使用技巧 作者: 潜水大叔 一般情况下,非HTTP协议的网络分析,在服务器端用tcpdump比较多,在客户端用wireshark比较多,两个抓包软件的语法是一样的. 一.基本语法 1.1 ...

  3. Charles抓包实战详解

    访问我的博客 前言 通过上一篇文章,想必你已经掌握了如何正确安装抓包神器 Charles,如果还是抓不了包,可以再看看. 今天要做是抓包实战,因为我在做网络文学的公司就职,所以就拿网络文学的 APP ...

  4. Fiddler抓包工具详解(五)(IOS、安卓抓包+fildder插件)

    文章目录 HTTPS抓包 HTTPS与HTTP区别 设置过程 错误解决 验证 Firefox HTTPS请求捕获 IOS设备APP抓包 Fiddler设置 IOS设备设置 IOS设备抓包-安装证书解密 ...

  5. Fiddler抓包工具详解(三)(fiddler监控面板+辅助工具)

    文章目录 fiddler的主界面 Session List会话列表 组成部分 命令行 常用命令 状态栏 代理状态 会话选择 断点设置 选择Session数 附加信息 辅助标签加工具 Statistic ...

  6. Fiddler抓包工具详解(二)(fiddler菜单工具栏详解,相关快捷键)

    文章目录 fiddler的主界面 菜单栏(设置选项) File菜单 Rules菜单 Tools菜单栏 View菜单栏 help菜单栏 工具栏 工具栏内容 如何显示工具栏 增加备注 重放请求 移除会话 ...

  7. Fiddler抓包工具详解(四)(断点设置+弱网测试)

    这里写目录标题 断点设置 全局断点 局部断点 bpu命令 bpafter命令 篡改响应报文 弱网测试 开启网络限速 精确限速 断点设置 全局断点 特点:所有请求断点 设置方法一:Rules-Autom ...

  8. Fiddler抓包工具详解(一)(fiddler原理,HTTP请求构成)

    文章目录 fiddler原理 B/S架构 工作原理 HTTP协议 请求报文 请求行 请求方法字段 统一资源定位符(URL) http版本 请求头部 请求体 响应报文 状态行 响应头 fiddler原理 ...

  9. HTTP协议版本介绍以及使用Wireshark工具针对HTTP进行抓包分析详解

    一.http协议版本介绍 http:Hyper Text Transfer Protocol 超文本传输协议,是互联网应用最为广泛的一种网络协议,主要用于Web服务.通过计算机处理文本信息,格式为HT ...

最新文章

  1. 全局变量中断原子操作_原子操作原理分析
  2. autosar架构详细介绍_【技术】基于AUTOSAR的电机驱动系统分析
  3. TCP、UDP和HTTP详解
  4. 粘包问题,以及在python中如何调用操作系统命令
  5. Python-类的学习
  6. chiinv函数java_Excel统计函数:CHIINV函数实例-excel技巧-电脑技巧收藏家
  7. 编写c语言程序的可视化编程环境有哪些,C语言可视化编程环境设计及实现.pdf
  8. CFS调度主要代码分析二
  9. tensorflow Dataset操作
  10. 变量、变量类型与cin的基本用法详解(C++)
  11. Discuz 3.2x 的那些坑
  12. 操作系统-io控制器
  13. Matlab自动保存图像时使用saveas函数运行出错
  14. 液晶屏背光LED驱动电路设计参考
  15. 计算机声卡原理,什么是电脑声卡 电脑声卡的工作原理
  16. 关闭IDEA提示 empty tag doesn't work in some browsers(设置inspections)
  17. 如何用Python生成二维码
  18. 一键php win10,一键批处理制作纯64位网络骨头版WIN10pe
  19. 透过数据读懂纷繁世界 中译语通“NexMagic再·奇迹”年度峰会召开
  20. 酒店管理系统(C语言)

热门文章

  1. 前端常用UI且好用的网站总结
  2. Laravel Mix 4升级说明与“排坑儿”指南
  3. 第三方授权的应用苹果审核被驳回解决方案和app版本更新
  4. android 连接已配对蓝牙耳机,连接/配对蓝牙耳机和Android
  5. 设计模式六大原则(2):里氏替换原则
  6. 企业邮箱怎么修改密码?企业邮箱安全中心,企业邮箱账号密码安全
  7. python实现钉钉机器人,发送自定义消息
  8. java反射更改方法内容_Java反射
  9. 小程序:自定义控件,父控件与子控件的交互triggerEvent
  10. html 闪电的动态效果图,利用HTML5实现Canvas空中闪电动画特效