Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱
MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com

目录

Charles 简介

官方下载地址

charles是一个HTTP代理服务器、HTTP监视器、反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。

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

Charles的主要功能:

  • 截取 Http 和 Https 网络封包
  • 支持重发网络请求,方便后端调试
  • 支持修改网络请求参数
  • 支持网络请求的截获并动态修改
  • 支持模拟慢速网络

Charles 破解工具

Charles 在线破解工具
blog介绍

用法:输入RegisterName(此名称随意,用于显示 Registered to xxx),选择本地已安装的版本,点击生成,并下载charles.jar文件替换本地\Charles\lib\charles.jar文件

界面介绍

主菜单

  • 清除会话记录:点击之后可清除抓取到的所有请求
  • 开始/停止抓取会话记录:红色说明正在抓取请求,灰色说明目前不在抓取请求状态
  • 开启/停止限流:灰色乌龟是网速设置正常,绿色乌龟指慢速网速开启了
  • 开启/关闭断点:灰色说明断点未开启,红色说明在使用断点
  • 编辑会话:点击之后可以修改请求的内容,修改后可执行此请求
  • 重新发一遍请求:先选定某一请求,点击该图标则请求会被再次发送
  • 验证回话
  • 工具
  • 配置

会话右键菜单

  • Repeat:重复执行请求,和主菜单中的功能一样
  • Repeat Advanced:可以指定重复的次数,这样可以选中多会话,在右侧的chart查看请求的时间等性能
  • Focus:在某个域名下点击Focus,会将当前域名放到顶部,没有 Focus 的域名统一放到下面的 Other Hosts 下。可以在View -> Focused Hosts中统一编辑
  • Black List:黑名单中的域名不能联网,可以在Toos -> Black List/Write List下统一更改
  • Write List:白名单开启后,只有白名单中的网络可以访问网络,不在白名单中的不能访问网络。如果一个域名既在 Black List 中也在 Write List 中,则也不能访问网络
  • Export:导出会话 Session 保存到本地,然后下次可以通过File -> Open Session打开本地的 Session
  • Compose:即工具栏上的钢笔的图标,编辑请求然后执行

两种显示模式

Charles有两种显示模式,Stucture 和Sequence,其实并没啥大的区别。

Structure
按照不同hosts域名分组展示请求。
点击+之后便可以展开该 host 域名下的所有请求,可以很清晰的看到请求的数据结构,可以很清晰的去分析和处理数据,适合对单一系列的访问请求从宏观上进行把握,可以快速定位。

Sequence
按照请求的顺序展示请求。
可以看到全部请求,适合精确定位内容,因为每条 sequence 都有size、status等属性信息,方便快速定位这条结果的价值。

内容区域

请求内容

  • Overview:会展示该请求的一个大体情况,例如:请求头、请求开始时间、响应大小、自己的notes等
  • content:请求和响应的详细内容,配合下面的导航栏进行查看
  • summary:展示一个该请求的大体资源分布情况,例如:服务器响应了多长时间,host是什么等等
  • chart:以表格形式告诉我们一个响应时间的分布情况
  • notes:点击之后自己可以对该请求记录一些东西,方便后续查看该接口的用途,可在overview中查看

request 导航栏

  • header :详细的请求头信息
  • query string :请求时携带的参数
  • cookies :以表格的形式展示请求中的 Cookie 信息
  • raw :完整的原始请求信息

response 导航栏

  • header :详细的响应头信息
  • text :以文本形式显示响应体
  • hex、compressed :以十六进制、压缩形式显示响应体,一般不予查看
  • JavaScript、json、json text:以json形式显示响应体,区别不大
  • raw :完整的原始响应信息

抓包

HTTP 抓包

原理:
当你使用代理服务器后,所有的 HTTP 请求,都是先发到代理服务器,然后由代理服务器重新包装后,再发给目标服务器;响应也是如此,代理服务器先接收来自目标服务器的响应,然后包装后发给客户端,从而在代理服务器上可以实现抓包。

使用方式:

  • 工具栏选择 Proxy -> Proxy Settings,并且勾选 Enable transparent Http proxying,设置一个端口号
  • 在手机端打开你的 Wifi 设置,长按已经连接的 Wifi,继续点击进入设置页面,勾上[手动代理]选项,代理服务器主机名、端口号填写 Charles 上的配置的
  • 当手机连接上代理后并有网络请求时,Charles 会弹出相应的提示框,点击Allow即可

HTTPS 抓包

完成上述配置即可以对手机端发送的 HTTP 请求进行抓包。但由于 Chrles 属于代理服务器,缺少SSL证书,无法对HTTPS请求进行抓包,需进行如下配置。

方式一:

  • 点击 Proxy -> SSL Proxying Settings ,勾选上Enable SSL Proxying
  • 点击 Add Host 填写需要代理的 host 及端口号,支持通配符*,如果两者都是*,则会代理所有 host 的请求
  • 点击 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device 出现弹窗
  • 在手机浏览器输入地址 chls.pro/ssl,出现证书下载页面,下载并安装

