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的断点功能非常强大,关于它的进一步学习和应用,须要一个不断积累和摸索的过程。

时间: 2024-10-13 16:22:53

Python进阶(三十五)-Fiddler命令行和HTTP断点调试的相关文章

【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试

转:http://blog.csdn.net/ohmygirl/article/details/17855031 一. Fiddler内置命令. 上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都成为一个session)界面中可以看到Fiddler抓取的所有HTTP请求.而为了更加方便的管理所有的session, Fiddler提供了一系列内置的函数用于筛选和操作这些session(习惯命令行操作l

(转)Fiddler使用手册(三)------Fiddler命令行和HTTP断点调试

0x00 Fiddler内置命令 上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都成为一个session)界面中可以看到Fiddler抓取的所有HTTP请求.而为了更加方便的管理所有的session, Fiddler提供了一系列内置的函数用于筛选和操作这些session(习惯命令行操作linux的童鞋应该可以感受到这会有多么方便).输入命令的位置在web session管理面板的下方(通过快捷键a

【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试(转)

一. Fiddler内置命令. 上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都成为一个session)界面中可以看到Fiddler抓取的所有HTTP请求.而为了更加方便的管理所有的session, Fiddler提供了一系列内置的函数用于筛选和操作这些session(习惯命令行操作linux的童鞋应该可以感受到这会有多么方便).输入命令的位置在web session管理面板的下方(通过快捷键al

Fiddler命令行和HTTP断点调试

转载:http://blog.csdn.net/ohmygirl/article/details/17855031 一. Fiddler内置命令. 上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都成为一个session)界面中可以看到Fiddler抓取的所有HTTP请求.而为了更加方便的管理所有的session, Fiddler提供了一系列内置的函数用于筛选和操作这些session(习惯命令行操作

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据 ??matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. ??它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. ??在Linux下比较著名的数据图工具还有gnuplot

Python进阶(三十六)-Web框架Django项目搭建全过程

Python进阶(三十六)-Web框架Django项目搭建全过程 ??IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 ??Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句. 自带的强大的后台功能 几行简单的代码就让你的网

Python进阶(三十四)-Python3多线程解读

Python进阶(三十四)-Python3多线程解读 线程讲解 ??多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度. 程序的运行速度可能加快. 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. ??线程在执行过程中与进程还是有区别的.每个独立

Java进阶(三十五)java int与integer的区别

Java进阶(三十五)java int与integer的区别 前言 int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象. 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者而integer 是后者(也就是一个类):因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为null. 2.初始化时: int i =1; Integer i= new In

python 学习三十五天(socket的更多方法)

1.黏包 2.socket的更多方法介绍 3.验证客户端连接合法性 4.socketserver模块 一.黏包 1.现象: res=subprocess.Popen(cmd.decode('utf-8'), shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE) 的结果的编码是以当前所在的系统为准的,如果是windows,那么res.stdout.read()读出的就是GBK编码的,在接收端需要用GBK解码 且只能从管道里读一次结果