Fiddler简介
Fiddler是一个http协议调试 *** 工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的 *** 调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式.
Fiddler使用c#语言开发,是一个开源软件。它包含一个简单却功能强大的基于 *** cript .NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够使用c#语言进行扩展。他还提供一系列接口以支持插件开发。
Fiddler是基于 *** 模式工作的,简单来说,当你打开Fiddler软件,他会开始监听本机8888端口。然后将系统默认 *** 设置为127.0.0.1:8888。这样本机所有使用系统 *** 的软件包括浏览器会先把数据发送到Fiddler,然后Fiddler再将数据发送到服务器。服务器返回的数据先发送给Fiddler,再由Fiddler发送到指定的程序。在这个过程中Fiddler起到了转发数据( *** )的作用。由于数据无论是请求还是响应都通过Fiddler进行转发,所以Fiddler有权限对数据进行获取、存储、修改等操作。
Fiddler安装
打开http://www.telerik.com/fiddler,点击Free download进行下载。
安装过程很简单绿色,选择好安装路径,点击Install就可以了。这里特别注意下,你要记住你的安装路径,因为Fiddler默认不会创建桌面快捷方式,需要你去安装目录打开程序或者手动创建快捷方式。
Fiddler安装
界面简介
Fiddler界面
使用及设置
Fiddler功能繁杂,不好以图文的形式把每一项讲清楚。下面我讲一些日常使用的、关键的按钮、功能和设置。
安装完成后我们一般先进行几项很重要的设置,首先点击Tools->options->Connections
Fiddler
在这里我们可以修改Fiddler监听的端口,勾选红圈标示出来的这项,允许远程计算机连接。以便在以后我们抓取手机等移动设备的数据包。勾选之后在手机Wifi设置里设置 *** 为 “内网IP:8888"(如 192.168.1.2:8888)就可以抓取手机的HTTP数据包。
然后再将标签页切换到HTTPS,以设置Fiddler可以抓取https数据包
Fiddler设置
勾选以上几项,期间会弹出证书安装,一路确认下去。完成之后,你的Fiddler就可以抓取本机的https数据包
Fiddler工具栏
工具栏中我们主要介绍红圈选中的几个功能。X是用来清空当前数据记录的。
Decode选中之后会自动尝试解压响应的内容,包括但不限于以下格式(gzip、deflate、bzip2、brotli)。
"Keep 1000 sessions"表示显示多少条数据记录,默认显示全部,这里建议设置为500或者1000,默认全部的话,时间久了会把你电脑内存耗光.
Any Process 这个按钮可以拖动选择抓指定应用程序的包,比如拖动到firefox就只显示firefox的数据包。默认显示全部应用程序。
Save按钮可以把当前的数据记录保存到硬盘,以便在方便的时候重新打开分析
Clear Cache是清除浏览器缓存,基本不用
TextWizard是个功能非常强大的编码解码工具,支持多种格式。会经常用到
TextWizard
鼠标放到Online按钮上,会显示你当前的网卡信息、内网IP。方便给手机设置 *** 的时候查看。
当在左侧选择一条数据记录时,右侧会显示该请求的具体信息
请求数据
Headers会显示请求头的一些信息,例如是GET还是POST、浏览器UA、cookie等
Textview和SyntaxView功能基本一样,用来显示post数据的原始明文格式(UTF-8),如果是二进制数据则显示乱码
WebForms会更清晰的展示你的post内容(仅限于&连接格式的post内容,如果是json格式,这里不显示)
HexView,以16进制显示你的整个请求包
Auth,显示授权信息
Cookie,用来显示请求携带的cookie信息
raw,以明文(utf-8)显示整个请求头信息包含post内容
json,以json格式显示post内容
xml,以xml格式显示post内容
以下是服务器响应的响应信息截图
Headers显示响应头信息
TextView和SyntaxView作用相似,用来显示服务器返回的具体内容。当返回内容非常大的时候TextView会卡死很久才显示。SyntaxView比TextView响应快很多
ImageView,如果服务器返回的是图片流的话,会在这个标签显示图片
HexView,以16进制显示返回内容
WebView,如果返回的是html代码,这个标签会解析html并显示网页
Auth,显示返回的授权信息
Caching,显示缓冲
Cookie,显示服务器返回的cookie
Raw,以明文(utf-8)显示完整的响应数据包
Json,以json格式显示返回内容
XML,以xml格式显示返回内容
Composer工具介绍
Composer工具在Fiddler中使用率非常高,常常用来模拟一些数据的提交
上图我们使用Composer工具,模拟提交了百度翻译的数据包。我们提交一个请求,询问服务器China的意思是什么?
服务器给我们返回以上词义。返回格式为json格式。
Fiddler命令行
在命令行中我们基本只需要掌握bpu命令就可以了,这是一个数据劫持命令
我们在命令行中输入bpu http://fanyi.baidu.com/sug 然后回车,Fiddler会监听并劫持发往和返回http://fanyi.baidu.com/sug的所有数据,并支持中途编辑修改。
我们把我们提交的china关键词改成japan,发现服务器给我们返回了japan的翻译
通过这个命令,我们既可以修改请求,也可以修改响应。常常用来劫持数据,例如你玩的某个游戏里,你有100个金币,通过劫持数据,你可以吧自己的金币数量修改成1万甚至更多。
抓包实战
我们通过一个示例,来强化上面的学习。我们来使用Fiddler抓取百度翻译输入china的数据包,然后使用我们熟悉的编程语言来写一个翻译软件。
首先我们打开百度翻译(http://fanyi.baidu.com/#en/zh/),输入china,观察Fiddler中抓到的数据。
通过逐条查看,或者搜索china字样,我们找到了一个异步请求数据包,这个包是用来做词义联想的,虽然不是最终的翻译数据包,但是该包相对简单也可以实现翻译功能,我们就来模拟这个包实现翻译功能。
我们按住这条记录,拖动到Composer工具里,简单调试去除一下无用的头部信息,看浏览器是否能正常返回。我们精简后的请求为下图示例
下面我们使用python编程模拟这个请求
import http
import json
from urllib import parse
keyword=input('请输入要翻译的单词:')
#构造请求头信息
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3964.2 Safari/537.36'
,'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}
conn = http.client.HTTPConnection("fanyi.baidu.com") #创建HTTP连接
body = {'kw': keyword} #构造post信息
body = parse.urlencode(body) #对post内容进行url编码
conn.request("POST","/sug",body=body,headers=headers) #开始请求
response = conn.getresponse() #获取响应
if(response.status==200): #判断服务器响应代码为200的话即返回正常
result = response.read().decode('utf-8'); #获取响应数据
result = json.loads(result) #解析json
print('翻译内容为:',result['data'][0]['v']) #输出翻译内容
else:
print('出现错误') #如果服务器响应代码不是200,是500或者404或者其他错误代码,都显示为错误
现在通常情况下大家所说的 邮箱 指电子邮箱(英文为e-mail)。 传统邮箱,指当地邮政机关设置于固定地点的用于接收公众投寄信件或者物品的装置。最早的邮箱,脱胎于一块岩石下或者一棵树干内,在苏伊士运...
常见的应用文格式有倡议书、短评、活动方案、宣传稿、公开信、讲话稿、编者按、调查问卷、导言、方案意见、报告...... 比“朗读并背诵全文”更可怕的是这些应用文格式你全都要学会!毕竟你不知道下次考试会...
随着经济水平的不断提高,大家基本上都拥有了属于自己的爱车,为了自己的生活奋斗故免不了经常长时间开车,难免有时会出现打瞌睡现象,所以大家难免都会在车上播放自己喜欢的音乐嗨曲等。用来舒缓大家乏味的情绪和缓...
经常设计的朋友应该对于cdr不陌生吧!但是呢?我们平时用的cdr都是在电脑上操作的,有谁知道手机如何打开cdr文件。下面小编带来解答! CorelDRAW的介绍 CorelDRAW Graph...
每个公司一般都会有自己的品牌,每个品牌都有自己的LOGO,LOGO是品牌的标识之一,是企业品牌形象之一。LOGO在企业中的地位是很重要的,LOGO会应用到各种场景中,公司LOGO设计一定要SVG格式。...
“中国经济年度人物”,“感动中国十大人物”,“年度十大新闻人物”……一次次颁奖典礼揭开帷幕,一个个故事震撼着我们。这些故事之所以能让我们热泪盈眶,与主持人精美的致辞是分不开的...