我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步
今天来讲一讲Fiddler
什么是Fidder
Fiddler是一款非常流行并且实用的HTTP抓包工具,原理是在电脑上开启一个HTTP代理服务器,然后转发所有的HTTP请求和响应。是用C#开发的工具,包含一个简单却功能强大的基于JScript.NET事件的脚本子系统,灵活性非常棒,可以支持众多的HTTP调试任务,并且能够使用.net框架语言进行扩展。一般来说其要比浏览器自带的抓包工具(开发者模式好用)。Fiddler这个工具有一种很厉害的技能,叫断点调试。就好像是在一条高速公路上,本来车(HTTP通信)都在快速跑,但Fiddler可以设置一个检查点,当车(请求或响应)符合它设定的条件(跟目标标准相匹配)时,它就会让车停下来(暂停HTTP通信)。停下来之后,还能对车进行一些调整(修改请求和响应)。这个功能对于检查安全问题特别有用,用来做普通的功能测试也不错。
为什么需要抓包软件
因为很多的逻辑错误没有办法直接通过静态代码分析检查出来
1.逻辑错误
逻辑错误是指代码在语法上没有问题,但执行结果不符合预期。这种错误无法通过静态代码分析工具直接检查出来,因为代码本身没有语法问题,只是逻辑设计不合理。
示例:
int calculate(int a, int b) {
return a - b; // 本应是 a + b,但写成了 a - b
}
这段代码在语法上完全正确,但逻辑上是错误的,因为函数名`calculate`暗示应该是加法运算,但实际执行的是减法运算。这种逻辑错误需要通过测试和运行程序来发现。
2.运行时错误
运行时错误是指代码在运行过程中才会出现的错误,静态代码分析工具通常无法检测到。
示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = malloc(10 * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed\n");
return 1;
}
ptr[10] = 10; // 越界访问
free(ptr);
return 0;
}
这段代码中,`ptr[10] = 10;`会导致数组越界访问,这是一个运行时错误。虽然静态代码分析工具如Cppcheck可以检测到一些简单的数组越界问题,但复杂的运行时错误(如竞态条件、死锁等)通常需要通过运行时调试工具(如Valgrind)来检测。
3.安全漏洞
某些安全漏洞可能无法直接通过源代码的报错检查出来,因为它们可能隐藏在复杂的逻辑或外部输入中。
示例:
<?php
$name = $_POST['name'];
$message = $_POST['message'];
$sql = "INSERT INTO messages (name, message) VALUES ('$name', '$message')";
// SQL注入漏洞
?>
这段代码存在SQL注入漏洞,因为没有对用户输入进行过滤。虽然静态代码分析工具(如Fortify)可以检测到一些常见的安全漏洞,但复杂的漏洞可能需要结合动态测试和安全审计才能发现。
4.性能问题
性能问题通常与代码的运行效率有关,无法通过静态代码分析直接检查出来。
示例:
int sum = 0;
for (int i = 0; i < 1000000; i++) {
sum += i;
}
这段代码在语法上没有问题,但性能较差,因为它使用了一个简单的循环来计算总和。这种性能问题需要通过性能分析工具(如gprof)来检测。
5.复杂语义问题
一些复杂的语义问题可能无法通过静态代码分析工具直接检查出来,因为它们需要理解代码的上下文和运行时行为。
示例:
int compare(int a, int b) {
if (a > b) {
return 1;
} else if (a < b) {
return -1;
}
// 缺少 return 0 的情况
}
这段代码在语法上没有问题,但缺少了`return 0`的情况,这可能导致未定义行为。这种问题需要通过代码审查和测试来发现。
Fiddler安装
Fiddler在Windows下可直接使用exe安装包安装,安装包可在官方网站下载(https://www.telerik.com/download/fiddler)。

点击后选择基础版的即可
Fiddler用户界面
Fiddler用户界面主要包括下面6个部分:
(1)图中标注1为Main Menu(主菜单),作用于整个Fiddler相关配置。
(2)图中标注2为Toolbar(工具栏),主要对Web Session操作处理。
(3)图中标注3为Web Session(列表),显示已抓取的HTTP请求信息。
(4)图中标注4为View(选项视图),显示每条HTTP的详细信息。
(5)图中标注5为Quickexec(命令行),通过特定的条件快速找到符合条件的HTTP请求。
(6)图中标注6为Status bar(状态栏),显示当前状态信息。

协议配置
要实现抓取还需要对HTTPS协议进行配置,打开tools并且对相关的选项更改:

要注意的是要连的一定是网络,像笔者这样在寝室里用的有限宽带是抓不到的
分析请求
Toolbar:
常见的功能和快捷键如下:

web session:

web session主要以表格的形式呈现,提供了有关请求响应的一些基本信息,我们还可以发现,不同的请求信息有不同的颜色和图标:

、
通过一些快捷键我们也可以对请求实现更改


view
想用fiddler做爬虫必须掌握以下四个选项视图:


Inspectors:
• 布局:Inspectors被划分为上下两个功能区。这种布局设计可能是为了方便用户同时查看请求和响应的信息,提高工作效率。
• 功能区的作用:
• 上面的功能区:显示用户发送的请求信息。这包括用户通过浏览器或其他工具向服务器发送的各种数据,如请求头、请求参数等,帮助用户了解自己发送的请求内容。
• 下面的功能区:显示服务器响应的内容。这部分展示了服务器对用户请求的处理结果,如响应头、响应体等,方便用户查看服务器的反馈。
• 选项视图:每个功能区里又划分了多个选项视图,用于展示不同类型的信息:
• Headers选项视图:显示请求头和响应头。请求头包含了请求的元数据,如请求方法、请求的资源路径、客户端信息等;响应头则包含了服务器对请求的处理结果的元数据,如响应状态码、内容类型等。通过查看Headers选项视图,用户可以快速了解请求和响应的基本信息。
• WebForm选项视图:显示发送请求的请求参数。在Web开发中,请求参数通常通过表单提交等方式发送给服务器。这个选项视图可以帮助用户查看表单中的参数值,便于调试和分析。
• xxxView选项卡:显示各种类型的数据内容。这里的"xxx"可能是一个占位符,表示具体的视图名称会根据数据类型而变化。例如,可能有JSONView用于显示JSON格式的数据,TextView用于显示文本内容等,方便用户根据不同的数据类型查看和分析数据。
AutoResponder和Composer工具的适用性分析
• AutoResponder:
• 功能特点:主要用于Web开发调试。它可能具有自动响应请求、模拟服务器行为等功能,帮助Web开发者快速定位和解决问题。
• 在爬虫开发中的实用性:在爬虫开发中,实用性不强。这可能是因为爬虫开发更关注如何从服务器获取数据,而不是模拟服务器的响应行为。爬虫开发者通常需要关注如何解析网页内容、处理反爬机制等问题,而AutoResponder的功能与这些需求的契合度较低。
• Composer:
• 功能特点:能够实现对服务器的请求。它可能是一个用于构造和发送HTTP请求的工具,方便用户自定义请求参数、请求头等。
• 在Fiddler中的适用性:在Fiddler中使用Composer编写代码显得本末倒置。Fiddler是一个网络调试工具,主要用于捕获和分析网络流量,而不是用于编写代码。如果需要实现对服务器的请求,直接使用Python等编程语言可能更加高效和灵活。Python具有强大的网络请求库(如requests库),可以方便地实现各种复杂的请求逻辑,并且可以与其他功能(如数据解析、存储等)紧密结合,更适合爬虫开发等场景。
Quickexec命令行

通过这个功能我们可以实现对于请求信息的快速查找:
基本使用
• 输入命令:在 Quickexec 命令行中输入特定的命令,例如输入"?log",系统会根据该命令查找符合条件的请求信息。
• 查看结果:当输入命令后,Web Session 列表会自动将符合条件的请求信息以高亮显示,方便用户快速定位和查看。同时,在下方状态栏可以看到符合条件的请求总数。
命令格式
• 问号开头:命令通常以问号"?"开头,后跟需要查找的关键字,如"?log"表示查找与"log"相关的请求信息。
• 关键字匹配:关键字可以根据具体需求输入,系统会匹配包含该关键字的请求内容,从而快速筛选出符合条件的请求。
使用场景
• 快速定位特定请求:当用户需要在大量的请求信息中快速找到特定类型的请求时,Quickexec 命令行可以快速定位,提高工作效率。例如,查找特定格式的文件请求、特定接口的请求等。
• 辅助分析:在进行网络分析、安全测试等场景中,通过快速查找特定的请求信息,可以帮助用户更快地发现问题或关注的重点内容。
需要注意的是,Quickexec 命令行的使用可能依赖于具体的软件环境和工具,不同的工具可能会有一些细微的差别和扩展功能。