• 利用Fiddler初识HTTP协议(一)


    最近在学习HTTP协议,确实挺久没更新了,在备考四级和蓝桥杯校内筛选,等过完这阵狂更,争取超过这个博主的数量 HER

    介绍HTTP协议作用

    首先解决第一个问题,HTTP协议干什么用?
    HTTP是位于TCP/IP五层模型中应用层特别常见的应用层协议,有关TCP/IP模型的各层后续再更一篇博客详细介绍。
    像你的电脑浏览器打卡一个网页,必定是要和服务器进行交互,怎么交互? 我们可以通过HTTP协议
    同样的手机APP的使用也离不开和服务器进行交互,怎么交互?最常用的还是HTTP协议。

    QQ录屏20221110154044 00_00_00-00_00_30

    像上图这样,在浏览器地址栏,输入一串url后按下enter,我们这样就算像服务器发送发送了一个请求。
    同时服务器返回一个响应,并通过浏览器渲染出来就看到了百度搜索这个界面

    image-20221110154623099

    HTTP协议是最经典的一问一答模型的协议

    那学习HTTP到底要学啥,学的是HTTP协议的报文格式,学明白了HTTP协议的报文格式,也就明白了请求里面是啥,响应里面又是啥。

    通过Fiddler捕捉交互

    想要学明白HTTP协议的报文格式,首先我们要使用一个所谓的‘抓包工具’来捕获到HTTP请求和响应的交互情况

    什么是抓包工具?抓包工具也称为‘代理程序’,我们使用浏览器给服务器发送请求就会被这个抓包工具捕获到,通过这个代理程序,进一步就可以分析出请求和响应的结果如何。

    image-20221110155617030

    我们作为程序员,就可以借助代理程序知道浏览器和服务器之间具体的交互细节

    给自己挖个坑:代理之间还分为正向代理和反向代理,具体是啥以后有机会说~

    安装过程不多赘述,推荐安装Fiddler classic版本

    我们来看看他捕捉的效果如何,当我们在浏览器地址栏输入www.baidu.com并访问时,此时Fiddler马上就捕获了一大批的HTTP请求和响应

    QQ录屏20221110160736 00_00_00-00_00_30

    接下来继续介绍Fiddler如何使用:

    image-20221110161355560

    左侧:抓到的请求列表

    电脑上每时每刻都会有应用程序通过http协议传输数据,都能被fiddler抓到,也就是为什么上面的动图中我在还没有输入网址时候就已经开始捕获到一些请求了

    image-20221110161442939

    右侧:双击左侧的某个你想关注的请求详细,就会在右侧窗口显示出请求的具体情况
    image-20221110161843616

    怎么样查看HTTP请求的内容呢?
    image-20221110162025235

    注意:到这个了么?

    image-20221110162520787

    这是因为响应太大了,点击这里解压缩,下面响应格式的一些乱码也可以正常显示出来了

    至此,我们就通过了fiddler捕获到了一个完整的客户端和服务器通过HTTP协议进行交互的完整情况。

    HTTP协议格式

    HTTP请求

    image-20221110164111069

    1.首行:image-20221110164209523

    image-20221110164451856

    2.请求头:header

    image-20221110164523915

    按行组织的键值对,里面的每一行都是一个键值对,通过 : 来分割键和值

    3.空行

    image-20221110164705732

    一个HTTP请求的header可以有若干的,使用空行作为每个header的结束标记
    4.正文body(有的请求有,有的请求没有)
    image-20221110164858688

    总结:image-20221110165305286

    HTTP响应

    image-20221110165349373

    1.首行

    image-20221110165740776

    2.响应报头headerimage-20221110165815340

    按行组织的键值对,里面的每一行都是一个键值对,通过 : 来分割键和值

    3.空行

    image-20221110165851032

    作为header的结束标记

    4.正文body
    image-20221110165925623

    正文可以是json数据,也可以是html,也可以是css/JS,也可以是图片…

    总结:

    image-20221110170158154

  • 相关阅读:
    (八)Linux搭载4G模块——PDU短信格式的获取与解码
    day072:UDP协议发送数据、接收数据(DatagramSocket、DatagramPacket);TCP协议发送数据、接收数据(Socket、ServerSocket)
    操作系统进程调度算法的模拟实现(c语言版本)
    C语言 const详解
    温度、机械振动等对电子产品的影响
    DHCP 服务器
    LeetCode | 只出现一次的值(python解法)
    vue项目实际开发的问题及实用技巧分享(二)
    基于SSM的疫情期间高校师生外出请假管理系统设计与实现
    three.js 第八节 - gltf加载器、解码器
  • 原文地址:https://blog.csdn.net/qq_36935038/article/details/127792406