方式二:

  • Help -> SSL Proxying -> Save Charles Root Certificat -> 输入文件名(如bqt.pem),文件格式默认.pem格式,名称随意
  • 获取证书在安卓系统中的文件名:openssl x509 -subject_hash_old -in bqt.pem,执行后会生成一个类似1ac7b872的名称
  • bqt.pem重命名为1ac7b872.0,必须以.0格式结尾
  • 1ac7b872.0证书 push 到手机adb push 1ac7b872.0 /system/etc/security/cacerts/目录中,可能需要重启手机才能生效
  • 注意:只有 root 过的手机才能通过 push 命令向此目录导入文件

HTTPS 抓包原理

HTTPS通信的大致过程:

  • 客户端将自己支持的加密算法发送给服务器,请求服务器证书
  • 服务器选取一组加密算法,并将证书返回给客户端
  • 客户端校验证书合法性,生成随机对称密钥用公钥加密后发送给服务器
  • 服务器用私钥解密出对称密钥,返回一个响应,HTTPS连接建立完成
  • 随后双方通过这个对称密钥进行安全的数据通信

Charles 作为一个中间人代理,当浏览器和服务器通信时,Charles 接收服务器返回给客户端的证书,但动态生成一张证书发送给客户端,也就是说 Charles 作为中间代理在客户端和服务器之间通信,所以通信的数据可以被 Charles 拦截并解密。

由于 Charles 更改了证书,客户端(例如浏览器)校验不通过会给出安全警告,必须安装 Charles 的证书后才能进行正常访问。

请求重定向 Map remote

当请求这个链接时,将请求重定向到自己定义的一个链接,将其返回值当做自己的返回值。

实际开发时,有这样的场景,服务端线上版本有bug,你在本地修改程序后,需要模拟实际的线上环境,来验证程序的正确性,最直接的方法就是让客户端修改一下APP的调用地址到你本机,然后重新打一个版本供你模拟测试,这样虽然可以,但效率极其低下,然而Charles为我们解决了这个问题。

两种配置方式:

  • 会话列表中,右击需要重定向的请求 -> 点击Map Remote -> 将会自动带入需要重定向的链接(Map from),配置好实际请求的链接(Map to),点击OK即可
  • 工具栏处,Tools -> Map Remote -> 勾选Enable选项 -> 点击 Add 添加需要重定向的请求

注意:

  • To map from a path and its subdirectories you must end the path with a *.
  • To map an entire host leave the path blank. 要映射整个主机,请将路径留空。

响应重定向 Map local

重定向到本地的文件内容作为返回值。

两种配置方式:

  • 会话列表中,右击需要重定向的请求 -> 点击Map local -> 将会自动带入入需要重定向的链接(Map from),选择本地需要被重定向到的目标文件(Map to),点击OK即可
  • 工具栏处,Tools -> Map local -> 勾选Enable选项 -> 点击 Add 添加需要重定向的请求

使用技巧

断点调试

Intercept and edit requests and responses before they are sent and received

除了修改映射的方法,通过设置断点也可以实现想要的效果。和我们在 IDE 上设置断点一样,在断点处会进入调试模式,请求会暂时中断,这时我们可以进行一些自定义的操作。

设置 Charless 断点
Proxy -> Breakpoint Settings -> 勾选 Enable Breakpoints,点击 Add 添加

对指定的URL开启断点功能
选择一个URL链接 -> 右键开启菜单 -> 选择 Breakpoints 即可开启此请求的断点。这样Charles会遇到此请求时会弹出中断对话框

编辑请求与响应的内容

  • 在中断对话框中,用户可以点击 Edit Request 来编辑请求的内容,编辑完成后然后点击 Execute 发出去这个请求给服务端。
  • 在 Edit Request 对话中点击 Execute 发出请求后,服务端返回来数据后,用户点击 Edit Response 可对响应内容进行编辑,完成后然后点击 Execute 发出去这个数据给客户端。

需要注意一点:通过断点的方式会存在一定的问题。数据被拦截后,客户端的请求超时时长是不会停止计算的,如果没在设置的超时时间内返回数据,本次请求也就按失败处理了。

过滤抓取请求

开始抓包后,随着时间的推移,抓取到的网络包越来越多,这时我们可以使用过滤功能,来过滤出我们想要的网络请求。

Proxy -> Recording Settings 中可以设置网络包的过滤选项,过滤选项中有 Include 和 Exclude 两种选项,只有当 Include 为空时,Exclude 中的设置才会生效。过滤条件支持通配符。

Include

  • Only requests that match one of the locations below will be recorded.
  • If this list is empty , all requests will be recorded unless otherwise excluded. 除非另有排除。

模拟网络限速

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

