美文网首页
charles 抓包,断点和修改请求响应报文 以及Fiddle

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

作者: 969f13eda4ec | 来源:发表于2020-10-19 16:03 被阅读0次

    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,如果端口号被占用的话,就需要修改端口号,改成一个其他的,没有被占用的。

    相关文章

      网友评论

          本文标题:charles 抓包,断点和修改请求响应报文 以及Fiddle

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