当前位置: 首页 > news >正文

HTML与数据抓取:GET与POST方法详解

讲GET和POST就不能只讲GET和POST

你要讲HTTP请求的基本概念:

HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,主要用于Web浏览器与Web服务器之间的数据通信。HTTP是一个基于请求-响应模式的应用层协议,它定义了客户端如何向服务器发送请求以及服务器如何回应这些请求;

你要讲HTTP请求方法:

HTTP请求方法是指定对资源执行特定操作的指令。以下是几种主要的HTTP请求方法:

  • GET:用于请求读取数据,通常用来获取网页内容或其他资源;
  • POST:用于向服务器提交数据,常用于提交表单或上传文件;
  • PUT:用于更新指定资源或创建新资源(如果该资源不存在的话);
  • DELETE:用于删除指定资源;
  • HEAD:类似于GET请求,但只获取响应头部信息而不返回实体内容;
  • OPTIONS:用于获取服务器支持的请求方法;
  • PATCH:用于对资源进行部分更新;

你要讲HTTP状态消息:

HTTP状态消息(也称为状态行)是服务器响应的一部分,它告知客户端关于请求处理的结果。状态行由三部分组成:HTTP版本、状态码和原因短语(Reason Phrase)。其中,状态码是一个三位数字的代码,用来表示具体的响应类型;原因短语是对状态码的文字描述,帮助理解和解释状态码的意义;

HTTP 状态码分类

  • 1xx (信息性响应)表示请求已被接收,继续处理
  • 2xx (成功)表示请求已成功被服务器接收、理解并接受
  • 3xx (重定向):表示需要进一步的操作以完成请求;
  • 4xx (客户端错误):表示请求包含语法错误或者无法完成请求;
  • 5xx (服务器错误):表示服务器在尝试处理请求时发生了错误;

今天,我们重点讲解GET和POST。

1. 基本概念

GET请求

  • GET:请求数据的读取操作,常用于获取网页内容;
  • 参数附加在URL后:请求参数以查询字符串的形式(?key1=value1&key2=value2)附加在URL之后;
  • 数据通过URL传输:由于参数是URL的一部分,浏览器会记录访问的URL,这意味着用户可以直接分享链接或者将其保存为书签;

POST请求

  • POST:提交数据给服务器,通常用于提交表单或上传文件;
  • 参数包含在请求体中:与GET不同,POST请求的参数位于请求体(body)内,而不是URL中,这提供了更大的灵活性和安全性;
  • 数据隐蔽性:因为数据不显示在URL中,所以相对更隐蔽,减少了敏感信息泄露的风险;

2.GET和POST请求的区别

我们用更通俗易懂的方式来解释GET和POST请求的不同之处。想象一下你正在与朋友通信,你可以通过两种方式传递信息:写信(GET)或打电话(POST);

GET 请求 - 写信

  • 数据可见:就像你在明信片上写下消息一样,所有人都能看到上面的内容。在HTTP中,GET请求的数据会显示在URL中,任何人都可以通过浏览器地址栏看到这些信息
  • 长度限制:明信片的空间有限,你只能写少量的文字。同样,GET请求的参数是附加在URL后面的,而URL有长度限制,通常建议不超过2048个字符
  • 缓存支持:一旦你寄出了一张明信片,邮局可能会保存副本以便快速处理重复的请求。类似地,GET请求可以被浏览器缓存,下次访问相同链接时可以直接从缓存中读取,提高速度;
  • 幂等性:不管你寄多少次同样的明信片,收到的人看到的信息都是一样的。GET请求是幂等的,意味着多次相同的请求应该产生相同的结果,不会引起副作用;

POST 请求 - 打电话

  • 数据隐藏:当你打电话时,通话内容只有你和对方能听到。POST请求将数据放在请求体中,不会出现在URL里,因此更加私密,适合传递敏感信息;
  • 无长度限制:电话交谈没有时间限制,你可以聊很久。POST请求也没有对数据量的具体限制,理论上可以发送任意大小的数据,实际长度取决于服务器配置;
  • 不缓存:每次打电话都是新的对话,不能直接使用之前的通话记录。POST请求一般不会被缓存,确保每次提交的数据都是最新的,这对于动态数据(如表单提交)非常重要;
  • 非幂等性:如果你多次拨打同一个电话号码,可能会导致不同的结果,比如多次订购商品。POST请求是非幂等的,多次提交可能会产生不同的效果,因此需要小心避免重复提交;

