charles 抓包,断点和修改请求响应报文 以及Fiddler抓取请求

1.抓取移动设备发送的http请求

1、先将移动设备连接到Charles客户端。首先在电脑中输入cmd打开命令行窗口,输入ipconfig查看本机连接无线网络的IP地址,这个地址作为移动设备连接Charles客户端的代理地址,

2、打开Charles客户端,点击Proxy->Proxy Settings菜单,可以设置移动设备连接到Charles的端口(8888),这样移动设备代理配置需要的ip地址和端口号都有了。

3、打开手机wifi,设置所连接的wifi的代理网络;wifi代理设置为手动,代理的服务器ip填写上一步骤中查看到的电脑ip,端口填写上一步骤提到的charles的服务端口:

注意:移动设备配置之后,第一次通过手机访问手机中的发送请求时,Charles会弹出提示框,提示有设备尝试连接到Charles,是否允许,如果不允许的话,手机发送请求失败,点击Allow允许,这样这个设备的IP地址就会添加到允许列表中,如果错误点击了Deny可以重启Charles会再此提示,或者通过Proxy->Access Control Settings手动添加地址,如果不想每个设备连接Charles都要点击允许的话,可以添加0.0.0.0/0允许所有设备连接到Charles。

4、Charles是通过将自己设置成代理服务器来完成抓包的,勾选系统代理后,本地系统(如果通过浏览器发送请求)发送出去的请求都能被截取下来。因此,如果想只抓取手机APP发送的请求的话,可以不勾选WindowsProxy选项,这样在测试时就不会被本机Http请求所干扰。


5、如果想要抓取浏览器发送的请求包,勾选WindowsProxy选项之后还是抓取失败,可能是浏览器没有设置成使用系统的代理服务器,只要设置成使用系统的代理服务器,或者将浏览器的代理服务器设置成127.0.0.1:8888也可以成功。

1.1.12.启动手机,打开软件,就可以进行联网抓包测试

Charles提供两种查看封包的页签,一个是Structure(结构),另一个是Sequence(序列),Structure用来将访问请求按访问的域名分类,Sequence用来将请求按访问的时间排序。任何程序都可以在Charles中的Structure窗口中看到访问的域名。

1.1.13.过滤不必要的网络包(过滤请求)

在抓取手机发送的请求时,有许多请求包是对图片等不需要关注的资源的请求,我们只想对指定目录服务器上发送的请求进行抓取,这时候就可以通过过滤网络包的方式实现。有两种实现方式:

1)选择Proxy->Recording Settings菜单,然后在include栏添加需要抓取包的指定服务器请求协议、地址、端口号,也可以在exclude栏添加不抓取包的地址。

在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://blog.csdn.net, 那么只需要在 Filter 栏中填入 csdn 即可。

Charles抓包详解


Filter : 过滤,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求

Overview : 查看这次请求的详细内容,例如耗时详细列车了请求开始时间、结束时间,响应开始时间、结束时间,总耗时、DNS耗时、网络延时等。

对于Size也详细列出了请求头大小、响应头大小、压缩比例等内容。 

URL:进行网络请求的链接;

Status:当前状态,complete表示请求完成;

Responce Code:返回码。不同的接口,不同的请求结果,返回码都不同;

Protocol:使用的协议;

Method:请求方式,如GET请求,POST请求等;

Kept Alive:判断当前是否正在链接(活跃);

Content-Type:发送的内容类型,如这里用的是XML文本,以UTF8的方式发送;

Client Address:客户端的IP地址;

Remote Address:远程服务器的IP;

Timing: 

Request Start Time:请求开始的时间;

Request End Time:请求结束的时间;

Response Start Time:返回开始的时间;

Response End Time : 返回结束的时间;

Duration : 总时间;

Size: 

Request Header :请求的头部大小;

Response Header:返回的头部大小;

Request : 请求发送的大小;

Response:返回数据的大小;

Total:所有数据大小;

Request Compression : 请求压缩;

Response Compression : 返回压缩;

Request : 查看请求内容(底下的Headers,Query String,Cookies,Raw。)

Headers:发送请求的头部信息;

Query String : 发送参数列表;

Cookies: 浏览器缓存;

Raw:发送的原生数据,包括了头部和参数;

Reponse : 查看响应内容

Headers:是返回的头部信息;

Text:返回信息(除去头部)后的文本;

Hex:返回信息的16进制表示;

XML:我返回的数据是XML。如果你返回的是JSON,这里就会显示JSON;

XML Text:如果你返回JSON,这里会显示JSON Text;

Raw:返回的所有原生数据,包括头部;

Summary: 查看发送数据的一些简要信息(主机,状态码,数据的类型,header和body大下,加载时间,总时间)

Chart: Summary中简要信息以图表形式展示

Notes: 其他信息

charles设置代理,手机进行抓包

这一步的目的是为了移动设备连接到Charles,这样移动设备发起的所有请求才能在Charles中看到

