经常有人说抓包抓包,很极客的感觉,其实就是利用工具分析网络请求和响应而已。用工具,谁不会呢?对吧。恰好有个QA同学曾问我,怎么模拟出这种情况,怎么模拟出那种情况,等写完就把博客链接发给她好了。 本文介绍的工具是 Fiddler,它能够在本机和服务端之间建立一个代理,通过这个代理,可以对所有经过的请求和响应进行拦截、修改、分析等。理论上说,只要你使用的软件支持代理,都可以用 Fiddler 进行拦截,包括浏览器、命令行等。 类似的软件有很多,比如 WireShark、HttpWatch 等,如果只是模拟发请求的话,Chrome 中有几个插件也很不错,比如 Postman、REST Client 等。 基本术语会话(Session)不同于服务端的 Session,这里仅仅指一次HTTP请求而已。会话面板在工具左侧,如下图所示。 图中显示了三条请求,每一列的具体含义都很清晰,认识英文单词就能懂了。 只是左边 # 号下的图标,帮各位找了一下,见下图。 默认情况下,一旦开启 Fiddler,就会走它的代理。有时候你想暂停这种行为,那请看到左下方有个状态栏。 单击一下左边的 Capturing,就能停止拦截,想再开启,就再单击一下。 它的右边是会话的来源,可以设置仅仅拦截浏览器发出的请求。 再右边有三种选择:1、在请求发出之前进行断点;2、在响应回来的时候进行断点;3、不设断点。 审查(Inspector)随便单击一条会话,右侧就会显示详细信息。 题外话,我觉得教程的意义在于,当你对某种新事物不熟悉的时候,帮助你了解一下而已。tutorial 和 reference 之间是有点区别的。 所以这里就挑一些足够使用的 tab 来解释一下。首先,这里有上下两栏,上面是 Request,下面是 Response。 Request 中有三个比较厉害的:
Response 中常用也列三个吧:
QuickExec抱歉这么快就要讲命令行,实在是因为它太有用了。它位于状态栏的上方,有个 QuickExec 的提示,非常显眼。 其实,当你看到它的时候,就已经会了第一个命令
输入
其他的高亮功能还有:=(匹配请求方法或状态码)、@(匹配host)、select(匹配MIME)。
设置断点按照之前介绍的,在状态栏启用断点(无论是请求断点,还是响应断点)后,所有的请求都会中断。 事实上,一个网页加载时,会触发很多异步请求。甚至在加载完成后,也还会不停地发送异步请求,比如现在很流行的二维码登录页面。拦截所有请求似乎显得不太合适。 而在上一节其实留了断点的命令行没有介绍。断点即 breakpoint,所有跟断点相关的都是以 bp 为前缀。
用不带参数的命令可以清除断点,比如 url 的匹配方式是判断“字符串是否包含”,比如 如果忘了这些命令,在命令行输入 bp ,敲回车,就能看到提示了。bp is short for breakpoint,这个能记住吗? 模拟返回值想要模拟返回值,首先要设置响应断点。
当满足条件的响应回来时,选中该会话,就可以看到如图所示的面板。选择 Raw 视图(其他也可以,Raw 可以修改更多的内容),然后可以清楚地看到,服务端返回的内容是
把上面的 M 修改成 F,然后单击“Run to Completion”,就能把修改后的返回值送还给浏览器了。 自动化呢?没错,人往往喜欢偷懒,如果每次要修改,岂不是很麻烦。
此时会弹出一个对话框,跟 Response 面板的布局一样,在上面可以编辑返回值。 或者你直接把定义好的返回内容保存成文件,在刚才那个下拉框中选择该文件就行了。 模拟请求右侧的 Composer 窗口可以模拟发送请求。 刚打开这个窗口的时候,应该是一片空白。你可以从左侧会话列表拖一个会话过去,这样就有预填的信息了,修改一下参数,点“Execute”,piu,一条请求就发送出去了。 接着在会话列表就可以查看服务端的返回值。 小结其实 Fiddler 的官方文档上已经写得很全了,我只是稍微结合了平时的使用经验,仅仅把常用的功能罗列一下,希望可以帮助各位更快上手。毕竟,磨刀不误砍柴工。 |
|