HTTP 明文传输的风险

无论是GET还是POST请求,它们仅仅是HTTP协议中的两种不同请求方法,在传输层面上都使用相同的TCP/IP协议栈。当不带参数时,两者在报文格式上的主要区别仅在于请求行中的方法名(一个是GET,另一个是POST)。因此,只要使用的是标准HTTP协议,所有的通信都是以明文形式在网络上传输。这意味着任何位于客户端和服务器之间的中间节点(如路由器、代理服务器等)都可以轻松捕获并读取数据包的内容。对于敏感信息(如登录凭证、个人资料、支付信息等),这种明文传输带来的风险显然是不可接受的;

HTTPS 加密传输


为了确保数据的安全性和隐私性,HTTPS应运而生。HTTPS通过结合HTTP协议与SSL/TLS加密技术,提供了更安全的数据传输方式:

  • 加密通信:HTTPS对所有传输的数据进行加密,即使有人截获了数据包,也无法轻易解读其中的内容;
  • 数据完整性:SSL/TLS不仅加密数据,还保证了数据的完整性,防止数据在传输过程中被篡改;
  • 身份验证:HTTPS使用数字证书来验证服务器的身份,确保客户端连接的是正确的服务器,而不是恶意第三方伪装的服务器;

文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。

相关文章:

HTML与数据抓取:GET与POST方法详解

讲GET和POST就不能只讲GET和POST 你要讲HTTP请求的基本概念: HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,主要用于Web浏览器与Web服务器之间的数据通信。HTTP是一个基于…...

【es6复习笔记】模板字符串(3)

