《Fiddler系列一:Fiddler网络爬虫工具介绍》
前言
本文来源属于网络资源整理,是将多位大神讲解的优秀知识点以及自己的实践操作加理解再次重新整合在一块儿,希望对大家有所帮助。如有冒犯敬请谅解,请第一时间联系,邮箱:[email protected] 我们将积极配合处理!
如果有问题,可以加QQ群:1091481018互相学习,借鉴链接如下,除此借鉴文章之外,他们还有很多的优秀文章大家也可以简介阅读噢,希望对大家喜欢:
【作者:Elli_ON】https://msd.misuland.com/pd/3255818272473350882
【作者:abcnull】https://blog.csdn.net/abcnull/article/details/89001642
目录
一、序言
二、Fiddler简介
三、Fiddler界面介绍
(一)功能介绍:主菜单
(二)功能介绍:快捷菜单
(三)会话列表
(四)会话列表:右键功能
(五)选项卡
(六)请求查看器
(七)响应查看器
四、Fiddler实战-抓取手机端数据
五、总结
一、序言
在编写网络爬虫时,第一步(也是极为关键一步)就是对网络的请求(request)和回复(response)进行分析,寻找其中的规律,然后才能通过网络爬虫进行模拟。浏览器大多也自带有调试工具可以进行抓包分析,但是浏览器自带的工具比较轻量,复杂的抓包并不支持。并且有时候需要编写手机APP爬虫,这时候就必须需要用到其他的专业抓包工具,例如本篇介绍的Fiddler。
二、Fiddler简介
Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。
当然,除了Fiddler之外,抓包工具还有Firebug、Wireshark、Httpwatch等,为什么我们要选择fiddler呢?原因如下:
(1)Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。
(2)Wireshark是通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎有些大材小用,总有一点杀鸡用牛刀的感觉。
(3)Httpwatch也是比较常用的http抓包工具,但是只支持IE和firefox浏览器(其他浏览器可能会有相应的插件),对于想要调试chrome浏览器的http请求,似乎稍显无力,而Fiddler 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler。
三、Fiddler界面介绍
(一)功能介绍:主菜单
|
File文件:
File--->Capture Traffic启用或停止捕获; File--->New Viewer 新窗口; File--->Load Archive 存档; File--->Recent Archive 最近文档; File--->Save保存; Save--->All Session... 全部会话; Save--->Selected Session 选择了的会话; Save--->Request 请求; Save--->Response 响应; File--->Import Sessions导入会话; File--->Export Sessions导出会话; File--->Exit退出; |
|
Edit编辑: Edit--->Copy拷贝; Copy--->Session拷贝整个Session; Copy--->Just Url将选中session的url拷贝到剪贴板; Copy--->Headers Only拷贝头信息,包括请求和返回的头信息; Copy--->Full Summary将session列表显示的信息及表头复制到剪贴板,通过tab分割。便于在Excel或其他编辑器中查看编辑; Edit--->Remove移除; Remove--->Selected Sessions选择会话; Remove--->Unselected Sessions反选会话; Remove--->All Sessions全部会话; Edit--->Select All选择全部; Edit--->Undelete恢复之前删除的会话; Edit--->Paste as Sessions作为会话粘贴文件; Edit--->Mark标记所选的会话; Mark--->Strikeout失败; Mark--->Red红色; Mark--->Blue蓝色; Mark--->Gold金色; Mark--->Green绿色; Mark--->Orange橙色; Mark--->Purple紫色; Mark--->Unmark未标记; Edit--->Unlock for Editing调为可编辑 Edit--->Find Sessions查找会话 |
|
Rules规则: Rules--->Hide Image Requests隐藏图片请求; Rules--->Hide HTTPS CONNECTs隐藏HTTPS连接; Rules--->Automatic Breakpoints断点控制; Automatic Breakpoints--->Before Requests请求之前; Automatic Breakpoints--->After Responses 响应之后; Automatic Breakpoints--->Disabled禁用; Automatic Breakpoints--->Ignore Images忽略图片; Rules--->Customize Rules打开Fiddler ScriptEditor; Rules--->Require Proxy Authentication密码代理验证; Rules--->Apply GZIP Encoding采用GZIP编码; Rules--->Remove All Encodings删除全部编码; Rules--->Hide 304s隐藏304会话; Rules--->Request Japanese Content要求日语内容; Rules--->User-Agents支持把User-Agents请求头设置或替换成指定值; Rules--->Performance提供影响web性能的简单选项; Performance--->Simulate Modem speeds模拟调制解调器速度; Performance--->Disable Caching禁止缓存 Performance--->Cache Always Fresh新的缓存 |
|
Tools工具:
Tools--->Options选项; Tools--->WinINET Options WinINET选项; Tools--->Clear WinINET Cache-清除WinINET缓存; Tools--->Clear WinINET Cookies清除WinINET的Cookies; Tools--->TextWizard文字编码解码; Tools--->Compare Sessions比较会话; Tools--->New Session Clipboard新会话写字板; Tools--->HOSTS hosts配置; Tools--->Reset Script重置脚本; Tools--->Sandbox沙箱; Tools--->View IE Cache查看IE缓存; |
|
View视图: View--->Show Toolbar显示工具条 View--->Default Layout默认布局 View--->Stacked Layout堆叠布局 View--->Wide Layout全部布局 View--->Tabs制表符 Tabs--->preferences偏好 Tabs--->autosave自动保存 Tabs--->apitest API测试 View--->Statistics统计 View--->Inspectors嗅探 View--->Composer构造 View--->Minimize to Tray关闭自托盘 View--->Stay on Top前端显示 View--->Squish Session List会话列表格式 View--->AutoScroll Session List自动滚动会话链表 View--->Refresh刷新 |
|
Help帮助: Help--->Help帮助 Help--->Fiddler Book说明 Help--->Discussions社区讨论 Help--->HTTP References HTTP的参考 Help--->Troubleshoot Filters-故障排除 Help--->Check For Updates检测更新 Help--->Send Feedback发送反馈 Help--->Abou关于 |
(二)功能介绍:快捷菜单
|
会话列表进行备注
Replay--->重新发送选中请求 Remove--->删除会话 Go--->打断点时使用 Stream--->点击为流模式,不点击为缓冲模式 【缓冲模式】:内容全部返回在发送到客户端;可以控制响应,修改响应数据,但是时序图有时候会出现异常; 【流模式】:收到内容立即发送给客户端;更接近真实浏览器的性能,速度快,时序图更准确(比如瀑布图),但是不能控制响应;
如果不需要AutoResponse和Fileters功能的话,一般使用缓冲模式; Decode--->解码,默认勾选 |
|
Keep:All sessions--->保持全部会话 Any Process--->任何进程,精准定位 Find--->查找 Save--->保存 |
|
截屏 秒表 Browse--->打开浏览器 Clear Cache--->清除缓存 TextWizard--->编码解码小工具 |
|
Tearoff--->打开一个新窗口 MSDN Search--->MSDN关键字查找 |
(三)会话列表
|
#--->图标及序号 Result--->HTTP响应状态码 Protocol--->请求使用的协议 Host--->接受请求的服务器主机名和端口号 URL--->请求的服务器路径的文件名,也包括GET参数 Body--->请求的大小,以byte为单位 Caching--->请求的缓存过期时间或缓存控制header等值;响应头中Expires和Cache-Control字段的值 |
|
Content-Type--->请求响应的类型 Process--->发出此请求的Windows进程及进程ID; Comment--->注释信息; Custom--->用户可以通过脚本设置自定义值;FiddlerScript所设置的ui-CustomColumn标志位的值 |
|
|
(四)会话列表:右键功能
|
【Decode Selected Session】s--->解码选择的session,一些Response body 会Encode。Decode后通常能解决乱码的问题; 【AtuoScroll Session List】--->自动滚动 Session List。当不断有新的session进入list时候,关闭此功能,更容易定位选择某一个或多个session; 【Comment】--->为一个或多个session添加注释;
【Compare】--->对比:选中两条session右键,就会出现Compare选项。这个功能是通过第三方的软件来实现,可以下载WinDiff.Exe放在Fiddler的安装目录下,或是下载WinMerge安装,安装时,注意将软件添加到系统环境变量中; 【COMETPeek】--->命令会保留正在执行的响应的“快照”,在响应完成前就可以查看部分内容。当web应用采用COMET模式以流式向客户端返回数据时,可以使用该命令。由于“流式”的含义就是永不结束,直有当服务端停止连接后,Fiddler才会返回响应; 【Abort Session】--->终止当前正在执行的请求; 【Clone Response】--->当Session列表中选中两个Session,并且其中一个Session在断点处中止,而另一个Session已经运行完成时才可用。该命令会把已经完成的Session的响应拷贝给暂停运行的Session; 【Unlock For Editing】--->使Session的请求和响应都可以在Inspector中编辑; 【Inspect in New Windowns】--->打开一个新的Session Inspector窗口; 【Properties】--->打开Session属性窗口,显示当前的Session信息; |
|
Copy拷贝; 【Copy】--->Just Url将选中session的url拷贝到剪贴板; 【Copy】--->This Column拷贝摘要,其中包括:请求方法,URL,响应状态码及状态信息。如果是重定向的HTTP/3xx,还会有该请求Response header中Location字段; 【Copy】--->Terse Summary简要; 【Copy】--->Headers Only拷贝头信息,包括请求和返回的头信息; 【Copy】--->Session拷贝整个Session; 【Copy】--->Response DataURL拷贝响应的DataURI(一个特定资源的协议),格式规范: data:[ 【Copy】--->Full Summary将session列表显示的信息及表头复制到剪贴板,通过tab分割。便于在Excel或其他编辑器中查看编辑; |
|
Save保存:
【Save】--->Selected Sessions选择Sessions; 【Save】--->Selected Sessions---> in ArchiveZIP将选择的sessions保存为SAZ格式压缩文件; 【Save】--->Selected Sessions--->as Text将所选Session保存为txt格式文件; 【Save】--->Selected Sessions---> as Text(Headers only)将所选sessions的请求和响应头一起保存为txt格式文件; |
|
Remove删除: 【Remove】--->Selected Sessions删除选中的sessions 【Remove】--->Unselected Sessions删除未选中的sessions; 【Remove】--->All Session删除所有sessions |
|
Filter Now快捷过滤: 选中一个session右键会出现Filter Now选项,Fiddler会根据你选择的session快速生成隐藏/显示条件;
当我们选则隐藏某一个条件后,session list会隐藏符合条件的session; |
|
Mark标记所选的会话: Mark--->Strikeout失败; Mark--->Red红色; Mark--->Blue蓝色; Mark--->Gold金色; Mark--->Green绿色; Mark--->Orange橙色; Mark--->Purple紫色; Mark--->Unmark未标记; |
|
Replay重新请求此地址: 【Replay】--->Reissue Requests 将选中的请求以原来的形式重新发送。如果按住Shift键,可以键入重复次数。或是选中sessions后按Shift+R; 【Replay】--->Reissue Unconditionally无条件的发送选中请求,告诉服务器不要返回HTTP/304响应,快捷键Shift+U; 【Replay】--->Reissue and Edit把选中的请求以原来的形式重新发送,在每个session中设置请求断点,在请求被发送到服务器前,使用Fiddler的Inspector修改请求; 【Replay】--->Reissue and Verify把选中的请求以原来的形式重新发送,验证Response状态码和Response body; 重新发送的请求会被标记出背景色,绿色代表验证通过,红色表示验证失败,在comments中会提示失败原因和对比的session id; 【Replay】--->Reissue Sequentially将选中的请求重新发送,等待前一个响应回来后,在发送下一个; 【Replay】--->Reissue from Composer将选中的请求克隆到Fiddler右侧的Composer模块中(Composer后续博客讲解); 【Replay】--->Revisit in IE将sessions的url在IE中打开。注意IE总是使用GET方法,而且用自己的header和cookie,不管session中提供了什么HTTP方法和请求头; |
|
Select选择: 【Select】--->Parent Request当前请求是从那个页面来的,相当于当前请求头中的Refere字段值。鼠标放在session上按P键可执行; 【Select】--->Child Requests与1相反; 【Select】--->Duplicate Requests选中Session列表中和当前的Session的URL和HTTP方法相同的所有Session; 【Select】--->Matching Values值匹配选择,可以根据Session列表中的任意值匹配,鼠标放任意一列,点击Alt+左键,就会匹配出相同值的session; |
(五)选项卡
|
【Statidtics】--->对选中多个Sessions统计; 【Inspectors】--->请求头和响应体 【AutoResponder】--->重新定向 【Composer】--->模拟进行发送 【FiddlerScript】--->脚本 【Log】--->日志 【Fiters】--->过滤 【No Host Filter】不设置域名过滤; 【Hide the following Hosts】设置的这些域名相关会话将在左侧会话列表中被隐藏; 【Show only the following Hosts】只在会话列表中显示与设置的这些域名相关的会话; 【Flag the following Hosts】与设置的域名相关会话将在左侧会话列表中高亮想显示。 【Timeline】--->瀑布流时间图 |
(六)请求查看器
|
【Headers】--->请求头信息显示为一个分级视图,包含了web客户端信息、Cookie、传输状态等; 【TextView】--->显示POST请求的body部分为文本; 【SyntaxView】--->显示脚本(安装SyntaxView插件) 【WebForms】--->以直观的界面显示QueryString的值和Body的值,这里的Body应该是 application/x-www-form-urlen-coded格式; 【HexView--->请求内容的16进制显示; 【Auth】--->显示hearer中Proxy-Authorization和【Authoriization】信息; 【Cookies】--->以直观的界面显示Header中Cookie的值; 【Raw】--->将整个请求显示为纯文本; 【JSON】--->通过JOSN格式显示; 【XML】--->如果请求的body是XML格式,就是用分级的XML树来显示它; |
(七)响应查看器
|
【Transformer】--->响应信息的压缩编码格式; 【Headers】--->用分级视图显示响应的header; 【TextView】--->使用文本显示相应的body; 【SyntaxView】--->显示脚本(安装SyntaxView插件) 【ImageView】--->响应内容如果是图片则显示图片,左侧灰色区域会显示图片的大小、宽高、文件格式等信息,在下方还可以选择缩放模式:自动缩放、缩放以适应显示区域大小、无缩放; 【HexView】--->响应内容的16进制显示; 【WebView】--->; 【Auth】--->显示hearer中Proxy-Authorization和Authoriization信息; 【Caching】--->缓存; 【Cookies】--->以直观的界面显示Header中Cookie的值; 【Raw】--->将整个响应显示为纯文本; 【JSON】--->通过JOSN格式显示; 【XML】--->如果响应的body是XML格式,就是用分级的XML树来显示它; |
四、Fiddler实战-抓取手机端数据
由于整理的时候使用word文档去整理,内容太多,反而查阅比较麻烦,索性这里将实战部分当一个大块儿去详细的讲解。这里请阅读“《Fiddler系列二:Fiddler实战抓取手机端数据》”
五、总结
Fiddler是一个功能强大的网络抓包工具,本文对如何用Fiddler抓取HTTP、HTTPS、手机APP会话数据报介绍了,另外还补充介绍了数据包过滤的功能。当然,Fiddler的功能远不止这些,不过本文介绍的操作用于一般的网络爬虫数据包分析足以。
对于小白初次了解的话,请打开Fiddler工具和文档同步操作,这也学习起来效果最佳,可能在阅读“Fiddler界面介绍”的时候内容比较枯燥,但是学习和成长的道路上不就是这样的一个过程嘛!加油读者们,希望对你们有所帮助!
最后如果在线的读者你喜欢的话可以留下一个小小的“笔芯”,同时在本文中有什么问题,或者有错误的地方,也可以添加以下QQ群进行学习交流。同时在文章发布之前,你们在网页上所看到的文章我已经编写好了离线文档,如果有需要,同样也可以加群下载。
学习和成长本就是这样,痛并快乐着,而又是一个漫长的过程,因为有你们的分享和大家的互相监督学习,才能够不断的进步和成长。
如果喜欢,可以继续深入阅读:《Fiddler系列二:Fiddler实战抓取手机端数据》