强大的http调试工具charles用法详解

2024-08-31 04:18

本文主要是介绍强大的http调试工具charles用法详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Charles是目前最强大的http调试工具,在界面和功能上远强于Fiddler,同时是全平台支持,堪称圣杯级工具,唯一的缺陷是这货是收费的,而且是要¥50美元大洋…当然网上是有破解版的,鄙视下自己,无耻地使用了…放在网盘里,亲可以默默带走,不要留下一片云彩。

破解版传送门。

先安装里面的原版,然后copy charles.jar覆盖到安装目录下的lib目录即可。这是V3.6版,最新版本是V3.8.3,但破解补丁不通用,会导致无法启动。

charles-1

启动后,圣杯的真面目如上图。

Charles有个会话(session,不是指http中的session)的概念,可以理解为浏览器中的tab,这个功能在需要调试多个站点页面时很实用,当你刷新页面的时候,只会在当前session中捕获请求。

(PS:ctrl+N创建个新的session,ctrl+W关闭当前session)

Charles的代理服务器启动就可以使用(会提示给firefox安装插件),如果没有捕获到请求,请清理下浏览器缓存。

界面功能初探

2

工具条包含了Charles的大部分功能:

1

有几个功能比较抽象,后面会详细说明。

右键请求出现菜单,Charles的右键菜单功能比fiddler强大太多了。

3

双击请求进入列表视图,类似fiddler,方便查看和过滤请求。

Charles的过滤查找功能非常赞,很快速:

2013-11-16 16-39-14

请求详情跟fiddler相似,但直观不少:

4

工具视图基本讲解完毕,接下来我们用Charles做点事情。

本地代理和远程代理

Charles的代理服务器端口跟fiddler一样都是8888,即你的本机ip:8888。

2013-11-16 16-58-57

我们的目标将一个压缩文件代理成本地的源码文件。

点击“Map Local”后:

2013-11-16 17-01-33

index-min.js代理成index.js,刷新页面试试。

2013-11-16 17-03-52

代理成功,so easy!

Charles的树状视图比fiddler的列表视图好的地方在于,多次刷新后的请求会被归纳到树里面,更加一目了然,用fiddler的时候,有点强迫症的同学,都要点击clear,有木有…

Charles是支持子目录代理哦,非常实用的功能:(使用通配符*

2013-11-16 17-11-44

本地地址选择个子目录,不需要通配符。

如何判断是否代理成功呢?

这点Charles比fiddler人性化多了。

2013-11-16 17-13-20

校验是否代理成功,最省力的方式是点击工具条上的刷新按钮,刷新单个请求,如果代理成功,Charles会往“Notes”界面打个log,比如Mapped to local file: C:\www\htdocs\gallery\uploader\1.5\build\index-min.js。

去除代理配置

小技巧:所有的配置开关都可以通过工具条上的“工具”设置(倒数第二个按钮)。

去掉代理配置:

2013-11-16 17-34-25

小技巧:建议开启No Caching,不缓存请求。

mobile代理功能

手机或平板页面的调试,我们需要把请求代理到pc端的Charles上。

必须确保mobile端和pc端连的是相同的无线网络。

ios的配置非常简单

T1SvWVFn0kXXb1o7go-320-416

(上图借用我同事自寒的截图)

服务器ip设置成pc的ip,端口好设置成8888即可。

然后mobile终端可以刷新试试。

安卓机器的代理

首先,安卓机器必须有root权限,其次需要借助app才行,在安卓的任意市场搜索 ProxyDroid,灰常好用的代理app。
2013-11-18 17-54-41

有些浏览器是自带了代理配置功能,比如opera mobile,输入opera:config ,不过我试了下没代理成功,不知道是不是手机问题。

wp8的代理设置也很简单,手机连接wifi 并进行设置下 设置–WiFi–长按连接好的WIFI–弹出编辑选项。

试试远程代理

2013-11-16 17-39-24

代理配置

2013-11-16 17-26-43

2013-11-16 17-27-23

Charles支持https和sockets的代理,还支持SSL,非常全面。

网速模拟功能

throttle功能对于前端来说非常实用,可以看页面在低网速下的表现,从而找出优化的点。

在线上环境通常有些因为网速慢导致的bug,在本机无法重现,那时候就很抓瞎,如果嫌远程麻烦,推荐使用throttle。

首先先配置下throttle。

2013-11-17 8-19-04

我们要看页面在3G环境下的表现:

2013-11-17 8-21-20

(Charles的预配置对于中国的网络环境并不准确,电信、移动、网通的速度还有有明显差异。)

解析下图上几个配置的含义:

Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(字节)(MTU的说明请看百度百科)。

牛逼的断点功能

Charles另一个非常实用的功能,对于开发者和测试人员来说,堪称神器。Charles能够断到发送请求前(篡改Request)和请求后(篡改Response)。

场景:ajax发送请求,我们需要测试接口的各种边界情况,比如出错、超时等表现,Charles的断点+随意篡改,非常方便测试。

2013-11-17 8-43-05

upload.php是我们要测试的上传接口,右键选择“BreakPoints”,开启断点。

小技巧:不用在web界面中操作,使用repeat功能,就可再次发送一样的请求:

2013-11-17 8-46-27

断点列表查看

2013-11-17 14-49-35

2013-11-17 14-51-13

可以指定断点“get”请求还是“post”请求。

重复发送请求

repeat功能对于测试同学特别有用,可以检验接口的健壮性。

repeat功对于前端的价值是不需要刷新页面,只需要repeat请求,比如检验代理是否成功,修改请求后执行等。

2013-11-17 15-00-13

“repeat”重复发送一次请求。

“repeat Advances”可以自定义重复次数和重复间隔。

2013-11-17 15-01-59

捕获记录控制

捕获的请求太多,容易产生干扰,Charles可以对捕获记录进行过滤。

2013-11-17 15-07-03

然后配置“exclude”:

2013-11-17 15-10-54

web界面

Charles有个有趣的web界面:

2013-11-16 16-52-03

2013-11-16 16-53-08

强大的是可以控制是否远程可以访问这个界面,还可以设置用户名和密码…碉堡了…

浏览器输入http://control.charles/ 

2013-11-16 16-55-45

Charles还有其他有趣功能等待大家挖掘,由于用的比较少,这里就不再累述。

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(44618) | 评论(0) | 转发(3) |
0

上一篇:Web开发人员需知的Web缓存知识

下一篇:Django中ajax的使用

相关热门文章
  • c++ virtual析构函数详解...
  • Oracle:replace和translate函...
  • 关于ORACLE COMMIT操作的详解...
  • 使用RoboCopy 命令
  • Linux逻辑卷详解总结
  • ASP使用内置对象前不必创建...
  • bootStrap中Tab页签切换
  • 京东SSO单点登陆实现分析...
  • WebRTC学习笔记
  • 强大的http调试工具charles用...
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议

这篇关于强大的http调试工具charles用法详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Java中Scanner的用法示例小结

《Java中Scanner的用法示例小结》有时候我们在编写代码的时候可能会使用输入和输出,那Java也有自己的输入和输出,今天我们来探究一下,对JavaScanner用法相关知识感兴趣的朋友一起看看吧... 目录前言一 输出二 输入Scanner的使用多组输入三 综合练习:猜数字游戏猜数字前言有时候我们在

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Java中的JSONObject详解

《Java中的JSONObject详解》:本文主要介绍Java中的JSONObject详解,需要的朋友可以参考下... Java中的jsONObject详解一、引言在Java开发中,处理JSON数据是一种常见的需求。JSONObject是处理JSON对象的一个非常有用的类,它提供了一系列的API来操作J

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab