Charles

Charles (HTTP代理服务器)

HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, responseHTTP headers (包含cookiescaching信息)。

 

主要功能

  • 支持SSL代理。可以截取分析SSL的请求。
  • 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
  • 支持AJAX调试。可以自动将jsonxml数据格式化,方便查看。
  • 支持AMF调试。可以将Flash Remoting Flex Remoting信息格式化,方便查看。
  • 支持重发网络请求,方便后端调试。
  • 支持修改网络请求参数。
  • 支持网络请求的截获并动态修改。
  • 检查HTMLCSSRSS内容是否符合W3C标准。

 

安装Charles的时候要先装好Java环境

 

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

1. charles安装

1.Charles的安装包可以自行去网上下载,下载完成后,双击安装包,会弹出Charles的安装欢迎页,点击next即可,默认是安装到C

 

安装完进行**:

https://www.zzzmode.com/mytools/charles/

 

 

此工具用于生成**后的charles.jar文件

 

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

替换本地charles.jar文件

macOS地址/Applications/Charles.app/Contents/Java/charles.jar

Windows地址:  C:\Program Files\Charles\lib\charles.jar

(注意:生成的jar包只有10分钟的有效期,需要在10分钟内完成**的操作)

 

 

PC端安装证书:

打开charles,选择help–>SSL Proxying–> Install Charles Root Ceriticate,点击安装证书,一直点击下一步完成即可成功安装。如下图所示

Charles

Charles

 

安装完毕启动charles,画面如下:

 

 

charles安装完后会自动设置为系统代理,工具上对代理的开启和关闭时,选择菜单中的 “Proxy” –> “window  Proxy” 来将 Charles 设置成系统代理。如下所示:

 

 

2. web端抓取http及https请求; 配置抓取HTTPS端口

打开软件后,访问下www.baidu.comhttps://hgtest.vehicleplus.net

这里我们会发现,HTTP的数据我们能正常的抓取到,但是HTTPS就不能正常的抓取了(提示unknow),所以下面要解决抓取HTTPS出现的问题。

 

Proxy -> SSL Proxying Settings,设置如下,host*port也为*或者443

 

 

 

设置完一般的接口数据已可正常显示,仍存在的unknown【留待查询解决】

 

 

【如何手动添加受信任证书,非必须步骤,不设置也不影响】

打开运行,手动输入mmc,弹出如下画面,然后点击文件—添加/删除管理单元,选择“证书”,点击添加,在新窗口选择“我的用户账户”点击完成到原窗口后点击确定

 

 

 

然后在在左边窗口的个人那里右键粘贴、在受信任的根证书颁发机构证书右键粘贴,点击确定

 

3. 手机安装证书

