您的位置:首页 > 理论基础 > 计算机网络

Charles让你更方便的在Mac下抓取移动端http/https数据包(http://zhiqiangbuxi.cn/?p=281)

2017-04-27 19:30 381 查看



一、Charles是什么?

Charles是在Mac下常用的截取网络封包的工具(windows版本也有这里我就不介绍了方法都是一样的),我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析,尤其是调试移动端的数据包。
Charles是收费软件,可以免费试用30天。破解 => 百度和Google就好。
截止这篇文章Charles最新版是v3.11.2,所以我也以这个版本来说明使用教程,下载地址:http://www.charlesproxy.com/download/

二、在PC上抓数据包

    1.抓取http数据包

第一步:启动Charles后,第一次请求你给它设置系统代理的权限。你可以输入登录密码授予Charles该权限。你也可以忽略该请求,然后在需要将Charles设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy”来将Charles设置成系统代理。如下所示:



第二步(非必须):有的时候可能会出现Charles设置的代理端口被占用的情况,所以Charles支持设置动态端口,选择菜单中的 “Proxy” -> “Proxy settting”来设置动态端口。如下所示:



第三:你就可以看到源源不断的网络请求出现在Charles的界面中。



    2.抓取https数据包

第一步:我们知道相比https相比http更安全因为其才用了ssl加密,如果没有得到证书信任,抓取的数据是乱码的,如下图百度首页我们抓取的数据是乱码:



第二步:导入证书,Charles提供了ssl证书让我们在客户端抓取https数据,只需以下几步简单的操作即可:选择菜单中的
“Help” -> SSL ProxyING” -> “install Charles…..”来将Charles设置成系统代理。如下所示:



之后会弹出Mac系统的密钥窗口,选择”信任”,然后输入mac的密码退出,这样证书导入完毕。



第三步:添加host和443端口
选择菜单中的 “Proxy” -> “SSL Proxy setting”如下图,添加一个空的Location,Charles就会抓取所有的https请求。最后点击确认就能抓取https的请求了,并能够成功解析https的数据包,如下图所示:



    3.过滤网络请求,截取请求、编辑请求并重新发起
    通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。在Charles的菜单栏选择”Proxy”->”Recording
Settings”,然后选择Include栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示我们只截取百度的请求:



    4.截取请求、编辑请求并重新发起这个在Charels也能轻松实现,以截取新浪微博的首页面为主如图所示:



    然后当我再次刷新微博首页面时浏览器会持续请求,然后微博的请求会被截断并跳转到Charles的窗口来,如下图:



    在这个界面我们就可以修改请求信息,header/cookie都可以修改然后点击Execute重新发起修改后的请求。注意数据修改后记得取消断点,要不然截取的页面将无法访问。
以上便是Charles在Mac上使用,对于开发者来说极为方便,当然更方便的是调试手机的http/https请求,所以下面会说一下如何用charles抓取手机上的请求。

三、charles在手机端上抓数据包(需要保证你的手机和Mac在同一网段,即可,简单点连同一个wifi就可以了。)

    1、配置手机端的http代理

    第一步:在mac的命令行下查看本机ip,如下截图:



    第二步,配置手机的ip代理,iPhone的 “设置”->“无线局域网“中,可以看到当前连接的wifi名,通过点击右边的详情键,可以看到当前连接上的wifi的详细信息,包括IP地址,子网掩码等信息。在其最底部有“HTTP代理”一项,我们将其切换成手动,然后填上Charles运行所在的电脑的IP,以及charles
proxy setting设置的端口,如下图所示:



bb53

    第三步,到这里配置已经完成,就这么简单,然后我们可以访问微博客户端(之前抓取朋友圈的红包照片也是如此操作),我们清晰的可以看到抓取的数据截图如下:



    2、抓取手机端的https数据包
    之前我们已经尝试了在PC端抓取https数据包,那么在手机上抓取数据包原理也是如此,也很简单只需要在按照上面条件配置好手机端的http代理后,然后访问http://www.charlesproxy.com/getssl
然后会下载一个ssl证书到手机上,点击确认之后就可以抓https的数据包了,截图如下成功抓取手机端访问百度的首页面数据,其他数据也是如此抓取:



    3、模拟慢速网络
    在做iPhone开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles对此需求提供了很好的支持。在Charles的菜单上,选择”Proxy”->”Throttle
Setting”项,在之后弹出的对话框中,我们可以勾选上“Enable Throttling”,并且可以设置Throttle Preset的类型。如下图所示:



注意:在PC上退出charles后手机端需要停用http代理否则手机无法正常上网。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  charles 抓包 工具