首先确保自己手机的wifi和电脑在同一网络下,千万不要用4G,那么没办法抓包,必须连接wifi

使用Charles工具查看PC本地IP和端口号(端口号默认为8888,也可自行修改),选择“Help->Local IP Address”

我的电脑本地ip地址为:192.168.1.159

选择“Help->SSL-Proxying->install charles Root ....Browser”查看,这样子可以一下子把端口号和ip看到

拿出我们需要设置代理的Android手机,找到wifi,长按或者点击查看wifi详情(各类型Android手机方法大同小异,多进行尝试)

然后进入到wifi详情页面

把代理一栏从无改为手动,并在里面输入刚才看到的IP和端口号,例如:192.168.1.x(x为你自己的号码,每个人都不一样)

点击保存或者连接,如果没有则直接返回退出然后再次进入详情,看看代理一栏是不是已经变成了刚才自己输入的ip和端口号,如果显示则代表代理设置成功。如果继续显示代理为无,则代表刚才你没有保存,再试一遍记得如果你不需要用手机设置代理了,把代理记得关掉,不然会影响你浏览某些网页和应用。这时,手机设置好了,打开你需要进行调试的app,你会发现电脑上charles出现一条提示:

第一个箭头标注的是你的手机ip地址。你需要允许该手机的练级,点击“Allow”

这个提示,只会在手机首次链接电脑的时候出现,同意后后面则不会出现。

注意,如果你的手机链接时没有出现该弹窗,去检查自己刚才手机端的代理是否设置错误

如果设置没有问题,可选择“Proxy->Access Control Settings”手动进入Charles的设置选项,添加当前手机的IP

手机IP查看方式:

进入wifi详情

好了,到此为止,你基本已经完成了大半的设置,基本可以正常进行抓包了

但是,部分手机还需要安装下载一个手机证书才能正常使用,安装方法如下:

同样点击Help->SSL-Proxying->install charles Root ....Browser,查看手机证书下载

这一段是告诉你,需要你去浏览器下载一个证书

此时你打开手机默认浏览器,然后在网址栏里输入

chls.pro/ssl

记得,此时你一定要是代理开启状态

你会得到一个文件下载提示,下载后,在浏览器下载内容里找到刚才那个crt文件,打开后进入命名页面

可自定义名称,或者不改。点击保存。部分手机此时会让你输入手机锁屏密码,或者让你设置锁屏,照做就可以了。

出现如下提示代表安装成功。

通过 Charles 进行 PC 端抓包

Charles 会自动配置浏览器和工具的代理设置,所以说打开工具直接就已经是抓包状态了。只需要保证一下几点即可:

确保 Charles 处于 Start Recording 状态。

勾选 Proxy | Windows Proxy 和 Proxy | Mozilla FireFox Proxy。

通过 Charles 进行移动端抓包

手机抓包的原理,和 PC 类似,手机通过把网络委托给 Charles 进行代理与服务端进行对话。具体步骤如下:

使手机和电脑在一个局域网内,不一定非要是一个 IP 段,只要是在同一个路由器下即可。

电脑端配置:

关掉电脑端的防火墙(这点很重要)。

打开 Charles 的代理功能:通过主菜单打开 Proxy | Proxy Settings 弹窗,填入代理端口(端口默认为 8888,不用修改),勾选 Enable transparent HTTP proxying。

如果不需要抓取电脑上的请求,可以取消勾选 Proxy | Windows Proxy 和 Proxy | Mozilla FireFox Proxy。

手机端配置:

通过 Charles 的主菜单 Help | Local IP Address 或者通过命令行工具输入 ipconfig 查看本机的 IP 地址。

设置代理:打开手机端的 WIFI 代理设置,输入电脑 IP 和 Charles 的代理端口。

设置好之后,我们打开手机上的任意需要网络请求的程序,就可以看到 Charles 弹出手机请求连接的确认菜单(只有首次弹出),点击 Allow 即可完成设置。

完成以上步骤,就可以进行抓包了。

通过 Charles 进行 HTTPS 抓包

HTTPS 的抓包需要在 HTTP 抓包基础上再进行设置。需要完成一下步骤:

完成 HTTP 抓包配置。

电脑端安装 Charles 证书:通过 Charles 的主菜单 Help | SSL Proxying | Install Charles Root Certificate 安装证书。

设置 SSL 代理:通过主菜单打开 Proxy | SSL Proxy Settings 弹窗,勾选 Enable SSL proxying。

移动端安装 Charles 证书:通过 Charles 的主菜单 Help | SSL Proxying | Install Charles Root Certificate on a Mobile Device or Remote Browser 安装证书。

设置好之后,我们打开手机上的任意需要网络请求的程序,就可以看到 Charles 弹出手机请求连接的确认菜单(只有首次弹出),点击 Allow 即可完成设置。

完成以上步骤,就可以进行 HTTPS 抓包了。

Charles弱网测试

