Fiddler实用教程

转载 2017年01月03日 14:43:34


经常有人说抓包抓包,很极客的感觉,其实就是利用工具分析网络请求和响应而已。用工具,谁不会呢?对吧。恰好有个QA同学曾问我,怎么模拟出这种情况,怎么模拟出那种情况,等写完就把博客链接发给她好了。

本文介绍的工具是 Fiddler,它能够在本机和服务端之间建立一个代理,通过这个代理,可以对所有经过的请求和响应进行拦截、修改、分析等。理论上说,只要你使用的软件支持代理,都可以用 Fiddler 进行拦截,包括浏览器、命令行等。

类似的软件有很多,比如 WireShark、HttpWatch 等,如果只是模拟发请求的话,Chrome 中有几个插件也很不错,比如 Postman、REST Client 等。

基本术语

会话(Session)

不同于服务端的 Session,这里仅仅指一次HTTP请求而已。会话面板在工具左侧,如下图所示。

图中显示了三条请求,每一列的具体含义都很清晰,认识英文单词就能懂了。

只是左边 # 号下的图标,帮各位找了一下,见下图。

默认情况下,一旦开启 Fiddler,就会走它的代理。有时候你想暂停这种行为,那请看到左下方有个状态栏。

单击一下左边的 Capturing,就能停止拦截,想再开启,就再单击一下。

它的右边是会话的来源,可以设置仅仅拦截浏览器发出的请求。

再右边有三种选择:1、在请求发出之前进行断点;2、在响应回来的时候进行断点;3、不设断点。

审查(Inspector)

随便单击一条会话,右侧就会显示详细信息。

题外话,我觉得教程的意义在于,当你对某种新事物不熟悉的时候,帮助你了解一下而已。tutorial 和 reference 之间是有点区别的。

所以这里就挑一些足够使用的 tab 来解释一下。首先,这里有上下两栏,上面是 Request,下面是 Response。

Request 中有三个比较厉害的:

  • Inspectors:选中之后,可以详细查看请求的 Headers、Cookies,并且可以对请求体格式化,以 WebForms、JSON、Raw 等方式查看。具体每种方式的区别可以自己感受一下。一般来说,想要查看请求的参数的话,WebForms 的方式就挺直观的。

  • AutoResponder:这个地方可以模拟服务端返回值。顾名思义,当浏览器发出的请求满足你设置的匹配条件的话,Fiddler 就自动响应了,并不需要走网络。

  • Composer:模拟向服务端发送请求,用于测试服务端接口是否正确。

Response 中常用也列三个吧:

  • Headers:响应头。比如 Content-Type、Access-Control-Allow-Origin 等这些属性都在这个 tab 展示。

  • Cookies:查看由服务端带回来的 cookie。

  • JSON:将返回的内容以 JSON 格式显示。这个很有用,特别是当服务端返回的内容本身就是 JSON 的时候。

QuickExec

抱歉这么快就要讲命令行,实在是因为它太有用了。它位于状态栏的上方,有个 QuickExec 的提示,非常显眼。

其实,当你看到它的时候,就已经会了第一个命令

help

输入 help 会带你到命令行的帮助页,上面列举了所有可用的命令。不是很多,而且都很直观。这里同样把常用的列一下。

  • ?sometext:高亮包含匹配文字的会话。比如 ?/foo 就可以把所有包含 /foo 的请求都找出来。

其他的高亮功能还有:=(匹配请求方法或状态码)、@(匹配host)、select(匹配MIME)。

  • clear:清空会话面板。

  • keeponly:清空会话面板,仅保留指定的MIME类型。比如 keeponly json 就能筛选出所有返回 json 的会话。

  • go:放行所有的断点。

设置断点

按照之前介绍的,在状态栏启用断点(无论是请求断点,还是响应断点)后,所有的请求都会中断。

事实上,一个网页加载时,会触发很多异步请求。甚至在加载完成后,也还会不停地发送异步请求,比如现在很流行的二维码登录页面。拦截所有请求似乎显得不太合适。

而在上一节其实留了断点的命令行没有介绍。断点即 breakpoint,所有跟断点相关的都是以 bp 为前缀。

  • bpu:请求时断点,比如 bpu /foo

  • bpafter:响应时断点,比如 bpafter /foo

  • bps:拦截状态码,比如 bps 404

  • bpm:拦截方法,比如 bpm post

用不带参数的命令可以清除断点,比如 bpafter 可以清除所有的响应断点。

