Fiddler抓包使用教程-扫盲篇

Fiddler抓包使用教程-扫盲篇

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72823370
本文出自【赵彦军的博客】

1、什么是抓包?

不同主机之间的数据通信都是通过网络来进行传输,对那些在网络上传输的数据(发送、请求的数据)进行截获、编辑、转存等操作叫做抓包。抓包可以是抓取电脑端请求的数据,还可以抓取移动端(手机APP)的数据包。

2、为什么要进行抓包?

通过对网络上传输的数据进行抓取,可以对其进行分析,对于软件的Debug很大的帮助。当然也可以通过抓取用户发送的涉及用户名和密码的数据包来获取用户的密码。

3、能够进行抓包的技术原理是什么?

一般情况下,数据按照各种网络协议按照一定的格式在网络上进行传输,网络上传输的数据是以帧为单位,在对需要发送的数据进行包装的时候,会把数据的接收方、发送的的地址(MAC地址、IP地址等)一起进行包装并进行发送。根据发送方和接收方的地址,会有一条数据包的传输路径,在这条路径上,发送的数据包,会经过网络上很多台主机,标准的TCP/IP协议是这样处理的:当有数据经过主机时,主机会通过存放在数据包里面的地址来进行判断,这个数据包是否是发送自己的,如果不是发给自己的,主机就不会对它进行解析,简单的进行丢弃(转发)。如果是发送给自己的,那么主机就会对其进行解析和存储。

如果想要存储那些不是发送给自己的数据包,可以把网络适配卡设置为杂乱模式。这样它就会接收经过它的每一个数据包了。

4、常用的抓包工具有哪些?

Charles、mitmproxy、Fiddler、WireShark、TcpDump

5、常用的抓包工具对比

TcpDump

Android平台下的网络数据抓包工具,Android模拟器中自带 TcpDump 文件。用 TcpDump 对网络数据抓包,手机不用走代理——将网络数据包添加到 WireShark 中分析即可。

  • 缺点:

手机必须获取 root权限;
不能查看实时通信数据——因为抓取的是 dump出来的文件,而不能实时数据交互;
获取的数据很多,分析时需要过滤、只查看真正有用的信息。

WireShark

PC端截获、分析通过该网卡的所有网络通信的数据包(针对移动端时候,就要对移动端设置 代理服务器)强大的工具,完整查看网络中的每层、每个协议、每个数据包的详细组成信息;TCP、UDP、HTTP、HTTPS等协议的数据包均可获取;

  • 缺点:

获取的信息太多,需要手动过滤、进行分析。
只能查看,不能修改、重发送网络数据包。

Fiddler

HTTP协议的代理工具,抓取、分析电脑中所有进出该网卡、与网络进行数据交互的数据(针对移动端抓包时,需要设置代理服务器),主要针对的是 HTTP/HTTPS协议;能够清晰查看 数据包 中的内容——HTTPS中的数据包可以解密出来;简单易操作,选中后即可修改Response结果;所见即所得,修改后马上可以看到效果

  • 缺点:

只适用于一次请求,下次请求需要重新设定。

手动修改需要花费时间,如果程序等待超时,本次设定的Response结果失效


个人微信号:zhaoyanjun125 , 欢迎关注

### 设置Fiddler抓包使用UTF-8编码 #### 配置Fiddler以支持UTF-8编码 为了确保Fiddler能够正确处理并显示UTF-8编码的数据,在配置过程中有几个方面需要注意: 当遇到字符集问题时,可以尝试修改`CustomRules.js`脚本文件来强制指定HTTP响应的默认字符集为UTF-8。打开Fiddler后,通过菜单栏中的`Rules` -> `Customize Rules...`进入编辑器[^1]。 在弹出的FiddlerScript窗口里找到`OnBeforeResponse`函数部分,并在此处添加如下代码片段: ```javascript if (oSession.oResponse["Content-Type"] != null && !oSession.oResponse["Content-Type"].Contains("charset=")) { oSession.utilDecodeResponse(); var bodyText = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes); oSession.utilSetResponseBody(bodyText); } ``` 这段JavaScript会检查每一个返回头中是否存在`charset=`参数;如果不存在,则假设内容是以UTF-8形式编码,并相应地解码和重新编码响应体数据。 另外,对于某些特定类型的资源(比如HTML页面),还可以更进一步定制化设置其字符集属性。这可以通过向服务器发送请求之前调整请求头部实现。同样是在`CustomRules.js`内操作,这次定位至`OnBeforeRequest`方法下加入下面几行语句: ```javascript if (!oSession.oRequest.headers.Exists("Accept-Encoding")) { oSession.oRequest["Accept-8 encoding for HTML content. if (oSession.uriContains(".html") || oSession.contentType == "text/html") { oSession.oRequest["Accept-Charset"] = "utf-8;q=0.7,*;q=0.7"; // Prioritize utf-8 over other charsets } ``` 以上措施有助于提高获取到的信息准确性,特别是在涉及多语言文字的情况下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值