我们借助Charles工具做弱网的测试,或者模拟2G、3G的网络情况。

        Charles的使用方法如下:

        首先,打开Charles,在Throttle Settings中设置网络状况,比如:

1、点击Proxy->Throttling Settings

2、☑️勾选[Enable Throttling]使的限制网速可用,相当于开启了限制网速的功能

3、关于网速的选择

概念介绍:

Bandwidth(带宽,即上行、下行数据传输速度)

Utilistation(带宽可用率,大部分modern是100%)  (利用百分比)

Round-trip(往返延迟,请求的时延)  (往返延迟)

MTU(最大传输单元,即TCP包的最大size,可以更真实模拟TCP层,每次传输的分包情况)

Releability :(指连接的可靠性。这里指的是10kb的可靠率。用于模拟网络不稳定。)

Stability :(连接稳定性,也会影响带宽可用性。用于模拟移动网络,移动网络连接一般不可靠)

4G:(16384带宽)、(80往返延迟)

3G:(4096带宽)、(120往返延迟)  300k-2Mbps左右

2.5G(GPRS)一般在100kbps

2G(GSM)一般在5-9kbps

如果不习惯自定义设置带宽等,可直接在Throttle Preset下拉列表中选择,按照顺序,网速逐渐提升

3.3如果只想对某地址的请求进行弱网测试,☑️[Only for selected hosts]

进行这项设置后,我们会看到小红旗处于工作状态。

然后,打开Sequence查看每个请求的执行情况,比如:

上图中可以看到每个请求的大小(size),以及请求的状况(status)。

PS:弱网、2G、3G建议的上下行速率如下,同时还可以控制丢包率的数据

        网络                  上行                      下行

        弱网                      10                        30

        2G                        15                        50

        3G                        384                      2800


压力测试:

给服务器做压力测试

我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,方法如下。

我们在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项,如下所示:

接着我们就可以在弹出的对话框中,选择打压的并发线程数以及打压次数,确定之后,即可开始打压。

设置断点 Breakpoint

操作步骤:

在Charles的structure窗口,选中想要进行断点调测的请求连接(如果有下级目录,也可以展开之后选择自己想要调测的那级目录)

点击【右键】,在弹出菜单中选择【Breakpoints】

再次请求该页面,会出现下面的页面:

点击Execute后,出现响应:

修改请求和响应报文

以修改CSDN未读消息接口为例,操作步骤:

设置完断点之后,刷新CSDN博客首页,进入Charles断点调测

在Charles的【Breakpoints】窗口,选择【Edit Request】TAB,然后根据需要选择底部的【URL】、【Headers】或者【Cookies】等进行修改

点击下面的【Execute】执行请求发送

编辑响应报文的操作类似,点击【Edit Response】即可

Charles中修改请求、修改返回值

1、 找到要修改的请求, 设置断点

2、修改请求信息

3、修改返回信息,并重新发送

注意:

1.在手机上抓的包也可以通过上述方法进行修改请求和返回的报文。

2.https都是加密的,需要有证书的才可以抓包,http或者bbs的--一般的证书是以.cret结尾的文件双击就可以装证书

3.通过抓包,可以分析和定位问题

4.URL转码--浏览器对特殊字符处理时,就自己定义了比如%20=空格,以%开头正常的

一.Fiddler的使用

1.fiddler界面的左边是捕捉到的所有http请求列表,包含http请求的结果,主机名称,URL等信息。在浏览器任意打开一个网站都会显示到这个列表,如图所示

界面的右上部分窗口是http请求的详细信息,包括http头部信息,请求方法,头部字段等内容,如图所示

点击Raw选项卡,可以看到http请求的原始信息,除头部信息外,还可以看到cookie和请求数据内容,如图所示,可以多开几个不同网站比较一下内容的差异

Fiddler界面的右下角是http的响应内容,Header选项卡可以查看响应头部信息,如图所示

同样的,可以在Raw选项卡中查看响应的原始数据,如图所示

二、Fiddler抓取请求

  Fidder抓请求和charles是一样的,默认端口号也是8888,手机设置代理之后,发送请求,fiddler就可以抓到了。

 1、过滤请求

在使用fiddler或者charles抓请求的时候,有的时候有很多请求,我们想要找到自己想要的请求就不怎么方便了,就需要过滤请求,只过滤我们想要的请求,现在比如说我们想要抓天天网的请求,那就过滤天天网的host, app.mvp.tiantian.com

2.Fiddler修改请求、修改返回值

Fiddler修改请求和修改返回和charles差不多,一点不一样的就是:

找到修改的请求--->设置断点--->修改请求,在发出请求之前设置断点,修改请求,发送;修改返回,在获取到返回之后设置断点,修改返回值,发送给客户端

3.Fiddler修改端口号

我们在使用fiddler的时候,默认的端口号是8888,如果端口号被占用的话,就需要修改端口号,改成一个其他的,没有被占用的。

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