一、Charles用于简单操作时

1、抓包工具Charles的下载和安装:

下载网址:Download a Free Trial of Charles • Charles Web Debugging Proxy

生成注册码网址:Charles破解工具 (zzzmode.com)

Windows版安装:

一路按next即可安装(默认C盘,保证电脑里没有其他Charles即可,也可自定义安装)

2、配置Charles:

安装好之后,打开Charles,依次点击help ——> register,输入注册码;依次点击Proxy ——> Proxy Settings ——> Proxies,设置端口号Port,如8888、8889,……,勾选上Support HTTP/2;点击 ——> Windows,看到有两个主选项 Enable Windows proxy 和 Enable Windows proxy on launch,前一个在抓取本台电脑上的数据包时需勾选上,当抓取手机端时最好去掉(否则难以判别数据包的的来源,造成干扰),后一个是指在打开Charles时就自动勾选上第一个选项,建议把它勾选上,这样每次打开Charles可以观察能否抓到PC端的数据包以及数据包的状态来判断Charles是否正常工作,如果正常则依次单击Proxy ——> Windows proxy,就可以去掉勾选了(Windows proxy左边对勾消失)。

依次点击Proxy ——> SSL Proxying Settings ——> SSL Proxying,勾选上Enable SSL Proxying,在 include 栏点击 Add 后,设置 Host 为 * 和 Port 为 443,点击OK,再次点击 Add,设置 Host 为 * 和 Port 为 *,点击OK,再点击OK,最后效果如下图

3、Charles证书安装到电脑本地(本地应用抓包必需):

最后重启Charles 。

