IT 工具 Charles抓包

【IT 工具 Charles抓包】

简介

Charles是什么?

为什么是Charles?

为什么要用抓包工具?大家在平常移动App调试测试中是如何进行抓包的?

在我们做开发与测试的过程中,总免不了碰到网络问题,特别是重后台的产品,这个时候我们往往的处理方法是抓个网络包,看看到底应用发送和接收了些什么鬼.....这个时候Charles上场了;Charles是一款屌的不行的截包工具,好用到没朋友。

那么Charles屌在哪里呢???主要特点如下:

1.支持SSL代理,可以截取分析SSL的请求

2.支持流量控制。可以模拟慢速网络(2G,3G),以及等待时间较长的请求。

3.支持AJAX调试。可以自动把JSON或者XML数据格式化,方便查看。

4.支持重发网络请求,方便后端调试。

5.支持修改网络请求参数。

6.支持网络请求的截取和动态修改。

7.最重要的一个优点就是有不同平台的版本(Mac,Windows、Linux)即学一个打遍天下。

Charles基本工作原理

charles是通过网络代理来进行抓包的,下面先了解一下http代理的原理:

1.普通http请求过程

一般情况下的HTTP请求与响应


2.加入了Charles的HTTP代理的请求与响应过程

中间的代理服务器就是Charles


使用

Charles的下载与安装过程

1.官网下载地址:

http://www.charlesproxy.com/download/

2.Mac下安装:

是一个安装包是一个dmg后缀的文件。打开后将Charles拖到Application目录下即完成安装。

在Mac下你打开Launchpad即可看到一个像花瓶一样的Charles程序图标


3.Windows下安装:

下载后直接双击根据安装向导一步一步安装即可

Http抓包操作步骤

Step 1:开启Charleshttp代理;
Step 2:手机端Wifi添加代理;
Step 3:开启Charles录制功能;
Step 4:启动应用开始抓包;
Step 5:分析抓取的数据包。

Step 1: 开启Charleshttp代理

设置Charles代理

第一次启动默认会开启本机的系统代理,因为我们只是监控移动端的所以将此选去除(去掉选项前面的小钩)


激活http代理功能

Step 2: 手机端Wifi添加代理

Android手机:

  1. 在手机端打开你的Wifi设置然后长按已经连接的Wifi在弹出来的菜单中选择【修改网络】

  2. 沟上[显示高级]选项--【手动】

  3. 输入代理服务器的IP与端口
    IP即安装了Charles的电脑IP地址,端口就是前面一步设置Charles时所设置的端口。

注意:手机所连接Wifi要与电脑在同一个LAN(局域网)

Genymotion:

Charles默认是不监听Genymotion模拟器的网络动态的。

需要进行以下设置:

  1. 打开你的Genymotion模拟器
  2. 设置 -> Wifi -> 长按你的当前的网络连接
  3. 选择 “修改网络”
  4. 勾选 “显示高级选项”
  5. 选择 “代理设置 -> 手动”
  6. 设置你的代理服务器为: 10.0.3.2 (这是Genymotion为本机准备的特殊端口)
  7. 把端口设置为: 8888
  8. 保存
  9. 打开飞行模式再关闭飞行模式,方可起效

AVD:

Android自带模拟器

  1. 查看本机IP(Help -> Local IP Address)
    注意:必须从这里看,不能直接查本机IP
    .

  2. 打开模拟器的代理设定界面,把代理IP和端口设置好

    .

iOS手机:

  1. 点击你所连接的wifi
  2. 输入代理服务器的IP与端口
    IP即安装了Charles的电脑IP地址,端口就是前面一步设置Charles时所设置的端口。

注意:手机所连接Wifi要与电脑在同一个LAN(局域网)


Step 3:开启Charles录制功能

  1. 当手机连接上代理后Charles会弹出相应的提示框,点击Allow即可。(有时候不会有弹窗)
  2. 点击工具栏上的开始录制按钮,即启动了Charles的抓包功能了。


Step 4:启动应用开始抓包

  1. 在手机上操作相应的App进行抓包。
  2. 在Charles的主界面上就可看到相应的请求内容。


Step 5:分析抓取的数据包

  1. Charles 主要提供两种查看封包的视图,分别名为 “Structure”和 “Sequence”:
    Structure 视图将网络请求按访问的域名分类;
    Sequence 视图将网络请求按访问的时间排序。

  2. 大家可以根据具体的需要在这两种视图之前来回切换。请求多了有些时候会看不过来,Charles提供了一个简单的Filter功能,可以输入关键字来快速筛选出URL 中带指定关键字的网络请求。

  3. 对于某一个具体的网络请求,你可以查看其详细的请求内容和响应内容。如果请求内容是POST 的表单,Charles 会自动帮你将表单进行分项显示。如果响应内容是 JSON 格式的,那么 Charles可以自动帮你将JSON 内容格式化,方便你查看。如果响应内容是图片,那么 Charles可以显示出图片的预览。