Charles设置

Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser,会弹出个提示:(IP为本地电脑IP

Charles

 

手机端设置代理:

选择同本地电脑在同一个局域网内的wifi信号,连接,然后查看该wifi的设置,配置HTTP代理:

 

Charles   

 

然后浏览器输入chls.pro/ssl,会弹出提示,要安装一个东西,需跳转到设置页面,然后安装证书到本地

Charles

 

配置成功后,弹出询问点击“allow”或者“deny”时,误点“deny”,关闭charles重启,手机再次浏览则会重新弹出询问

 

点击allow

charles就能读取到手机端的请求记录:

 

 

 

 

但是IOS的APP 端,打开会提示网络访问不通,需要在“手机设置 -> 通用 -> 关于本机 -> 证书信任设置 中打开信任”,开启后,手机访问就能正常进行了

 

 

查看APP的运行告警功能,charles可查看到接口的数据

左侧区域为接口列表,右侧区域为接口详细数据,上部为header请求部分,下部为body部分

 

 

 

4. 工具介绍:

1.显示模式:

Charles有两种显示模式,stucture 和sequence。支持来回切换

(1)  Structure形式如下图 优点:可以很清晰的看到请求的数据结构,而且是以域名划分请求信息的,可以很清晰的去分析和处理数据

(2)  Sequence形式如下图 优点:可以看到全部请求,这里的结果以数据请求的顺序来显示,最新的请求显示在最下面

structure 适合对单一系列的访问请求从宏观上进行把握,可以快速定位。sequence 适合精确定位内容,因为每条sequence 都有size,status等属性信息,方便快速定位这条结果的价值

方法一:直接过滤域名

  1. 在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我查看的域名地址是:https://zhubangbang.com , 那么只需要在 Filter 栏中填入 zhubangbang.combang,即可过滤含有这些关键字信息的请求(只要hostpath中含有即可)。

 

 

方法二:修改Include的域名和端口

Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了;

 

这个地方设置后如果不用记得取消,不取消就会一直过滤只抓取这个域名下的网页数据,很容易在以后使用时候的忘记解除下次需要查看别的域名时就会一片空白,个人非常不建议这么用,你可以通过焦点域名来规避可能存在的这种问题

方法三:过滤焦点域名

在目标的网络请求上右键,选中focus(此时,该域名已经被设置为一个焦点标记了;);然后点击fillter后面的focused来筛选你的做的focus标记文件;

你设置的焦点域名在”focused Hosts”里面可以查看和管理

结构视图,这种模式下的展现更加人性化;

当你设置某个域名为焦点域名的时候,会把当前域名单独显示在上面,

而其它的非焦点域名,都会在other Hosts里显示;

 

File :导入””导出这个功能在和别人沟通的时候很常用,比如你向第三方工具/类库开发人员求助某个功能,或者有BUG怎么避开;

他们一般会让你提供抓包到时候收到的文件,或者应用场景之类的;

你可以导出你捕捉到的信息,发送给别人(类似PS里的PSD源文件),

别人收到后,在charles里打开就可以看到同样的抓包信息了,方便远程分析和交流;

Edit:

 

 

 

Proxy菜单介绍:

 

 

throttling  setting

模拟手机上2G/3G/4G的速度,查看页面在慢网速的情况下的表现,促进研发优化代码实现

 

同时需要注意你的慢速设置,当你不用的时候请记得关闭它,否则访问速度就是你设置的限制速度

 

SSL Proxying Srtting

这里最常用的设置就是第一个ssl proxying,这里记录了需要捕获哪些ssl的信息;

注意,如果你不在这里设置,虽然你安装了sslcharles证书,你依然无法正常捕获;

 

解决requestresponse信息中的中文乱码问题。

方法一 :修改charles windows版本安装目录下也有一个Charles.ini的配置文件 

原配置文件

 

修改后的配置文件 增加vmarg.3参数,并设置编码格式为UTF-8

方法二 Tools -> Rewrite… -> Rules -> Add –>配置信息 

选中 Request Response

Match 

Name : Content-Type

Value : application/x-zip

Replace 

Name : Content-Type

Value : application/json;charset=UTF-8

选中 Replace All

 

Tool菜单

 

模拟网络环境(Throttle Settings)

在这里选择要模拟的网络环境,选项比Fidder多很多,也可以自定义,最人性的还可以对指定的url进行网络环境摸, 好评...

这里设置完成后通过Proxy-Start Throttling(Ctrl+T)或者常用工具栏按钮来启用或停止;

 

设置为代理服务器,并捕获手机请求(Proxy Settings)

端口号 Port 默认8888,Fiddler一样,省得切换软件的时候,手机还得重新设置wifi代理了;

 

记得启用Enable transtarent HTTP proxying

 

手机上的设置跟Fiddler类似,切换到wifi设置页面,选择高级选项-->代理模式选择手动,代理服务器设置为 Charles 所在设备的ip,端口就是上面设定的8888, 注意: 手机和Charles所在机器需处于同一个wifi网络中;

以上设定完成后,就可以charles中捕获手机请求了,第一次连接的时候charles会弹出确认提示框,选择 allow 就好了,后续可在 proxy -> access control settings 中进行管理
 

注意如果你本身网速快;是限速;如果你网速low,你选个100Mbps的,其实也到不了的;

 

点击proxy中的Throttle settings,打开网络设置页面 

如果测试中只需要只对部分域名的请求进行网络控制的话,勾选only for selected hosts选项,添加hosts

进入添加hosts页面,输入指定的参数,不需要的话填*号,填写完成后点击ok

 

 

 

首先勾选Enable Throttling,在Throttling preset中可以选择工具默认配置的一些网络状况

 

 

不使用工具自带的配置的话可以自己填写各个参数的值

配置参数解析:

bandwidth —— 带宽,即上行、下行数据传输速度

utilisation —— 带宽可用率,大部分modern100%

round-trip latency —— 第一个请求的时延,单位是ms

MTU —— 最大传输单元,即TCP包的最大size,可以更真实模拟TCP层,每次传输的分包情况。

Releability —— 指连接的可靠性。这里指的是10kb的可靠率。用于模拟网络不稳定。

Stability —— 连接稳定性,也会影响带宽可用性。用于模拟移动网络,移动网络连接一般不可靠。

如果不对具体的弱网参数有要求,直接点击ok就可以了

面板上的小乌龟图标也可以开启或者关闭 Throtting

(衍生:弱网测试charles配置是一种方法,ios同时自带了弱网测试,开发者选项打开情况下,设置-开发者选项 > Network Link Conditioner 入口,系统已经内置常见网络配置,也可以增加自定义配置。)

网络环境

/下行带宽(kbps

2G

20/50

3G

330/2000

4G

40000/80000

wifi

33000/40000

2G理论下载速度在15-20K/s左右,3G网络理论下载速度在120K/s-600K/s左右,而4G网络的下载网速在1.5M/s-10M/s不等。不过需要注意的是,以上理论网速都是在实验室排除其他干扰的环境中测试出来,实际使用环境中不能达到理论的速度。以下是详细介绍:

  12G理论网速是150Kbps,折合下载速度15-20K/s2G是第二代手机通信技术规格,以数字语音传输技术为核心。一般定义为无法直接传送如电子邮件、软件等信息;只具有通话和一些如时间日期等传送的手机通信技术规格;

  23G理论网速为1-6Mbps,折合下载速度120K/s-600K/s;是指支持高速数据传输的蜂窝移动通讯技术。3G服务能够同时传送声音及数据信息,速率一般在几百kbps以上;

  34G理论网速为10-100Mbps,折合下载速度1.5M/s-10M/s;是集3GWLAN于一体,并能够快速传输数据、高质量、音频、视频和图像等。4G能够以100Mbps以上的速度下载,能够满足几乎所有用户对于无线服务的要求;

  4、需要注意的是以上都是理论网速和宽带提供的网速不同,移动蜂窝网络还会受到使用环境人流量、环境是否开阔,基站台布局的密度影响。