抓包软件【Fiddler】

我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步

今天来讲一讲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 命令行的使用可能依赖于具体的软件环境和工具,不同的工具可能会有一些细微的差别和扩展功能。

相关推荐
禁止摆烂_才浅17 分钟前
前端开发小技巧 - 【CSS】- 表单控件的 placeholder 如何控制换行显示?
前端·css·html
烂蜻蜓19 分钟前
深度解读 C 语言运算符:编程运算的核心工具
java·c语言·前端
PsG喵喵24 分钟前
用 Pinia 点燃 Vue 3 应用:状态管理革新之旅
前端·javascript·vue.js
鹏仔工作室24 分钟前
vue h5实现车牌号输入框
前端·javascript·vue.js
冴羽41 分钟前
SvelteKit 最新中文文档教程(11)—— 部署 Netlify 和 Vercel
前端·javascript·svelte
曹天骄1 小时前
react-hook-form 和 @tanstack/form 比较
前端·react.js·前端框架
IT、木易1 小时前
如何在 React 项目中进行服务器端渲染(SSR),它有什么优势
前端·react.js·前端框架
风清云淡_A1 小时前
【react18】react项目使用mock模拟后台接口
前端·react.js
知识分享小能手2 小时前
CSS3学习教程,从入门到精通,CSS3 定位布局页面知识点及案例代码(18)
前端·javascript·css·学习·html·css3·html5
Python私教2 小时前
Vue 在现代 Web 开发中的优势
前端·javascript·vue.js