下载地址
注意:首先需要下载java的运行环境支持(一般用burp的人肯定也都有装java环境)。装好java环境后,可以直接去百度搜索并下载charles的破解版,下载到破解版之后,里面一般会有注册的jar文件,然后注册后就可以永久使用了(ps:不注册的话,每次使用30分钟,工具就会自动关闭)。
Charles for Mac OS X (uses Apple Java 6)
电脑浏览器抓包
下面是pc端的抓包使用情况 Charles支持抓去http、https协议的请求,不支持socket。
先看一下Charles的庐山真面目吧!
接下来要把电脑设置为代理
这样你会发现,你通过浏览器请求的网址都会出现在这里,iOS模拟器的所有的网络请求也会出现在这里。点击某一个网址后,你会发现右边会出现这个网址请求的大概信息,点击具体的请求后会出现request和response等信息。
如果你发现返回的是乱码,首先看是在http请求还是https请求,如果是http请求,那么应该就是返回来的中文乱码,解决方案是找到该软件显示包内容,Contents目录下的info.plist,打开文件找到vmoption,添加-Dfile.encoding=UTF-8即可。 如果是https请求出现的乱码,如下图这种情况 这时候你就需要安装Charles的CA证书了,首先到去 http://www.charlesproxy.com/ssl.zip 下载CA证书文件。双击crt文件,选择总是信任就可以了,当然如果要抓取iPhone设备上的HTTPS请求,需要在iPhone上也安装一个证书,在手机浏览器输入这个网址:http://charlesproxy.com/getssl ,点击安装即可。然后你就可以告别那烦人的乱码,可以愉快地抓包了。
手机设置代理
1、去自己电脑的系统偏好设置-》网络-》选中现在连着的网(大部分人应该都是WiFi吧)可以查到自己这个电脑在现在这个wifi里的IP地址,比如我现在这个就是192.168.0.105(建议最好用私人网络,用公司网络的话可能会有限制会出现没反应的问题)。
2、然后找到自己手机也连着这个同名的wifi,然后选中右边的蓝色 i 。
3、然后进入到了这个无线局域网的高级设置页面。进去之后拉到最下方,找到HTTP代理字样。然后选中手动代理,填写自己电脑查到的ip地址,然后把端口调8888,最后点击左上角返回。返回值后系统会自动设置代理重新连接。这时候你的手机上网的过程中就要经过你的电脑了。刚用手机打开一个联网的程序,你的电脑上应该会显示一个弹窗问你【allow】还是【deny】,点击allow。之后手机发出的每一个请求都会被拦截出痕迹。
抓取http包
1、打开Charles程序
2、查看Mac电脑的IP地址,如192.168.0.104
3、打开iOS设置,进入当前wifi连接,设置HTTP代理Group,将服务器填为上一步中获得的IP,即192.168.0.104,端口填8888
4、iOS设备打开你要抓包的app进行网络操作
5、Charles弹出确认框,点击Allow按钮即可
抓取https包
1、下载Charles证书。解压后导入到iOS设备中(将crt文件作为邮件附件发给自己,再在iOS设备中点击附件即可安装;也可上传至dropbox之类的网盘,通过safari下载安装)
2、在Charles的工具栏上点击设置按钮,选择Proxy Settings…
3、切换到SSL选项卡,选中Enable SSL Proxying,别急,选完先别关掉,还有下一步
4、这 一步跟Fiddler不同,Fiddler安装证书后就可以抓HTTPS网址的包了,Charles则麻烦一些,需要在上一步的SSL选项卡的 Locations表单填写要抓包的域名和端口,点击Add按钮,在弹出的表单中Host填写域名,比如填api.instagram.com,Port 填443
接下来就跟HTTP抓包一样了。
上文中的一些操作,其实是有点出入的(HTTPS)抓包 : 1、如果没有设置ssl的话,那么你看到的ssl的接口中,会有一个报错:SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations,这个时候,在左侧的域名上点右键:enable ssl,就OK了。(其实就是上面的第4部,不过这个操作是简化操作,上面的第4步太麻烦了)。 2、如果这样还是不能抓包,那么官方会有一个说明。
更改请求和返回的内容
说明:charles有一个breakpoints功能,可以截断、修改客户端的request、repsponse请求。如在charles返回repsponse请求时,我们可以修改response,从而修改返回给客户端的内容。 eg. 我们要修改返回给客户端的 http://www.charlesproxy.com/ 中的Charles is an HTTP proxy,修改为HaloCoolnull。
具体: 1、 客户端先访问 http://www.charlesproxy.com/ 看下,可以看到charles抓取了一大堆数据,ctrl+f查找看下我们需要的Charles is an HTTP proxy这段文字,在哪个请求中。
可以看到是在这个 http://www.charlesproxy.com/ 请求中出现的。
2、在 http://www.charlesproxy.com/ 这条请求上右键,选择breakpoints。这样,当我们再访问 http://www.charlesproxy.com/ 这个站点时,charles分别会在这个请求的request、response停留,除非我们excute继续。
3、再访问 http://www.charlesproxy.com/ ,可以看到IE在等待响应 这里画箭头的地方可以看到Edit request修改request请求。我们这里只要修改response,因此直接点击excute继续下去。
4、 修改response 选择Edit Response中的html,将Charles is an HTTP proxy修改为HaloCoolnull。
*效果:*可以看到已经修改成功。
附录:第2步中除了可以在选择的url右键设置breakpoints外,还可以通过proxy | Breakpoints设置更加详细的断点参数,如只breakpoints response请求。