Python进阶(三十五)-Fiddler命令行和HTTP断点调试
Python进阶(三十五)-Fiddler命令行和HTTP断点调试
一. Fiddler内置命令
上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都称为一个session)。界面中能够看到Fiddler抓取的全部HTTP请求.而为了更加方便的管理全部的session, Fiddler提供了一系列内置的函数用于筛选和操作这些session(习惯命令行操作Linux的童鞋应该能够感受到这会有多么方便).输入命令的位置在web session管理面板的下方(通过快捷键alt+q能够focus到命令行).
Fiddler内置的命令有例如以下几种:
1. select命令
选择全部对应类型(指content-type)为指定类型的HTTP请求,如选择图片。使用命令select image.而select css则能够选择全部对应类型为css的请求。select html则选择全部响应为HTML的请求(怎么样,是不是跟SQL语句非常像?)。
如图是运行select image之后的结果:
2. allbut命令
allbut命令用于选择全部响应类型不是给定类型的HTTP请求。如allbut image用于选择全部对应类型不是图片的session(HTTP请求),该命令另一个别名keeponly.须要注意的是。keeponly和allbut命令是将不是该类型的session删除。留下的都是该类型的响应。因此,如果你运行allbut xxxx(不存在的类型),实际上相似与运行cls命令(删除全部的session, ctrl+x快捷键也是这个作用)。
3. ?
text命令
选择全部 URL 匹配问号后的字符的全部 session。
4. >size 和
5. =status命令
选择响应状态等于给定状态的全部HTTP请求。
比如,选择全部状态为200的HTTP请求:=200
6. @host命令
选择包括指定 HOST 的全部 HTTP请求。
比如:@csdn.NET选择全部host包括csdn.Net的请求
7. Bpafter。 Bps, bpv, bpm, bpu
这几个命令主要用于批量设置断点
- Bpafter xxx: 中断 URL 包括指定字符的全部 session 响应
- Bps xxx: 中断 HTTP 响应状态为指定字符的全部 session 响应。
- Bpv xxx: 中断指定请求方式的全部 session 响应
- Bpm xxx: 中断指定请求方式的全部 session 响应。等同于bpv xxx
- Bpu xxx:与bpafter相似。
当这些命令没有加參数时,会清空全部设置了断点的HTTP请求。
很多其它的其它命令能够參考Fiddler官网手冊。
二.使用Fiddler进行HTTP断点调试
这是Fiddler又一强大和有用的工具之中的一个。通过设置断点,Fiddler能够做到:
改动HTTP请求头信息。
比如改动请求头的UA, Cookie, Referer 信息,通过“伪造”对应信息达到达到对应的目的(调试,模拟用户真实请求等)。
构造请求数据,突破表单的限制,任意提交数据。
避免页面js和表单限制影响相关调试。
拦截响应数据,改动响应实体。
为什么以上方法是重要的?如果js前端程序猿和server程序猿是分工合作的。js程序猿想要调试Ajax请求的功能,这样便不必等待server端程序猿开发好全部接口之后再開始开发js端的ajax请求功能,由于通过“模拟”真实的server端的响应,便能够保证功能的正确性,而server端开发程序猿,仅仅要保证终于的响应是符合规定的就可以。
这大大简化了程序开发的效率,当然也减少了不同业务线程序猿联调的难度。
有两种方法设置断点:1.fiddler菜单条->rules->automatic Breakpoints->选择断点方式,这样的方式下设定的断点会对之后的全部HTTP请求有效。 有两个断点位置:
a. before response。也就是发送请求之后,可是Fiddler代理中转之前,这时能够改动请求的数据。
b.after response。也就是server响应之后,可是在Fiddler将响应中转给client之前。这时能够改动响应的结果。
2.命令行下输入。Bpafter xxx或者bpv,bpu,bpm等设置断点。
这样的断点仅仅针对特定类型的请求。
我们以本地的web项目为例,演示怎样简单的设置HTTP断点:
1.首先设置Firefox的代理,使之能够抓取全部的HTTP请求(localhost的请求,也能够在filter中设置仅仅抓取intranet请求),设置例如以下图所看到的:
- 这时用web打开本地的项目。
页面的内容为:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VuaHVhcWlhbmcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">
- 设置响应后断点(after response breakpoint),能够通过命令行设置:bpafter localhost。键入回车之后。web再次訪问文件。通过Fiddler的web session界面能够看到。请求已经被挂起来了,而web浏览器也一直处于载入的状态。观察右側的inspector面板下,也出现了新的东西:
这时我们就能够改动响应的信息了。
改动过程为:
切换到textView子面板,选择须要改动的部分。然后点击 “run to complete“,便可回送改动后的响应。如果我们改动后的内容例如以下:
点击运行后。打开刚刚的web界面。
能够看到的页面的变化。
可见。页面的响应已经有了对应的变化。这就是响应后断点。
当然实际应用中。断点的设置和响应的改动会比这复杂的多,这里仅仅是主要的演示样例。
终止断点的方式有:
- 在inspector界面点击“run complete“即会终止本次HTTP请求的断点。
- 输入Go命令。也会使得当前的请求跳过断点。
- 在rules->auto breakpoint中disabled断点就可以。
总之。Fiddler的断点功能非常强大,关于它的进一步学习和应用,须要一个不断积累和摸索的过程。
Python进阶(三十五)-Fiddler命令行和HTTP断点调试的更多相关文章
- 【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试
一. Fiddler内置命令. 上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都成为一个sessio ...
- Fiddler命令行和HTTP断点调试
fiddler设置断点: fiddler->rules->automatic Breakpoints->选择断点方式,这种方式下设定的断点会对之后的所有HTTP请求有效. 有两个断点 ...
- 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容
孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...
- Java进阶(三十五)java int与integer的区别
Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...
- Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)
简介 前边介绍的都是通过按钮点击启动按钮来启动appium服务,有的小伙伴或者童鞋们乍一听可能不信,或者会问如何通过命令行启动appium服务呢?且听宏哥一一道来. 一睹为快 其实相当的简单,不看不知 ...
- 网站开发进阶(三十五)JSP页面中的pageEncoding和contentType两种属性
JSP页面中的pageEncoding和contentType两种属性 本文介绍了在JSP页面中经常用的两种属性,分别是pageEncoding和contentType,希望对你有帮助,一起来看. 关 ...
- python第三十五天-----作业完成--学校选课系统
选课系统:角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. 课程包含, ...
- 笨办法学Python(三十五)
习题 35: 分支和函数 你已经学会了 if 语句.函数.还有列表.现在你要练习扭转一下思维了.把下面的代码写下来,看你是否能弄懂它实现的是什么功能. from sys import exit def ...
- python学习三十五天函数递归的用法
python函数递归就是自己调用自己,无限循环,但是python限制了调用的次数1000次,就会终止,递归用在栏目分类,采集程序比较多,下面简单说函数递归用法和实例 1,函数递归用法 def func ...
随机推荐
- golang 学习笔记 ---数组/字符串/切片
数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成.数组的长度是数组类型的组成部分.因为数组的长度是数组类型的一个部分,不同长度或不同类型的数据组成的数组都是不同的类 ...
- android控件拖动,移动、解决父布局重绘时控件回到原点
这是主要代码: 保证其params发生改变,相对于父布局的位置就能达到位置移动到原来的位置 // 每次移动都要设置其layout,不然由于父布局可能嵌套listview,当父布局发生改变冲毁(如下拉刷 ...
- ajaxupload.js调用始终进入error回调
现象:脚本调用成功,文件上传也成功,但是始终进入error的回调函数. 1. ajaxfileupload.js jQuery.extend({ handleError: function( s, x ...
- JavaWeb下载文件response
以下代码在 chrome.firefox,安卓自带手机浏览器上测试通过,但未经过完全测试,先记录下 public static void downLoadFile(HttpServletRequest ...
- PySpark 行列转换
Spark实现行列转换pivot和unpivot 背景 做过数据清洗ETL工作的都知道,行列转换是一个常见的数据整理需求. 首先明确一下啥叫行列转换,因为这个叫法也不是很统一,有的地方叫转置,有的地方 ...
- CommonView for wifi抓包破解WPA无线网络
运行环境:win8 64位+intel 5100n网卡 步骤1:下载CommonView完全破解版,非破解版只有跑10分钟 http://www.nlver.cn/soft/7305.html 步骤2 ...
- Matlab的集合运算[转]
今天遇到一个问题:有向量a和向量b,b是a的子向量(元素全部来自a),求向量a去掉向量b后剩下的元素构成的向量. 这么一个简单的问题,搜了半天也没有得到结果,因为找不到合适的关键词来描述这个问题. 在 ...
- Java常考面试题(三)
序言 说说今天遇到的一件小事吧,在遇到问题,查找答案时,看到很多人的博客里面都有提到关键字眼,可让人觉得可恨的是,大多数人写的博文中,基本上都是照着书上的语言发表的,看了跟没看一样,没有一点通俗的语言 ...
- IE报错:The given path's format is not supported
在使用FileUpload控件进行上传EXCEL文件时,本地调试上传无问题,但是发布之后报地址无效错误 一.出现这个错误的主要原因是,在本地上传图片的时候HttpPostedFileBase对象里面保 ...
- 四步法分析定位生产环境下MySQL上千条SQL中的问题所在
第一步:通过以下两种方式之一来打开慢查询功能 (1)方式一:通过修改mysql的my.cnf文件 如果是5.0或5.1等版本需要增加以下选项: log-slow-queries="mysql ...