4、Charles证书安装到手机(手机APP抓包必需https://ztjun.fun/index.php/archives/213/):

使用安卓模拟器代替实体机,根据模拟器的不同,操作有所差异。实体机建议购买一个已root过的手机,否则很难自己刷机安装证书。

Android7.0之后默认不相信用户自己安装的证书,这样一来fiddler/charles等抓包工具就无法抓取https加密的报文,这种情况下解决办法只有两个,一个是不用android7.0以上的设备,还有一个方法就是安装系统的根证书。我们这里就采用的第二个方法,具体步骤如下:

安装OpenSSL

https://slproweb.com/products/Win32OpenSSL.html

获取pem证书的哈希值

openssl x509 -subject_hash_old -in charles.pem

将pem证书改名为 哈希值.0,如691b0ed3.0

将证书上传到模拟器

adb remount

adb push C:\Users\zhengwu\Desktop\OpenSSL\691b0ed3.0 /system/etc/security/cacerts

视频演示

https://www.bilibili.com/video/BV1it4y1p7yK/

二、Charles简介(Charles抓包工具使用教程 - 知乎)

1、功能介绍

  • 截取Http和HTTPS网络封包;

  • 支持重发网络请求,方便后端调试;

  • 支持修改网络请求参数;

  • 支持网络请求的捕获并动态修改;

  • 支持模拟慢速网络

2、两种视图模式

Structure模式

  • 以域名划分请求信息

  • 可以清晰看到请求的数据结构

Sequence模式

  • 以数据请求的顺序执行,即请求越快显示越前

  • 可以清晰看到全部请求

两种模式中,对于某一个具体的网络请求,都可以在Contents中查看其详细的请求内容和响应内容

  • 如果请求内容是 POST 的表单,Charles 会自动将表单进行分项显示;

  • 如果响应内容是 JSON 格式的,Charles 可以自动将 JSON 内容格式化,方便查看;

  • 如果响应内容是图片, Charles 可以显示出图片的预览

3、主菜单功能介绍

3.1 File菜单

  • New Session:开启一个新会话,可以新建一个会话页面,这样可以在不同的会话页面抓取不同页面的数据包

  • Open Session:打开保存的会话文件

  • Clear Session:清除会话内容,会清空已经抓取到的数据包

  • Close Session:关闭会话

  • Save Session:保存会话

  • Save Session As:会话另存为

  • Import:导入会话信息

  • Export Session:导出会话信息

3.2 Edit菜单

  • Cut:剪切

  • Copy:复制

  • Paste:粘贴

  • Select All:选中当前会话页面的所有请求

  • Find:可以在制定的范围内查找关键字内容

  • Preferences:界面样式及字体等设置

3.3 View菜单

  • Structure:查看该视图

  • Sequence:查看该视图

  • Overview:HTTP/HTTPS请求的概要信息

  • Request:请求的详细内容

  • Response:服务端根据请求返回的数据内容

  • Summary:汇总请求包括哪些资源,耗时及数据包大小信息

  • Chart:请求包括的资源耗时分析

  • Notes:日志信息

  • View Request As:以怎样的方式查看请求

  • View Response As:以怎样的方式查看服务端返回的内容

3.4 Proxy菜单

  • Start/Stop Recording:开始/停止捕获;

  • Start/Stop SSL Proxying:开始/停止抓取HTTPS数据包;

  • Start/Stop Throttling:开始/停止节流;

  • Enable/Disable Breakpoints:启用/关闭断点;

  • Recording Settings:监听设置;

  • SSL Proxying Settings:抓取https数据包的设置;

  • Throttling Settings:模拟各种网络环境设置,包括:3G、4G等场景;

  • Breakpoint Settings:断点设置;

  • Reverse Proxies:反向代理设置;

  • Port Forwarding:重定向功能;

  • Windows Proxy:设置为系统代理;

  • Proxy Settings:代理的设置;

  • Access Control Settings:访问控制设置;

  • External Proxy Settings:外部代理设置;

  • Web Interface Setting:Web界面设置

3.5 Tools菜单

  • No Caching:禁用缓存,不从缓存中访问;

  • Block Cookies:禁用Cookie,默认针对所有请求,也可以针对指定请求;

  • Map Remote:远程映射;

  • Map Local:本地映射;

  • Rewrite:重写请求;

  • Block List:黑名单列表;

  • Allow List:白名单列表;

  • DNS Spoonfing:DNS欺骗设置;

  • Mirror:镜像设置;

  • Auto Save:自动保存设置;

  • Client Process:客户端进程设置;

  • Compose/Compose New:修改请求;

  • Repeat /Repeat Advanced:一次重发/高级重发

3.6 Window菜单

  • Session *:切换会话窗口,如果有多个会话的话,这里就会显示多个会话列表

  • Error Log:显示程序的错误日志

  • Active Connections:显示处于未关闭状态的连接请求

4、操作介绍

4.1 过滤网络请求

方法一:在主界面的Filter栏中填入需要过滤出来的关键字

方法二:在Charles顶部的菜单栏选择“Proxy->Recording Settings”,然后在弹出的对话框中选择Include栏,添加一个项目并填入需要监控的协议,主机地址和端口号。这样就可以只截取目标网站的封包了

方法三:在想过滤的网络请求上右击选择“Focus”,之后在Filter栏勾选上Focused项

注:方法一可用于做一些临时性的封包过滤;方法二可用于做一些经常性的封包过滤;方法三可用于临时性快速过滤一些没有关键字的网络请求

4.2 快捷操作

4.3 Charles注册码

  • Registered Name: https://zhile.io

  • License Key: 48891cf209c6d32bf4

注:注册码来源于网络

三、Charles使用详解

1、Charles抓包Http

Charles其实是一款代理服务器,通过将自己设置成系统(电脑或者浏览器)的代理服务器,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。安装Charles的时候要先装好Java环境。

将Charles设置成系统代理

启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy->Windows Proxy”来将 Charles 设置成系统代理。如下所示:

注:Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。

手机APP抓包

1、使手机和电脑在一个局域网内,不一定非要是一个ip段,只要是同一个路由器下就可以了;

2、Charles菜单栏“Proxy->Access Control Settings”设置允许接收的ip地址的范围

例:如果接收的ip范围是http://192.168.1.xxx的话,那么就添加并设置成192.168.1.0/24 如果全部范围都接收的话,那么就直接设置成0.0.0.0/0

3、手机端的WiFi代理设置手动进行相关配置

①代理服务器地址填写电脑的IP地址(cmd-ipconfig命令查看IPV4;或Charles菜单栏“Help->Local IP Address”中查看)

②端口填写8888(Charles的默认代理端口,可在菜单栏“Proxy->Proxy Settings”中修改)

4、配置好之后,打开手机上的任意需要网络通讯的程序,就可以看到 Charles 弹出请求连接的确认菜单(如下图所示),点击 “Allow” 即可完成设置。

如果不小心点击了“Deny”,可以在菜单栏“Proxy->Access Control Settings”中手动添加手机IP。如果只需要抓取手机上的请求,可以取消勾选菜单栏“Proxy->Windows Proxy”。

2、Charles抓包HTTPS

截取分析 Https 协议相关的内容,需要安装 Charles 的 CA 证书。

具体步骤如下:

1、电脑上安装证书:点击Charles的顶部菜单栏,选择“Help->SSL Proxying->Install Charles ROOT Certificate”

2、手机上安装证书:点击Charles的顶部菜单栏,选择“Help->SSL Proxying->Install Charles ROOT Certificate on a Mobile Device or Remote Browser”,得到安装提示如下:

意思是说,在手机设置好Charles为代理后,在手机浏览器中访问chls.pro/ssl下载证书。

下载完成后,证书文件名可能是charles-proxy-ssl-proxying-certificate.pem。然后在手机上安装该证书,一般在设置中的安全设置中进行安装

3、Charles的菜单栏“Proxy->SSL Proxying Settings”中开启SSL Proxy,即可对所有HTTPS请求抓包,如下图所示:

如果只想截取某个网站上的所有HTTPS网络请求,可以在该请求上右击,选择“SSL Proxy”,这样对于该Host的所有SSL请求都可以被截取到。

3、模拟慢速网络

在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对此需求提供了很好的支持。

在Charles顶部的菜单栏选择“Proxy->Throttle Settings”,在弹出的对话框中勾选“Enable Throttling”,即可手动设置网络速度,还可以自定义带宽(Bandwidth),或设置Throttle Preset的类型。

如果只想模拟指定网站的慢速网络,可以再勾选上图中的“Only for selected hosts”项,然后增加指定的hosts即可

4、Repeat重试功能

Repeat(重试一次):在Charles中对某一请求右击选择“Repeat”即可。主要用于和服务端联调,如果接口有问题,可能需要服务端开发人员在后台对代码打断点来排查问题。

Repeat Advanced:在Charles中对某一请求右击选择“Repeat Advanced”,然后在弹出的对话框中设置并发数量和重试次数。一般用于简单地测试服务器的并发处理能力,即对服务器进行压力测试,或者批量提交写数据等

5、Compose功能修改Request

有时候为了调试服务器的接口,需要反复尝试不同参数的网络请求。Charles 提供了网络请求的修改和重发功能。只需要在以往的网络请求上右击选择“Compose”,即可创建一个可编辑的网络请求。我们可以修改该请求的任何信息,包括 URL 地址、端口、参数等,之后点击 “Execute” 即可发送该修改后的网络请求。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便

6、Breakpoints断点功能

Breakpoints功能可用于临时修改一次网络请求结果。当指定的网络请求发生时,使用BreakPoints可截获该请求,这时可以修改该请求的Request参数和Response 返回值。需要注意的是,修改完Request参数需要点击Excute按钮,请求成功后,才能修改Response返回值

在Charles顶部的菜单栏选择“Proxy->Breakpoint Settings”,在弹出的对话框中勾选“Enable Breakpoints”,可以使用在某个网络请求的时候进行断点, 这样可以精确的定位某个网络请求;或者在某个请求上右击选择“Breakpoints”。

另外需要注意的是,使用Breakpoints功能将网络请求截获并修改的过程中,整个网络请求的计时不会停止,所以长时间的暂停可能导致客户端的请求超时。

7、Rewrite重写功能

在Charles顶部的菜单栏选择“Tools->Rewrite”,Rewrite功能一般用于对某一类请求的一些值进行全局替换,替换规则支持正则表达式。

8、Map映射功能

Map Remote:将指定的网络请求重定向到另一个网址请求地址

Map Local:将指定的网络请求重定向到本地文件

在Charles顶部的菜单栏选择“Tools->Map Remote/Map Local”,对于 Map Remote 功能,我们需要分别填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以留空。

对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先右击请求选择“Save Response”,将请求结果保存到本地,然后稍加修改,成为我们的目标映射文件。

9、Reverse反向代理功能

Charles的反向代理功能,允许我们将本地的端口映射到远程的另一个端口上。在Charles顶部的菜单栏选择“Proxy->Reverse Proxies”,然后在弹出的对话框中填写端口号和服务端的IP即可。如下图所示:

四、常见问题汇总

1、contents返回乱码

① http请求

找到该软件显示包内容,Contents目录下的info.plist,打开文件找到vmoption,添加-Dfile.encoding=UTF-8即可。

② https请求

需要安装Charles的CA证书

2、手机无法安装证书

提示:无法安装该证书,因为无法读取证书文件

解决:不要使用系统自带浏览器下载,使用第三方浏览器下载,如UC或Edge浏览器

3、Android7.0及以上系统中HTTPS抓包

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

为了安全起见,一般我们只在 Debug 版本允许抓包,正式版本不应该允许抓包。可以在AndroidManifest.xml 文件中配置安全策略:

<application android:networkSecurityConfig="@xml/network_security_config" >
</application>

network_security_config.xml

<?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>

然后在res目录下新建xml文件夹,然后在xml文件夹中新建 network_security_config.xml

<?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>

Charles手机抓包之下载、安装、配置、介绍相关推荐

  1. charles 安装 ssl_最全面的解决Charles手机抓包的证书问题(步骤非常详细)

    源自公众号文章: 彻底解决Charles手机抓包的证书问题 简介: Charles 抓包是日常开发当中经常会用到的技术, 在 Android 6 之前, 手机系统既信任系统内置的证书, 也信任用户自己 ...

  2. charles手机抓包配置

    Charles手机抓包 静静地就好关注 2020.07.26 22:12:27字数 393阅读 873 一.Charles设置 1.让电脑和手机处于同一个局域网下,即电脑和手机连接同一个WiFi[电脑 ...

  3. 解决Charles手机抓包出现unknown和乱码的问题

    解决Charles手机抓包出现unknown和乱码的问题 如果显示不是下图所示的目录和文件 而是显示unknown和乱码的话 0x01 在电脑上安装CA证书 方法参考 :  https://blog. ...

  4. charles手机抓包教程

    charles手机抓包教程 一.设置系统代理 二.电脑端安装证书 安装的时候就注意证书放在"受信任的证书委发机构"就行,其他的都是点下一步 三.设置代理 四.设置手机上的代理 让手 ...

  5. Python爬取微信小程序数据[使用Charles手机抓包获取微信小程序的请求]

    前期准备 第一步 注意:首先将电脑和手机连接到一个网路里 然后重启软件 第二步 根据提示,手机设置代理 配置完之后打开Safari浏览器: chls.pro/ssl 手机浏览器直接访问chls.pro ...

  6. 努比亚手机浏览器 安全证书失效_彻底解决Charles手机抓包的证书问题

    点击上方蓝色"后端开发杂谈"关注我们, 专注于后端日常开发技术分享 Charles 证书配置 简介: Charles 抓包是日常开发当中经常会用到的技术, 在 Android 6 ...

  7. charles 手机抓包设置

    charles 抓包手机 charles经常会进行手机上的网页抓包,比如去copy别人网站图片或脚本的时候o(∩_∩)o : 手机抓包的原理,和PC类似,手机依靠charles与服务端进行对话: 目标 ...

  8. Charles手机抓包工具使用实践

    参考网站 https://www.cnblogs.com/studycases/articles/7886625.html 关键字:Charles,移动抓包: 本文基于Windows平台(ver:4. ...

  9. Charles手机抓包

    Charles 很早之前用过,后来一直不用都忘记怎么使用了.近期公司叫我去测试一个小程序的安全性,第一时间想到了用 Charles 抓包分析,这里记录一下过程方便后续查阅 安装 这里有一个 Charl ...

最新文章

  1. python中import与input_python3入门之print,import,input介绍
  2. 图像处理(十三)保刚性图像变形算法-Siggraph 2004
  3. java 死锁种类_用java写一个死锁
  4. 洛谷 P1417 烹调方案 (01背包拓展)
  5. 视觉SLAM十四讲学习笔记-第四讲-Sophus实践、相似变换群与李代数
  6. mongodb 3.4 集群搭建升级版 五台集群
  7. 继腾讯、阿里、字节、快手等后,京东、有赞又爆大裁员,个别部门比例或达40%!...
  8. HDU5086Revenge of Segment Tree(数论)
  9. IE7,IE8,上传文件控件input file和asp.net FileUpload控件无法获取完整路径的解决办法...
  10. 十折交叉验证python_Python机器学习:6.2 K折交叉验证评估模型性能
  11. 黑马程序员最新Python教程——第一阶段(2)
  12. 甘氨胆酸(Cholylglycine)小麦麦清白蛋白纳米粒|叶酸偶联牛血清白蛋白负载卡铂和紫杉醇靶向纳米粒
  13. nyoj248 BUYING FEED(贪心orDP)
  14. C++输入一系列数字,以换行结束输入
  15. label 详细用法
  16. 深入理解MATLAB中contour函数
  17. 千年私服服务器用户名创建,千年私服详细安装技术文章
  18. Modelsim软件仿真出错:Modelsim is exiting with code 7.
  19. 当a=1,b=2,c=3时,if(ac)b=a;a=c;c=b;的执行结果详解
  20. SAP-SD-国家调整增值税,sap如何同步调整

热门文章

  1. php 七牛 视频切片,七牛云试用指南-音视频切片与播放授权
  2. VBoxManage 命令详解
  3. hovm什么意思_一加7跟一加7pro的区别 两者参数详细对比
  4. 罗曼冲牙器W6维修记录
  5. 电脑上的以太网连接,本地连接,宽带连接,无线WLAN连接的区别
  6. pgsql 取并集交集差集
  7. Oracle,获取2个日期间有多少个周六和周日
  8. linux挂载存储卡,一个关于mount外置存储卡的教程。
  9. 南邮MySQL实验报告一
  10. 天猫网店转让新店可以转让吗