Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。不过,也可以网上找到破解版,将lib原文件中的charles.jar替换就可以随意使用啦~
Charles 主要的功能包括:
支持 SSL 代理。可以截取分析 SSL 的请求。
支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
支持 AJAX 调试。可以自动将 json 或 xml 数据格式化,方便查看。
支持 AMF 调试。可以将 Flash Remoting 或 Flex Remoting 信息格式化,方便查看。
支持重发网络请求,方便后端调试。
支持修改网络请求参数。
支持网络请求的截获并动态修改。
检查 HTML,CSS 和 RSS 内容是否符合 W3C 标准。
Charles下载:官网https://www.charlesproxy.com/,目前最新版是4.1.2,分win、mac以及Linux,亲们可以按需下载。下面以winows64位版本为例:
下载后的镜像文件:
Charles安装:
双击msi文件,傻瓜式点击下一步即可
安装完成后,就可以去你安装路径中找charles.exe试用啦~~~如果想要破解的朋友,可以在http://pan.baidu.com/s/1eSEInya 密码:k843下载Charles.jar,顺便说一句,这个ja包也是要配套charles版本使用的,这里使用的是4.1版。这个文件中有mac、win32/64的版本,按需使用哦~替换Charles根目录下lib中的同名文件,这样打开Charles就不用等10秒啦~
以上只是安装好Charles,如果这个时候打开使用,抓取的包一部分是unknow状态。
Charles配置:
1、将charles设置成系统代理:Proxy->Windows Proxy
需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。
charles主界面:
图中,structure和sequence是两种视图模式:
structure视图将网络请求按访问的域名分类;sequence视图将网络请求按访问的时间排序;
Filter处可以设置过滤关键词,如输入想要过滤的域名,主界面就只显示该域名相关的包;
Request显示请求内容;
Response显示响应内容。
截取移动设备包括APP、微信公众号等的网络封包(以iPhone为例):
Charles上设置:要截取 iPhone 上的网络请求,首先将 Charles 的代理功能打开。在 Charles 的菜单栏上选择 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。
iPhone上设置:“ 设置 ”–>“ 无线局域网 ” 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有“HTTP 代理”一项,我们将其切换成手动,然后在服务器一栏填上 Charles 运行所在的电脑的 IP,以及端口号 8888,如下图:
设置好之后,打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单,点击 “Allow” 即可完成设置。
如果你需要截取分析 SSL 协议相关的内容。那么需要安装 Charles 的 CA 证书。
首先需要在电脑上安装证书。点击 Charles 的顶部菜单,选择 “Help” –> “SSL Proxying” –> “Install Charles Root Certificate”如下图:
弹出安装证书窗口:
至此Charles上设置完成。
如果手机上也需要抓取https的包,那么也需要下载ca证书:
点击 Charles 的顶部菜单,选择 “Help” –> “SSL Proxying” –>“Install Charles Root Certificate on Mobile Device and Remote Browser”,会弹出下图:
在safari中输入“chls.pro/ssl”,搜索出CA证书,弹出如下图:
点安装(这里LZ已经安装过了)后,还需在手机“设置”->“关于本机”->“证书信任设置”中信任该证书:
其次,在手机浏览器中输入http://charlesproxy.com/getssl ,即可打开证书安装的界面,安装完证书后,就可以截取手机上的 Https 通讯内容了。也就是上图中的第一个证书。
然而,Charles 默认并不截取 SSL 的信息,如果你想对截取某个网站上的所有 SSL 网络请求,处理方法有两种:
1、在该请求上右击,选择Enable SSL proxy:
2、选择charles顶部菜单“Proxy”->“SSL Proxying Settings”:
点击“Add”添加host和port:
host:* 表示可以取任何值
port:443
至此截取web以及手机端网络封包的设置基本完成。
注意:如果遇到截包返回乱码、截包“unknow”状态,可能是证书没有安装好,或者SSL没有授权