HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。
主要功能
安装Charles的时候要先装好Java环境
charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 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安装完后会自动设置为系统代理,工具上对代理的开启和关闭时,选择菜单中的 “Proxy” –> “window Proxy” 来将 Charles 设置成系统代理。如下所示:
打开软件后,访问下www.baidu.com及https://hgtest.vehicleplus.net
这里我们会发现,HTTP
的数据我们能正常的抓取到,但是HTTPS
就不能正常的抓取了(提示unknow
),所以下面要解决抓取HTTPS
出现的问题。
Proxy -> SSL Proxying Settings,设置如下,host为*,port也为*或者443
设置完一般的接口数据已可正常显示,仍存在的unknown【留待查询解决】
【如何手动添加受信任证书,非必须步骤,不设置也不影响】
打开运行,手动输入mmc,弹出如下画面,然后点击文件—添加/删除管理单元,选择“证书”,点击添加,在新窗口选择“我的用户账户”点击完成到原窗口后点击确定
然后在在左边窗口的“个人”那里右键粘贴、在“受信任的根证书颁发机构—证书”右键粘贴,点击确定
Charles设置
Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser,会弹出个提示:(IP为本地电脑IP)
手机端设置代理:
选择同本地电脑在同一个局域网内的wifi信号,连接,然后查看该wifi的设置,配置HTTP代理:
然后浏览器输入chls.pro/ssl,会弹出提示,要安装一个东西,需跳转到设置页面,然后安装证书到本地
配置成功后,弹出询问点击“allow”或者“deny”时,误点“deny”,关闭charles重启,手机再次浏览则会重新弹出询问
点击allow
charles就能读取到手机端的请求记录:
但是IOS的APP 端,打开会提示网络访问不通,需要在“手机设置 -> 通用 -> 关于本机 -> 证书信任设置 中打开信任”,开启后,手机访问就能正常进行了
查看APP的运行告警功能,charles可查看到接口的数据
左侧区域为接口列表,右侧区域为接口详细数据,上部为header请求部分,下部为body部分
1.显示模式:
Charles有两种显示模式,stucture 和sequence。支持来回切换
(1) Structure形式如下图 优点:可以很清晰的看到请求的数据结构,而且是以域名划分请求信息的,可以很清晰的去分析和处理数据
(2) Sequence形式如下图 优点:可以看到全部请求,这里的结果以数据请求的顺序来显示,最新的请求显示在最下面
structure 适合对单一系列的访问请求从宏观上进行把握,可以快速定位。sequence 适合精确定位内容,因为每条sequence 都有size,status等属性信息,方便快速定位这条结果的价值
方法一:直接过滤域名;
方法二:修改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的信息;
注意,如果你不在这里设置,虽然你安装了ssl的charles证书,你依然无法正常捕获;
解决request和response信息中的中文乱码问题。
方法一 :修改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 —— 带宽可用率,大部分modern是100%
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不等。不过需要注意的是,以上理论网速都是在实验室排除其他干扰的环境中测试出来,实际使用环境中不能达到理论的速度。以下是详细介绍:
1、2G理论网速是150Kbps,折合下载速度15-20K/s;2G是第二代手机通信技术规格,以数字语音传输技术为核心。一般定义为无法直接传送如电子邮件、软件等信息;只具有通话和一些如时间日期等传送的手机通信技术规格;
2、3G理论网速为1-6Mbps,折合下载速度120K/s-600K/s;是指支持高速数据传输的蜂窝移动通讯技术。3G服务能够同时传送声音及数据信息,速率一般在几百kbps以上;
3、4G理论网速为10-100Mbps,折合下载速度1.5M/s-10M/s;是集3G与WLAN于一体,并能够快速传输数据、高质量、音频、视频和图像等。4G能够以100Mbps以上的速度下载,能够满足几乎所有用户对于无线服务的要求;
4、需要注意的是以上都是理论网速和宽带提供的网速不同,移动蜂窝网络还会受到使用环境人流量、环境是否开阔,基站台布局的密度影响。