在Charles的菜单上,选择 Proxy -> Throttle Setting 项,在之后弹出的对话框中,我们可以勾选上Enable Throttling,然后设置 Throttle Preset(限流预值) 等。

也可以通过点击工具栏上小乌龟的图标开启或停止限流。

给服务器做压力测试

我们可以使用 Charles 的Repeat功能来简单地测试服务器的并发处理能力,方法如下:

我们在想打压的网络请求上右击,然后选择Repeat Advanced菜单项,接着我们就可以在弹出的对话框中,选择打压的并发线程数以及打压次数,确定之后,即可开始打压。

一些写得很弱的投票网站,也可以用这个办法来快速投票。

- Charles 简介 总结 HTTP 抓包 代理 MD的更多相关文章

  1. Fiddler简介以及web抓包

    Fiddler简介以及web抓包 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.Fiddler简介简单来说,Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联 ...

  2. Fiddler简介与Web抓包,远程抓包(IE、360、谷歌、火狐)

    Fiddler简介以及web抓包 一.Fiddler简介 简单来说,Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯.网上简介很多,我们不多说. 二 ...

  3. 使用Charles进行网络请求抓包解析

    使用Charles进行网络请求抓包解析 0. 懒人的福音(⌐■_■)(破解版下载地址,记得安装java库支持) http://pan.baidu.com/s/1c08ksMW 1. 查看电脑的ip地址 ...

  4. 使用Charles进行移动APP抓包分析

    一.简介 Charles是目前最强大最流行的http抓包调试工具,Mac.Unix.Windows各个平台都支持.特别是做APP开发,调试与服务端的通信,Charles是必备工具. 目前Charles ...

  5. 1. charles安装配置与抓包详解

    Charles简介Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据.它允许一个开发 ...

  6. iOS使用Charles(青花瓷)抓包并篡改返回数据图文详解

    写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教程,于是待问题解决后抽时间截了图,自己写一遍封存在博客园中以便以后随时查阅. charles又名青花瓷,在iOS ...

  7. iOS安全攻防之使用 Charles 进行网络数据抓包 和 Paros 网络抓包

    Charles 是 Mac 系统下常用的网路抓包工具(Paros 也不错),windows 下常用 fiddler.正版的 Charles 是收费的(PS:支持正版),天朝人民比较喜欢破解版的Char ...

  8. 【Fiddler学习】Fiddler简介和Web抓包应用(转)

    一.Fiddler是什么? Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的进出Fiddler的数据. Fiddler 要比其 ...

  9. 不同局域网如何利用charles对app进行抓包

    晚上遇到了一种尴尬的场景:电脑并没有无线网卡,电脑是通过有线连接的,但是手机连的是公共的wifi,二者并不在同一个网段 在试过很多办法无解后,终于百度出一种"曲线救国"的办法(以荣 ...

随机推荐

  1. phpstorm分别在Mac和Windows下启动命令行,并启用ssh

    Mac:在terminal下运行 sudo -i 输入密码  就可以用ssh IP:端口  命令行登录了 DAssist是一个命令行开发辅助,可直接在系统命令行工具中使用,Linux和MacOS等自带 ...

  2. Flink流式计算

    Structured Streaming A stream is converted into a dynamic table. A continuous query is evaluated on ...

  3. 编写合格的C代码(1):通过编译选项将特定警告视为错误

    目录 快速设定 向错误的执念开炮,向C编译器开炮 编译警告应当被忽略吗?warning不重要吗? 个人总结的应当视作error的warning 1. 函数没有声明就使用 2. 函数虽然有声明,但是声明 ...

  4. Java常用关键字的原理及用法

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10843135.html 一:transient 用途:Java中一个类在定义时如果实现了Serilizabl ...

  5. java static学习

    原创,转载请注明来源sogeisetsu的博客园 static,在类里面定义公共的属性,它可以统一修改,并只占一个内存.从而达到方便修改和少占内存的目的 先放上代码,您可以先越过代码,看后面的讲解内容 ...

  6. 201671030113 李星宇 实验十四 团队项目评审&课程学习总结

    项目 内容 所属课程 [所属课程(https://www.cnblogs.com/nwnu-daizh/) 作业要求 作业要求 课程学习目标 (1)掌握软件项目评审会流程:(2)反思总结课程学习内容 ...

  7. gitlab的搭建和使用(转)

    工作当中常用的GitHub比较好用,但是安全性不是太强,因为github完全开源的,安全性不高 有空搞一下,先记录几个博客 https://yq.aliyun.com/articles/44531 h ...

  8. 完美解决该死的ie6下select总是置于最上层bug

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  9. ToDoList--HttpMediaTypeNotSupportedException

    org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-url ...

  10. day 16

    Weep no more, no sigh, nor groan. Sorrow calls no time that's gone. 别哭泣,别叹息,别呻吟:悲伤唤不回流逝的时光.