调试利器——Charles

Charles是目前主流的网络抓包调试工具,在Mac上使用最为广泛,但也提供了Windows、Linux版本。

Charles目前是收费的,但是可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。

有网友针对Charles4.0+做了破解,本人亲测可用

参考:http://blog.csdn.net/endlu/article/details/52175787
如果你使用的是Windows版本,则替换Charles安装目录下lib目录中的charles.jar

Charles 主要的功能包括:

SSL Proxying – view SSL requests and responses in plain text
Bandwidth Throttling to simulate slower Internet connections including latency
AJAX debugging – view XML and JSON requests and responses as a tree or as text
AMF – view the contents of Flash Remoting / Flex Remoting messages as a tree
Repeat requests to test back-end changes
Edit requests to test different inputs
Breakpoints to intercept and edit requests or responses
Validate recorded HTML, CSS and RSS/atom responses using the W3C validator


安装 Charles

去 Charles 的官方网站(http://www.charlesproxy.com)下载最新版的 Charles 安装包,目前支持window32/64、Mac、Linux,下载您电脑对应的平台包安装即可。

拦截浏览器中的https请求

1、保存Charles的根证书

Help---SSL Proxying---Saving Charles Root Certificate 保存.cer 格式证书

2、在浏览器中导入根证书,并信任该证书

以Chrome浏览器为例


特别注意:即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所有 Https 网络请求,

可以在该请求上右击,选择 SSL proxy:Enabled。

监控移动手机上的HTTP/HTTPS请求

首先移动手机需要和电脑处于同一个局域网内,手机使用wifi连接,打开手机当前连接的wifi,选择代理为手动方式,输入电脑IP和端口8888


这样就可以在Charles中监控到手机上发起的HTTP请求了,如果想监控HTTPS请求,则稍微麻烦点。

首先在手机上安装Charles的根证书,以Android手机为例,有2种安装方式:

1、从存储设备安装

打开Charles..help...SSL Proxying..Save charles root certicate 保存根证书,然后将该证书导入到手机SD卡中

然后从SD卡中导入安装。


2、在手机浏览器中访问 http://charlesproxy.com/getssl ,然后浏览器会提示下载安装该证书。

已安装的证书可以在"信任的凭据"中查看。

注意:

1、大部分手机在安装证书时,都需要手机设置【锁屏密码】

2、即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所有 Https 网络请求,

可以在该请求上右击,选择 SSL proxy:Enabled。

如果不想每个HTTPS网站都手动Enable,也可以设置允许所有的HTTPS网站

Proxy------SSL Proxy Setting---


这样就可以拦截所有的HTTPS网站了。

模拟慢速网络

在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对此需求提供了很好的支持。
在 Charles 的菜单上,选择 “Proxy”–>“Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。如下图所示:


如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。

修改网络请求内容
有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择 “Compose”,即可创建一个可编辑的网络请求。如下所示:


我们可以修改该请求的任何信息,包括 URL 地址、端口、参数等,之后点击 “Execute” 即可发送该修改后的网络请求。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便。

重复执行请求

我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,
我们在想测试的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项,如下所示:


修改服务器返回内容

     有些时候我们想让服务器返回一些指定的内容,方便我们调试一些特殊情况。例如列表页面为空的情况,数据异常的情况,部分耗时的网络请求超时的情况等。如果没有 Charles,要服务器配合构造相应的数据显得会比较麻烦。这个时候,使用 Charles 相关的功能就可以满足我们的需求。
根据具体的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:
Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
Rewrite 功能适合对网络请求进行一些正则替换。
Breakpoints 功能适合做一些临时性的修改。

Map 功能
Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。
在 Charles 的菜单中,选择 “Tools”–>“Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面。

1、Map Remote


上面截图中就是将http://test.wolaibao.com下的所有请求都定向到https://www.baidu.com.

2、Map Local

对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件。


上面截图中就是将http://test.wolaibao.com下的所有请求结果定向到本地保存的count.json中,即所有请求返回结果都是count.json中的内容。

Rewrite 功能

Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。

本例就是将http://test.wolaibao.com/wlb_svr/user/info.json返回数据中的【大哥大】改为【小哥小】

1、首先添加重写请求的地址


2、设置替换规则


让我们看下修改后的返回内容


Breakpoints 功能

   上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。
Breakpoints 功能类似我们在 IDE 中设置的断点一样,首先给某个网络请求添加Breakpoints,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求及其返回内容。

需要注意的是:

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

2、当开启Breakpoints后,可能造成其他网络请求无法监听,建议退出App并杀掉App进程,重新进入App。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值