设为首页 收藏本站
查看: 2818|回复: 0

[经验分享] 强大的http调试工具charles用法详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-3 10:03:55 | 显示全部楼层 |阅读模式
本帖最后由 eefr 于 2014-7-3 10:05 编辑

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

        破解版传送门

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

         charles-1.jpg

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

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

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

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

        界面功能初探

         2.jpg

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

         1.jpg

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

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

         3.jpg

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

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

         2013-11-16-16-39-14.jpg

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

         4.jpg

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

        本地代理和远程代理

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

         2013-11-16-16-58-57.jpg

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

        点击“Map Local”后:

         2013-11-16-17-01-33.jpg

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

         2013-11-16-17-03-52.jpg

        代理成功,so easy!

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

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

         2013-11-16-17-11-44.jpg

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

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

        这点Charles比fiddler人性化多了。

         2013-11-16-17-13-20.jpg

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

        去除代理配置

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

        去掉代理配置:

         2013-11-16-17-34-25.jpg

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

        mobile代理功能

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

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

        ios的配置非常简单

         T1SvWVFn0kXXb1o7go-320-416.jpg

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

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

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

        安卓机器的代理

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

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

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

        试试远程代理

         2013-11-16-17-39-24.jpg

        代理配置

         2013-11-16-17-26-43.jpg

         2013-11-16-17-27-23.jpg

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

网速模拟功能        

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

        

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

        

                首先先配置下throttle。        

        

                2013-11-17-8-19-04.jpg         

        

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

        

                2013-11-17-8-21-20.jpg         

        

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

        

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

        

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

                        牛逼的断点功能                

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

        

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

        

                2013-11-17-8-43-05.jpg         

        

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

        

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

        

                2013-11-17-8-46-27.jpg         

                        断点列表查看                

                2013-11-17-14-49-35.jpg         

        

                2013-11-17-14-51-13.jpg         

        

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

                        重复发送请求                

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

        

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

        

                2013-11-17-15-00-13.jpg         

        

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

        

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

        

                2013-11-17-15-01-59.jpg         

                        捕获记录控制                

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

        

                2013-11-17-15-07-03.jpg         

        

                然后配置“exclude”:        

        

                2013-11-17-15-10-54.jpg         

                        web界面                

                Charles有个有趣的web界面:        

        

                2013-11-16-16-52-03.jpg         

        

                2013-11-16-16-53-08.jpg         

        

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

        

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

        

                2013-11-16-16-55-45.jpg         

        

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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-21516-1-1.html 上篇帖子: openssl 再爆惊天漏洞及紧急修复指南 下篇帖子: 关闭WordPress自动加载的Open Sans字体-WP访问过慢原因
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表