Https抓包操作步骤

Step 1:了解一下https的基本原理;
Step 2:在手机端安装SSL证书;
Step 3:激活Charles的SSL代理;
Step 4:将指定的URL请求开启SSL代理功能
Step 5:其他步骤与Http抓包相同

Step 1:了解一下https的基本原理;

HTTPS其实是有两部分组成:HTTP+ SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图解说


详细说明,请参考:

http://blog.csdn.net/clh604/article/details/22179907

Step 2:在手机端安装SSL证书

  1. 将证书文件从Charles导出

    .
  2. 然后通过adb或者其他工具将其复制到手机的SD卡中。

  3. 将证书文件导入Android手机
    在手机的设置界面找到【安全】---》【从内部存储设备或SD卡安装】----》选择SD卡上的证书---》弹出设置证书名对话框,输入一个易记的名字,然后根据提示进行导入即可

    .
  1. 将证书文件导入iOS手机
    1.在iPhone手机上打开Safari浏览器,然后在地址栏中输入www.charlesproxy.com/getssl
    2.稍后会弹出安装描述文件提示,点击右上角的【安装】按钮进行证书安装即可
    .

Step 3:激活Charles的SSL代理

1.选择【Proxy】--->【SSL Proxying Settings..】设置。
2.在弹出来的对话框中沟选【Enable SSL Proxying】


Step 4:将指定的URL请求开启SSL代理功能

1.选择抓取的https链接,然后右键选择【Enable SSL Proxying】。
2.如果不激活SSL代理,所有https请求都是乱码无法查看。


再次请求这个Https时,其请求内容已经一目了然了


通过映射修改返回报文

Charles中有两种修改映射的方法Map LocalMap Remote,两种方法各有不同的用处。

本地映射Map Local

其实这种方法很好理解,就是修改映射方式让请求去读取我们本地的文件并返回,具体操作如下:

右键需要修改的URL-->点击Map Local


点Choose,选择本地json文件,下次请求返回报文就会变成选择的json文件

设置完映射之后每次该请求都会从设置的本地文件中读取并返回数据,我们可以随心所欲的修改保存的报文达到调试接口的目的。
另外如果在开发初期,客户端和服务器端已经定义好了接口,但是服务器端还没有部署好环境。我们也可以通过这个方法把定义好的报文保存到本地,通过修改映射的方式来进行初步开发。

取消Map Local

Tools-->Map Local


可以勾选Enable Map Local,全局控制是否映射;
也可点Add和Remove,添加和去除需要映射的URL;


远程映射Map Remote

修改远程映射是通过修改请求的HOST来实现的,可以将请求切换到不同的环境(例如当前的包是正式环境,你想看看测试环境的修改有没有生效,可以不用再打一个测试环境的包,通过修改远程映射快速实现。也省的改手机的HOST的了)。

选中要修改的请求-->右键-->Map Remote 在Map To 栏中填写要映射到的地址的一些参数。


通过断点修改请求与响应的内容

除了修改映射的方法,通过设置断点也可以实现想要的效果。和我们在IDE上设置断点一样,在断点处会进入调试模式,请求会暂时中断,这是我们可以进行一些自定义的操作。

Step 1:设置Charless断点。
Step 2:对指定的URL开启断点功能。
Step 3:编辑请求与响应的内容。

Step 1:设置Charless断点

选择【Breakpoint Settings…】--->勾选【Enable Breakpoints】来激活断点功能


Step 2:对指定的URL开启断点功能

1.选择一个URL链接-à右键开启菜单---》选择【Breakpoints】即可开启此请求的断点。
2.这样Charles会遇到此请求时会弹出中断对话框


Step 3:编辑请求与响应的内容

a.编辑请求内容

在中断对话框中,用户可以点击Edit Request来编辑请求的内容,编辑完成后然后点击【Execute】发出去这个请求给服务端


b.编辑服务器响应的内容

在【Edit Request】对话中点击【Execute】发出请求后,服务端返回来数据后,用户点击【Edit Response】可对响应内容进行编辑完成后然后点击【Execute】发出去这个数据给客户端


总结

上面的方法可以用来修改一般的网络请求,但如果数据做了加密处理看不到明文那用处就不大了。
需要注意一点:通过断点的方式会存在一定的问题。数据被拦截后,客户端的请求超时时长是不会停止计算的,如果没在设置的超时时间内返回数据本次请求也就按失败处理了。

弱网模拟

1.菜单中选择【Proxy】--->【Throttle Settings..】-à激活【Enable Throttling】。

2.在Throttle Configuration设置弱网的参数。

3.以下是各种网制式的速率参考文档:

移动网络制式与网速的参考文档

弱网模拟设置

引用:

★★★移动应用抓包调试利器Charles
Android开发利器 - Charles + Genymotion 调试网络应用程序
android emulator + charles抓包
Charles--修改返回报文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345