url 的匹配方式是判断“字符串是否包含”,比如 bpu /foo 会拦截所有包含 /foo 的请求。

如果忘了这些命令,在命令行输入 bp ,敲回车,就能看到提示了。bp is short for breakpoint,这个能记住吗?

模拟返回值

想要模拟返回值,首先要设置响应断点。

bpafter /foo

当满足条件的响应回来时,选中该会话,就可以看到如图所示的面板。选择 Raw 视图(其他也可以,Raw 可以修改更多的内容),然后可以清楚地看到,服务端返回的内容是

{name: 'Jarvis', gender: 'M'}

把上面的 M 修改成 F,然后单击“Run to Completion”,就能把修改后的返回值送还给浏览器了。

自动化呢?没错,人往往喜欢偷懒,如果每次要修改,岂不是很麻烦。

  • 选中想要拦截的请求,比如 /api/foo

  • 然后在 Request 面板选择 AutoResponder

  • 再选择 “Add Rule”

  • 在最下面的下拉框选择 “Create New Response...”

  • 然后 “Save”

此时会弹出一个对话框,跟 Response 面板的布局一样,在上面可以编辑返回值。

或者你直接把定义好的返回内容保存成文件,在刚才那个下拉框中选择该文件就行了。

模拟请求

右侧的 Composer 窗口可以模拟发送请求。

刚打开这个窗口的时候,应该是一片空白。你可以从左侧会话列表拖一个会话过去,这样就有预填的信息了,修改一下参数,点“Execute”,piu,一条请求就发送出去了。

接着在会话列表就可以查看服务端的返回值。

小结

其实 Fiddler 的官方文档上已经写得很全了,我只是稍微结合了平时的使用经验,仅仅把常用的功能罗列一下,希望可以帮助各位更快上手。毕竟,磨刀不误砍柴工


转自: https://segmentfault.com/a/1190000004240812

Robotium自动化测试框架实用教程(图)

一、简介 Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能...

机器学习实用教程(译)-3

数据清洗是机器学习当中最基础的环节,就像烹饪前对食材进行处理的步骤一样,是一道菜成败的关键环节。专业的数据科学家通常会花费大量时间在这个环节,毕竟有句话说的好:Better data beats fa...

第4章 ISE开发环境使用指南[FPGA开发实用教程]——4.3.5 功耗分析以及XPower的使用

1.功耗分析简介 在FPGA 设计中,功耗分析是成功设计的重要环节。针对 FPGA 设计中的功耗分析,Xilinx 公司推出了简单的速查表格和专用的功耗分析工具——XPower。对于开发初期的...
  • jbb0523
  • jbb0523
  • 2011年10月26日 16:35
  • 4142

【实用教程】阿里云服务器的配置和使用 iis

转载自:https://zhuanlan.zhihu.com/p/25235511 写文章 【实用教程】阿里云服务器的配置和使用 零蛋 3 个月前 随着网络应...

高光谱图像处理(5)----ENVI直方图实用教程(二)

善用直方图,还你美好明天           图像操作的刚开始,一般都是对点的操作,对像素的统计,而直方图是一个很好的帮助,它可以让你走进图像的世界,用数学的方法进行学习,从具体到抽象,然后从抽象再到...

实用教程|快速搭建自动导航机器人(一)

利用RPLIDAR A2与SLAMWARE,即可快速搭建可自动导航的机器人小车哦~
  • SLAMTEC
  • SLAMTEC
  • 2016年11月17日 11:57
  • 2763

sublime text3实用教程-安装js智能提示插件

在诸多工具中,Sublime Text无疑是一款利器,它界面优美、功能强悍、性能令人惊讶,需要注意的是,它并不是IDE,而是一个单纯的文本编辑工具,但其代码高亮显示、语法提示、自动完成且反应快速,还有...

安卓项目eclipse实用教程:设置应用名字和图标、屏幕、签名、真机调试、clean、logcat、json解析

安卓项目eclipse实用教程: 设置应用名字、图标、屏幕、签名、真机调试、clean、logcat、json解析...

【KRKR进阶实用教程】1、捕获鼠标位置——存档界面制作

测试测试测试测试

下巴长痘痘是什么原因?要怎么解决?(实用教程)

下巴长痘痘的原因   内分泌失调。有的是因为子宫或卵巢等生殖系统问题,或是加上通经、月经不调的显现,导致你的内分泌不正常,荷尔蒙分泌失衡,导致下巴痘痘的产生。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Fiddler实用教程
举报原因:
原因补充:

(最多只允许输入30个字)