美文网首页iOS开发技巧iOS开发电脑相关
抓包工具Charles的使用心得

抓包工具Charles的使用心得

作者: FITZ9311 | 来源:发表于2016-03-26 22:59 被阅读173910次

    简介

    Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。开发iOS都在Mac系统上吧,安装Charles的时候要先装好Java环境。这么好的软件不是免费的,官网要好几十刀呢,我这里有一个Mac上的破解版,点击这里下载,当然不是最新版的。如果你想体验最新版,Charles是提供试用的。

    Charles主要功能

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

    开始抓包

    先看一下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 ,点击安装即可。然后你就可以告别那烦人的乱码,可以愉快地抓包了。如果这时候你还是抓不了的话,检查一下Proxy-->SSL Proxying Settings是否设置OK,设置参考下图:

    抓取真机上的包

    抓取真机上的数据非常的简单,首先使手机和电脑在一个局域网内,不一定非要是一个ip段,只要是同一个路由器下就可以了。按照上面说的把证书安装好,然后找到电脑的IP,你可以选择在终端输入ifconfig en0来获取,也可以选择打开网络偏好设置来查看。

    终端获取IP 网络偏好设置查看IP

    接下来打开Charles的代理设置:Proxy->Proxy Settings,设置一下端口号,默认的是8888,这个只要不和其他程序的冲突即可,并且勾选Enable transparent HTTP proxying

    端口号设置

    在手机上连接上和电脑在同一局域网的网络上设置HTTP代理。端口号就是刚刚在Charles上设置的那个。



    然后在手机上随便打开一个网址,这是Charles会弹出一个框让你确认是否代理,点击allow就可以了,然后你就会在Charles上发现手机上的请求了。


    过滤

    在 Charles 的菜单栏选择 Proxy->Recording Settings,然后选择 Include 栏,选择Add,然后填入需要监控的协议,主机地址,端口号,这样就达到了过滤的目的。如下图:


    还有一种方法就是在一个网址上右击,选择Focus,然后其他的请求就会被放到一个叫Other Host的文件夹里面,这样也达到了过滤的目的。

    断点

    断点的功能搞开发不会不知道,在Charles发起一个请求的时候,我们是可以给某个请求打一个断点的,然后来观察或者修改请求或者返回的内容,但是在这过程中药注意请求的超时时间问题。要针对某一个请求设置断点,只需要在这个请求网址右击选择Breakpoints就可以断点某一个请求了。

    模拟网速慢

    有时候在开发的时候我们想要模拟一下网络慢的情况,这时候Charles他是可以帮助到你的,在Proxy->Throttle Setting,然后选择Enable Throttling,在Throttle Preset下选择网络类型即可,具体设置你可以自行拿捏。

    请求重定向

    请求重定向的作用是什么呢?开发中一般都是测试环境,如果我们想对比一下和线上版本的区别的话,可以讲测试的请求重定向到正式环境下。在选择 Tools->`Map Remote下:

    内容替换

    有时候我们会测一下请求的参数不同会带来不同的返回结果以测试是否达到业务需求,或者需要不同的返回结果来验证我们对数据的处理是否正确,这时候需要后台的同事配合,但是有了Charles,我们可以自己把控接口返回来的内容,比如数据的空与否,数据的长短等等。在Tools->Rewrite Settings下:

    其他

    Charles还有一下其他的妙用。慢慢的去发掘吧!

    相关文章

      网友评论

      • b96d42af4726:很全面,支持!!
      • 4a6560366463:大佬,求破解版的Charles
        北铭:破解地址 https://www.zzzmode.com/mytools/charles/
        614f2c2863da:@枕上白发_ef2c 我有
      • catherine007:厉害,学习了
      • ImTudou:不错哦
      • 9bd74219c762:写的挺不错的,已经收藏了。

        源码解析:http://suo.im/1FKU2k


        0378c9b91af0:源码解析还不错

        加油!
      • 陌上北辰:抓到的post,能使用么,如何使用?
      • 5b1270f21c00:iPhone导入证书后显示很多https unknown 和 乱码,知道怎么解决吗
      • 星好唯柔:我如果想抓取widows上虚拟机的包,应该怎么设置呢
      • 5ad4e8a52596:为啥我浏览器的总是抓不到?
      • loghm:你好,使用charles时候,我的网络会变得很慢,但是我没有打开模拟慢速网路的功能,请问您有遇到类似的情况吗?
      • 12df075c3dcc:这个写的很赞,有没有windows版的呢?
      • 奔跑的鸿:请教一下,那个rewrite功能如何使用?我想事先改掉某个值,然后手机用抓包,抓取的数据是我改后的值,可否再详细讲解rewrite?
        FITZ9311:@奔跑的鸿 是的
        奔跑的鸿:@RD张小飞 你是说用map local 可以实现手机刷新数据后获取的是我本地改掉的数据,是吗?
        FITZ9311:@奔跑的鸿 推荐更加方便的是Map Local
      • 06d59c95c26e:好文,但楼主云盘分享的破解文件是旧版本的,大家在 http://charles.iiilab.com/ 可以下到最新版的破解文件
      • 风雪桥客:楼主,问下iphone 6设备,访问http://charlesproxy.com/getssl,提示:Charles SSL CA Certificate installation Your browser should download and offer to install the Charles SSL CA Certificate in just a moment.If this doesn’t work, please check that your OS, or browser, is configured to use Charles as its proxy.
        不能安装怎么解决呢?
        FITZ9311:新版本装证书在help-->SSL Proxying下面就有安装证书的提示哈
      • 某非著名程序员:楼主,能请教下,能根据xml某个结点过滤出xml吗
      • 4316a9a9ad20:请问 有人 遇到过 https的数据包 展开后里面显示 unknown 的吗?到底为什么?证书导入了,抓的安卓的数据包
        夕若若:我在SSL Proxy设置里enable打开,并add,填入*和*,可以解决很多网站显示unknow的问题
        叛逆的青春不回头:Android抓https的包 http://www.jianshu.com/p/4d134386f5da,这个方法不知道能帮上忙不
      • Yokooll:你好,抓完包后从哪分析请求参数
        Yokooll:@RD张小飞 好的,谢谢
        FITZ9311:@Yokooll Request,Reponse等这些地方分析
      • 草丛里的叶子青:想问下,mac上的Charles能对安卓手机进行抓包吗?
        叛逆的青春不回头:Android抓https 可以试试这个方法 http://www.jianshu.com/p/4d134386f5da
        草丛里的叶子青:@张飞_ 搞定了。安卓的https证书可以在Charles菜单-help-SSL Proxying-Install Charles Root ...Browser里找到。
        FITZ9311:@草丛里的叶子青 能
      • RoboyCore:获取不到request和response怎么办
        9146a69e7d04:@矮矮的人儿 找到了 , 在菜单栏里...
        9146a69e7d04:用的4.1.2的版本, 没有 request 和 response 选项, 右击也出现不了 修改请求的Eidt选项.... 郁闷了
        FITZ9311:@RoboyCore 怎么会?
      • e47f157368f9:您好 我的按照您之前的方法下了证书之后 抓到的HTTPS的接口没有了小锁的样式 但是 具体的api都是unknown
        XRD_太原:想尽各种办法还是不行,和你们相同的问题,请问你们解决了吗?
        ROB_YONG:@e47f157368f9 相同问题 +1
        审判spp:@e47f157368f9 我也是,请问解决没
      • 某非著名程序员:楼主,我想只有xml,过滤掉二进制与图片,怎么整?
        FITZ9311:有待研究:stuck_out_tongue_winking_eye:
        某非著名程序员:@260d120058f7 或者说,可以过滤掉xml中的某个属性值吗
      • ae380a7efcf8:我的mac装的Charles不能抓包,点击打开,浏览网站或者进行其他网络请求,没有抓包记录……
      • Mr_LiTong:http://www.sdifenzhou.com/charles4.html 这里有Charles 4.0的破解版
      • FanChason:挺不错
      • 猪猪侠在这z:麻烦问你一下,你那个手机的描述文件是怎么下载下来的,我每次用iphone的safari打开http://www.charlesproxy.com/getssl/ ,显示的界面与电脑上无异,根本看不见描述文件的身影(方便的话能给个描述文件我吗?)
        猪猪侠在这z:@文刀洋 链接应该没问题,官网上是这么说的
        L了个Y:@猪猪侠在这 是不是因为你手机是iOS10的原因
        L了个Y:@猪猪侠在这 这链接不能用楼主也是误导人
      • Rainbow冰糖葫芦娃:很赞 谢谢博主
      • leftwater:这个介绍的 很赞
      • KChuck:好文 Get
      • plantseeds:我想抓取qq消息,但是没有发现截获记录!如果发图片消息就有,为啥呢
        FredGan:@lg_pursuing QQ这种即时聊天的消息都是通过TCP长连接的自定义协议,用的不是HTTP/S协议。图片获取是HTTP/S协议。charles只能抓HTTP/S包
      • BLBL:我想问下我证书已经导入,可是还是会出现https乱码,这个请问知道是怎么回事吗?
        审判spp:https的小锁没了,但还是乱码
        bikerr:同下载证书之后,还是乱码 window7 系统 求解决办法
        817c02df5b49:@BLBL 能告诉我你是怎么下载CA证书的吗?

      本文标题:抓包工具Charles的使用心得

      本文链接:https://www.haomeiwen.com/subject/ztnllttx.html