介绍 模板字符串是 ES6 引入的一种新的字符串声明方式,它使用反引号()来定义字符串,而不是单引号()或双引号(")。模板字符串可以包含变量、表达式和换行符,这使得它…...

cursor保存更改操作技巧

1. 当我们在agent模式时,要求cursor更改代码时,cursor回答后,就已经更改了代码了,这时候就可以对程序进行编译和测试, 不一定先要点” accept“, 先测试如果没有问题再点“accept”,这样composer就会多一条…...

ASP.NET |日常开发中定时任务详解

ASP.NET |日常开发中定时任务详解 前言一、定时任务的概念与用途1.1 定义1.2 应用场景 二、在ASP.NET中实现定时任务的方式2.1 使用System.Timers.Timer2.2 使用Quartz.NET 三、定时任务的部署与管理3.1 部署考虑因素3.2 管理与监控 结束语优质源码分享 ASP.NET &am…...

【零基础保姆级教程】制作自己的数据集(二)——Labelme的安装与使用及常见的报错解决方法

前段时间安装了Labelimg,网上有些博客写着Labelme能进行语义分割的标注,但UI窗口就那么大找不着选项,只能打矩形框,为了能够标注自己的分割数据集,遂写下该教程以供参考。 采用Labelimg进行目标检测标注的教程如下。 …...

Move AI技术浅析(二):输入与预处理

一、视频输入模块 1.1 视频输入步骤详解 视频输入模块的主要任务是接收视频数据,并将其转换为后续处理所需的格式。具体步骤: 1.1.1 视频读取 步骤:从文件系统、网络流或摄像头读取视频数据。技术:使用 OpenCV 的 cv2.VideoCa…...

实践KDTS-WEB从mysql迁移到kingbasev9

数据库国产化替代数据迁移是一个复杂且关键的过程。这涉及到将原有数据库中的数据准确、完整地迁移到新的国产数据库中,同时确保数据的完整性和一致性。人大金仓提供了强大的数据库迁移工具(KDTS)对同构、异构数据库数据迁移; 数…...

WebGIS实战开源项目:智慧机场三维可视化(学习笔记)

From:新中地 1.简介 智慧机场解决方案,基于数字化大平台,融合AI、大数据、IoT、视频云、云计算等技术,围绕机场“运控、安防、服务”三大业务领域,构建“出行一张脸”及“运行一张图”两大场景化解决方案。 https://…...

2025年PMP项目管理考试时间一览表

PMP认证是全球项目管理领域公认的权威认证,它不仅能证明你在项目管理方面的专业水平,还能大大提升你的职场竞争力! 随着企业对项目管理人才的需求不断增长,获得PMP认证将为你带来更多的职业机会和高薪职位。 为了帮助大家合理安排…...

20241224在ubuntu20.04.6下的终端分屏软件terminator的安装以及使用

20241224在ubuntu20.04.6下的终端分屏软件terminator的安装以及使用 2024/12/24 18:35 百度:终端分屏软件 https://blog.csdn.net/weixin_49693003/article/details/143683326 可以实现终端分屏的工具:terminator 安装: sudo apt-get insta…...

打造高效租赁小程序让交易更便捷

内容概要 在如今节奏飞快的商业世界里,租赁小程序如同一只聪明的小狐狸,迅速突围而出,成为商家与消费者之间的桥梁。它不仅简化了交易流程,还在某种程度上将传统租赁模式带入了互联网时代。越来越多的企业意识到,这种…...

光谱相机在农业中的具体应用案例

作物生长监测与产量预测 美国爱荷华州玉米种植园:农场主使用无人机搭载高光谱相机,定期对玉米田进行拍摄。通过分析光谱数据,获取玉米的叶面积指数、叶绿素含量等生长参数。在玉米生长关键期,依据这些参数及时调整施肥和灌溉方案…...

Linux RTC 驱动框架

目录 一、实时时钟(RTC)介绍1.1 概述1.2 功能1.3 应用场景1.4 工作原理1.5 对外接口1.6 常见 RTC 芯片1.7 在 Linux 系统中的应用1.8 注意事项 二、Linux 内核 RTC 驱动框架2.1 相关源码文件介绍2.2 核心数据结构2.2.1 struct rtc_device2.2.2 rtc_class…...

msyql数据库读写分离搭建

一.mysql读写分离:缓解主服务器的压力1.概念:主服务器写数据,从服务器读数据2.实现方法:客户端分离: 开发手动分离地址服务端分离: 数据库与应用之间加一个中间件,分离读写请求mysql-proxy,mysql-route,maxscaleamoeba,cobar,mycat2atlas,kingshard,vitees3.mycat配置方法:冷配…...

WWW23-多行为级联|级联图卷积网络的多行为推荐

论文:https://arxiv.org/abs/2303.15720 代码:https://github.com/SS-00-SS/MBCGCN 这篇论文MB-CGCN和上一篇CRGCN是同一个团队的,都是级联的方式。一个用了残差,一个用了特征转换,文章最后有discussion讨论了两者的不…...

【EthIf-14】EthIfGeneral容器配置-02

1.实际EthIfGeneral的配置实例 关闭DET接口开启发送确认中断开启接收中断主周期接收timeout主周期 2. 代码实例参考 阅读此部分代码,搞清楚代码分为几个section,大概瞄一眼就好,不用深究其含义,只需有一个宏观的层次结构的映像即可。 //Appl/GenData/EthIf_Cfg.h #...

近实时”(NRT)搜索、倒排索引

近实时(Near Real-Time, NRT)搜索 近实时(NRT)搜索是 Elasticsearch 的核心特性之一,指的是数据在被写入到系统后,可以几乎立即被搜索和查询到。虽然它不像传统数据库那样完全实时,但它的延迟通…...

Ubuntu20.04安装openMVS<成功>.colmap<成功>和openMVG<失败(已成功)>

一、安装openMVS 参考官方文档 sudo apt-get -y install git mercurial cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev eigen git clone https://gitlab.com/libeigen/eigen --branch 3.4 mkdir eigen_build cd eigen_build &&\cmake . ../eigen -…...

从测试服务器手动热部署到生产环境的实现

为了实现从测试服务器(192.168.0.255)手动热部署到生产环境(172.168.20.100),可以采用多种方法。以下是详细的步骤和最佳实践,帮助你实现这一目标。 1. 准备生产环境 确保生产环境上的 Docker 和 Docker …...

【c++高阶DS】图

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 目录 01.并查集02.图的介绍03.图的存储结构03.1.邻接矩阵03.2.邻接表03.3.矩阵版本代码实现03.4.邻接表版本代码实现 完整代码: 01.并查集 在一些应用问题中,需要将…...

React第十八节 useEffect 用法使用技巧注意事项详解

1、概述 useEffect 是React中一个用于 将组件与外部系统同步的 Hook;在函数式组件中处理副作用函数的 Hook,用于替代类式组件中的生命周期函数; 可以在副作用函数中 实现以下操作: a、请求接口,获取后台提供数据 b、操…...

C++ 指针基础:开启内存操控之门

1. 指针为何如此重要 在 C 编程领域,指针堪称一项极为关键的特性。它赋予了程序员直接访问和操控内存的能力,这使得程序在处理复杂数据结构与优化性能时具有更高的灵活性。想象一下,在编写大型程序时,高效地管理内存资源是多么重要…...

Nginx的stream模块代理四层协议TCP的流量转发

Nginx的stream模块是一个功能强大的工具,专门用于处理四层协议(即网络层和传输层,如TCP和UDP)的流量。以下是对Nginx stream模块的详细解析: 一、基本功能 Nginx的stream模块主要用于实现TCP和UDP数据流的代理、转发…...

UE5 渲染管线 学习笔记

兰伯特 SSS为散射的意思 带Bias的可以根据距离自动切换mip的卷积值 而带Level的值mipmaps的定值 #define A8_SAMPLE_MASK .a 这样应该就很好理解了 这个只采样a通道 带Level的参考上面的 朝左上和右下进行模糊 带Bias参考上面 随机数 4D 3D 2D 1D...

Echarts连接数据库,实时绘制图表详解

文章目录 Echarts连接数据库,实时绘制图表详解一、引言二、步骤一:环境准备与数据库连接1、环境搭建2、数据库连接 三、步骤二:数据获取与处理1、查询数据库2、数据处理 四、步骤三:ECharts图表配置与渲染1、配置ECharts选项2、动…...

Electron 学习笔记

目录 一、安装和启动electron 1. 官网链接 2. 根据文档在控制台输入 3. 打包必填 4. 安装electron开发依赖 5. 在开发的情况下打开应用 6. 修改main为main.js,然后创建main.js 7.启动 二、启动一个窗口 1. main.js 2. index.html 3. 隐藏菜单栏 三、其他…...

Debian 12 安装配置 fail2ban 保护 SSH 访问

背景介绍 双十一的时候薅羊毛租了台腾讯云的虚机, 是真便宜, 只是没想到才跑了一个月, 系统里面就收集到了巨多的 SSH 恶意登录失败记录. 只能说, 互联网真的是太不安全了. 之前有用过 fail2ban 在 CentOS 7 上面做过防护, 不过那已经是好久好久之前的故事了, 好多方法已经不…...

http反向代理

通过反向代理实现访问biying,目前访问一些网站需要绕过cloudfare还没有解决,代码如下: from fastapi import FastAPI, Request from fastapi.responses import StreamingResponse import httpx import uvicorn import logging# 设置日志 logging.basicConfig(level=logging.…...

java12.24日记

运算符: 算术运算符: 顾名思义进行算数运算的 多为:四则运算,加一个取余 ,-,*,/以及 %(取余) 而外的:自增 以及自减--,对原数进行1或者-1 i…...

vue中proxy代理配置(测试一)

接口地址:http://jsonplaceholder.typicode.com/posts 1、配置一(代理没起作用) (1)设置baseURL为http://jsonplaceholder.typicode.com (2)proxy为 ‘/api’:’ ’ (3&a…...