Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie、html、js、css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。
Fiddler官网:https://www.telerik.com/
Fiddler简介
Fiddler 是用C#写出来的,它包含一个简单却功能强大的基于JScript .NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够使用.net框架语言进行扩展。
Fiddler使用
通过显示所有的Http通讯,Fiddler可以轻松地演示哪些用来生成一个页面,通过统计页面(就是Fiddler左边的那个大框)用户可以很轻松地使用多选,来得到一个WEB页面的“总重量”(页面文件以及相关js,css等)你也可以很轻松地看到你请求的某个页面,总共被请求了多少次,以及多少字节被转化了。
用户可以加入一个Inspector插件对象,来使用.net下的任何语言来编写Fiddler扩展。RequestInspectors 和 ResponseInspectors提供一个格式规范的,或者是被指定的(用户自定义)Http请求和响应视图。
另外,通过暴露HTTP头,用户可以看见哪些页面被允许在客户端或者是代理端进行缓存。如果要是一个响应没有包含Cache-Control 头,那么他就不会被缓存在客户端。
同类的工具有: httpwatch、firebug、wireshark。
Fiddler反馈结果
结果列是请求是否成功的代码。最常见的代码包括:
200—成功。请求已发送且响应已成功接收。
400—坏请求。当目的服务器接收到请求但不理解细节所以无法处理时发生。
404—页面找不到。如果目标API已移动或已更新但未保留向后兼容性时发生。
500—内部服务器错误。服务器端发生了某种致命错误,且错误未被服务提供商捕获。
Fiddler请求URL
指被请求的特定页面或者端点(或根URL,如果使用了隧道的话)。许多后端服务会使用看起来不熟悉的URL。比方说,docs.live.net:443实际上是微软OneDrive。
检查进程(Process)列看看是哪些应用发出给定的请求。如果你看到Explorer这个进程,那它指的是Windows Explorer(不是IE)。Windows Explorer基本上就是Windows它自己,其流量往往是Windows刷新live title的数据引起的。
Fiddler安装与配置
可以直接去官网下载免费软件:Fiddler官网,在选择下载之后会进入一个选择页面,你需要在这里选择需要使用的版本,如下图:
随便选择一个使用理由,输入邮箱地址,勾选 “I accept the Fiddler End User License Agreement” 选项,点击下载。
Fiddler 抓取基于 http/https 协议的 web 网站数据
打开 Fiddler,整个界面分为三个区块
1、是当前电脑与外网交互的地址信息,有请求结果,请求协议,访问域名,url 地址,以及返回的字节数等登。
2、是请求信息,包括 header 头部信息,请求地址,请求参数等等。
3、是服务器响应信息。根据返回结果形式的不同,可以分为返回网页和返回数据两种。
返回结果是 HTML 网页
我们以访问 gitchat.cn 热门 chat 为例进行分析。
从图中可以看到,host 列表示访问的域名,这里是 gitchat.cn,Protocol 列表显示的是协议,这里是 http,URL 列显示的是请求路径,这里是 /gitchat/hot,Body 列表示返回的结果字节数,Content-Type 列表示返回内容的类型,这里是 html,最后 Process 列意思是进程名。
一般情况下,我们只需要关注 Host、URL、Body 及 Content-Type 这几列,从 Body 列的字节大小,我们能快速判断出哪些请求有大量的数据返回,再根据 Content-Type 判断返回内容的类型。
上图标红的行中,我们可以看到热门列表页有大量的内容返回,并且返回类型是 html 网页。我们看下区块 3 的结果。
我们切到 “SyntaxView” 页签下,可以看到热门 chat 的 html 页面源码,说明请求 http://gitbook.cn/gitchat/hot 这个地址之后,服务器返回的是 html。
返回结果是 HTML 网页
一般情况下,我们用 Fiddler 抓包是处在一种目标不是非常明确的情况下, 也就是说我们不知道这个网站的哪个地址会被抓到数据,也不知道会被抓到什么数据,只是在浏览这个网站的过程中,通过 Fiddler 的请求情况来分析,哪些数据可能有用。
这些数据往往是在网站或者 APP 上正常操作时看不到的数据,而通过 Fiddler 的抓取,就能捕获到这些隐藏的数据。
Fiddler 还常常被用作爬虫的辅助工具,先用 Fiddler 过滤一遍目标网站或者 APP,捕获到能够拿到目标数据的 URL 及参数,然后再通过爬虫程序访问这些 URL 及参数,就可以爬到目标数据。