易思espcms企业网站管理系统,最新国际消息,备案中的网站名称,黑白摄影网站作者 唐巧 发布于 2013年12月9日 | 1 讨论 分享到#xff1a;微博微信FacebookTwitter有道云笔记邮件分享稍后阅读我的阅读清单简介 Charles是在Mac下常用的截取网络封包的工具#xff0c;在做iOS开发时#xff0c;我们为了调试与服务器端的网络通讯协议#xff0c;常常需要… 作者 唐巧 发布于 2013年12月9日 | 1 讨论 分享到微博微信FacebookTwitter有道云笔记邮件分享 稍后阅读我的阅读清单 简介 Charles是在Mac下常用的截取网络封包的工具在做iOS开发时我们为了调试与服务器端的网络通讯协议常常需要截取网络封包来分析。Charles通过将自己设置成系统的网络访问代理服务器使得所有的网络访问请求都通过它来完成从而实现了网络封包的截取和分析。 Charles是收费软件可以免费试用30天。试用期过后未付费的用户仍然可以继续使用但是每次使用时间不能超过30分钟并且启动时将会有10秒种的延时。 因此该付费方案对广大用户还是相当友好的即使你长期不付费也能使用完整的软件功能。只是当你需要长时间进行封包调试时会因为Charles强制关闭而遇到影响。 Charles主要的功能包括 支持SSL代理。可以截取分析SSL的请求。支持流量控制。可以模拟慢速网络以及等待时间latency较长的请求。支持AJAX调试。可以自动将json或xml数据格式化方便查看。支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化方便查看。支持重发网络请求方便后端调试。支持修改网络请求参数。支持网络请求的截获并动态修改。检查HTMLCSS和RSS内容是否符合W3C标准。安装Charles 去Charles的官方网站http://www.charlesproxy.com下载最新版的Charles安装包是一个dmg后缀的文件。打开后将Charles拖到Application目录 下即完成安装。 安装SSL证书 如果你需要截取分析SSL协议相关的内容。那么需要安装Charles的CA证书。具体步骤如下 去 http://www.charlesproxy.com/ssl.zip 下载CA证书文件。解压该zip文件后双击其中的.crt文件这时候在弹出的菜单中选择“总是信任”如下所示 从钥匙串访问中即可看到添加成功的证书。如下所示 将Charles设置成系统代理 之前提到Charles是通过将自己设置成代理服务器来完成封包截取的所以使用Charles的第一步是将其设置成系统的代理服务器。 启动Charles后第一次Charles会请求你给它设置系统代理的权限。你可以输入登录密码授予Charles该权限。你也可以忽略该请求然后在需要将Charles设置成系统代理时选择菜单中的 Proxy - Mac OS X Proxy来将Charles设置成系统代理。如下所示 之后你就可以看到源源不断的网络请求出现在Charles的界面中。 Charles主界面介绍 Charles主要提供2种查看封包的视图分别名为“Structure”和Sequence。 Structure视图将网络请求按访问的域名分类。Sequence视图将网络请求按访问的时间排序。大家可以根据具体的需要在这两种视图之前来回切换。 对于某一个具体的网络请求你可以查看其详细的请求内容和响应内容。如果响应内容是JSON格式的那么Charles可以自动帮你将JSON内容格式化方便你查看。 过滤网络请求 通常情况下我们需要对网络请求进行过滤只监控向指定目录服务器上发送的请求。对于这种需求我们有2种办法。 在主界面的中部的Filter栏中填入需要过滤出来的关键字。例如我们的服务器的地址是http://yuantiku.com那么只需要在Filter栏中填入yuantiku即可。 在Charles的菜单栏选择Proxy-Recording Settings然后选择Include栏选择添加一个项目然后填入需要监控的协议主机地址端口号。这样就可以只截取目标网站的封包了。如下图所示 通常情况下我们使用方法1做一些临时性的封包过滤使用方法2做一些经常性的封包过滤。 截取iPhone上的网络封包 Charles通常用来截取本地上的网络封包但是当我们需要时我们也可以用来截取其它设备上的网络请求。下面我就以iPhone为例讲解如何进行相应操作。 Charles上的设置 要截取iPhone上的网络请求我们首先需要将Charles的代理功能打开。在Charles的菜单栏上选择“Proxy”-Proxy Settings填入代理端口8888并且勾上Enable transparent HTTP proxying 就完成了在Charles上的设置。如下图所示: iPhone上的设置 首先我们需要获取Charles运行所在电脑的IP地址打开Terminal输入ifconfig en0, 即可获得该电脑的IP如下图所示 在iPhone的 “设置”-“无线局域网“中可以看到当前连接的wifi名通过点击右边的详情键可以看到当前连接上的wifi的详细信息包括IP地址子网掩码等信息。在其最底部有“HTTP代理”一项我们将其切换成手动然后填上Charles运行所在的电脑的IP以及端口号8888如下图所示 设置好之后我们打开iPhone上的任意需要网络通讯的程序就可以看到Charles弹出iPhone请求连接的确认菜单如下图所示点击“Allow”即可完成设置。 截取SSL信息 Charles默认并不截取SSL的信息如果你想对截取某个网站上的所有SSL网络请求可以在该请求上右击选择SSL proxy如下图所示 这样对于该Host的所有SSL请求可以被截取到了。 模拟慢速网络 在做iPhone开发的时候我们常常需要模拟慢速网络或者高延迟的网络以测试在移动网络下应用的表现是否正常。Charles对此需求提供了很好的支持。 在Charles的菜单上选择Proxy-Throttle Setting项在之后弹出的对话框中我们可以勾选上“Enable Throttling”并且可以设置Throttle Preset的类型。如下图所示 如果我们只想模拟指定网站的慢速网络可以再勾选上图中的Only for selected hosts项然后在对话框的下半部分设置中增加指定的hosts项即可。 修改网络请求内容 有些时候为了调试服务器的接口我们需要反复尝试不同参数的网络请求。Charles可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键选择“Edit”即可创建一个可编辑的网络请求。如下所示 我们可以修改该请求的任何信息包括url地址端口参数等之后点击“Execute”即可发送该修改后的网络请求如下图所示。Charles支持我们多次修改和发送该请求这对于我们和服务器端调试接口非常方便。 总结 通过Charles软件我们可以很方便地在日常开发中截取和调试网络请求内容分析封包协议以及模拟慢速网络。用好Charles可以极大的方便我们对于带有网络请求的App的开发和调试。 参考链接 Charles主要的功能列表Charles官网感谢李永伦对本文的审校。 给InfoQ中文站投稿或者参与内容翻译工作请邮件至editorscn.infoq.com。也欢迎大家通过新浪微博InfoQ或者腾讯微博InfoQ关注我们并与我们的编辑和其他读者朋友交流。 转载于:https://www.cnblogs.com/dongweiq/p/5265556.html