常见请求方法及状态码分析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、常见的请求方法
    • [1.1 GET](#1.1 GET)
    • [1.2 POST](#1.2 POST)
    • [1.3 PUT](#1.3 PUT)
    • [1.4 DELETE](#1.4 DELETE)
    • [1.5 HEAD](#1.5 HEAD)
    • [1.6 OPTIONS](#1.6 OPTIONS)
    • [1.7 TRACE](#1.7 TRACE)
    • [1.8 CONNECT](#1.8 CONNECT)
    • [1.9 其他说明](#1.9 其他说明)
  • 二、状态码的分类
    • [2.1 1xx(信息性状态码):](#2.1 1xx(信息性状态码):)
    • [2.2 2xx(成功状态码):](#2.2 2xx(成功状态码):)
    • [2.3 3xx(重定向状态码):](#2.3 3xx(重定向状态码):)
    • [2.4 4xx(客户端错误状态码):](#2.4 4xx(客户端错误状态码):)
    • [2.5 5xx(服务器错误状态码):](#2.5 5xx(服务器错误状态码):)

前言

python爬虫学习笔记记录


正式上班之后,发现其实逆向并不是一切,有很多情况,一整个完整的项目逆向可能只占其中工作量的五分之一甚至更少,有对于各类基础知识的掌握之后,才会有更清晰的学习方向,就像是盖房子一样,有坚实可靠的地基,房子才会稳定,而不是空中阁楼

一、常见的请求方法

http协议规定了 浏览器与服务器进行数据交互的过程中必须要选择一种交互的方式,在http协议中,定义了八种请求方式

1.1 GET

用途:用于请求指定的页面信息,并返回实体主体。

特点:GET请求是一种无状态、幂等的请求方法。它通常用于获取数据,比如打开网页、获取文章内容等。GET请求的参数通过URL传递,并且在请求的URL中可见。由于GET请求的数据被包含在URL中,因此不适合传输敏感信息或大量数据。

安全性:相对较低,因为URL中的参数可以被缓存和记录在历史中。

1.2 POST

用途:用于向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。

特点:POST请求将数据放在请求的消息体中发送,而不是作为URL的一部分。因此,它适合发送大量数据或执行敏感操作。POST请求常用于提交表单数据或上传文件。由于数据在消息体中,所以POST请求相对更安全。

安全性:相对较高,因为数据在请求体中,不会在URL中暴露。

1.3 PUT

用途:用于更新资源。

特点:PUT请求会替换目标资源的所有当前表示形式。它通常用于上传或更新文件,并且客户端需要知道要更新的完整资源。

1.4 DELETE

用途:用于删除指定的资源。

特点:DELETE请求是幂等的,即无论发送多少次,结果都是相同的------资源被删除。它常用于从数据库或文件系统中删除数据。

1.5 HEAD

用途:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。

特点:HEAD请求用于检索写在响应头中的元信息,而无需传输整个内容。它通常用于测试超链接的有效性、获取资源的修改时间等。

1.6 OPTIONS

用途:描述了目标资源的通信选项,允许客户端确定Web服务器的能力或支持的HTTP方法和头。

特点:OPTIONS请求用于获取目标资源所支持的通信选项。客户端可以通过此请求来了解服务器支持哪些HTTP方法、哪些头部字段等。

1.7 TRACE

用途:用于在测试或诊断时追踪消息在服务器之间的路径。

特点:TRACE请求会返回服务器收到的请求消息,主要用于测试或诊断目的。

1.8 CONNECT

用途:建立到目标资源标识的服务器的隧道。

特点:CONNECT方法主要用于通过HTTP代理建立HTTPS连接。当使用HTTPS协议进行安全通信时,客户端可能会先发送一个CONNECT请求到代理服务器,以建立与目标服务器的安全隧道。

1.9 其他说明

  • URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 操作。
  • 有的网站和服务器为了做反爬虫机制,也经常会不按常理出牌。有可能一个应该使用get方法的请求就一定要改成post请求,这个要视情况而定
  • head和get本质是一样的,区别在于head不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用get,但这里用head则意义更加明确。
  • put这个方法比较少见。HTML表单也不支持这个。本质上来讲, put和post极为相似,都是向服务器发送数据,但它们之间有一个重要区别,put通常指定了资源的存放位置,而post则没有,post的数据存放位置由服务器自己决定。
  • DELETE删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。
  • OPTIONS:这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为"Allow"的头,值是所支持的方法,如"GET, POST"。
  • 常用请求基本上就是get与post
  • get是不安全的,因为在传输过程,数据被放在请求的URL中;get传送的数据量较小,这主要是因为受URL长度限制,不能大于2kb;
  • post的所有操作对用户来说都是不可见的;post传送的数据量较大,一般被默认为不受限制
  • get限制Form表单的数据集的值必须为ASCII字符;而post支持整个ISO10646字符集
  • get执行效率比Post方法好。get是form提交的默认方法

二、状态码的分类

1** :信息,服务器收到请求,需要请求者继续执行操作

2** :成功,操作被成功接收并处理

3** :重定向,需要进一步的操作以完成请求

4** :客户端错误,请求包含语法错误或无法完成请求

5** :服务器错误,服务器在处理请求的过程中发生了错误

2.1 1xx(信息性状态码):

表示请求已被接受,正在处理。

  • 100 Continue表示客户端应继续发送请求。

2.2 2xx(成功状态码):

表示请求已成功被服务器接收、理解并处理。

  • 200 OK:请求成功。
  • 204 No Content:请求成功处理,但没有返回任何内容。
  • 206 Partial Content:服务器成功执行了范围请求(如视频分段加载)。

2.3 3xx(重定向状态码):

需要完成进一步的操作以成功完成请求。

  • 301 Moved Permanently:资源已被永久移动到新的URL。
  • 302 Found(或302 Moved Temporarily):资源临时移动到了新的URL。
  • 304 Not Modified:客户端缓存的资源是最新的,无需重新传输。

2.4 4xx(客户端错误状态码):

表示请求包含错误或无法被服务器理解。

  • 400 Bad Request:请求中有语法错误。
  • 401 Unauthorized:需要身份验证信息。
  • 403 Forbidden:服务器理解请求,但拒绝执行它。
  • 404 Not Found:服务器上找不到指定的资源。

2.5 5xx(服务器错误状态码):

表示服务器在处理请求时发生了错误。

  • 500 Internal Server Error:服务器遇到了一个未曾预料的情况,导致其无法完成对请求的处理。
  • 502 Bad Gateway:作为网关或代理工作的服务器从上游服务器收到了无效的响应。
  • 503 Service Unavailable:由于临时的服务器维护或者过载,服务器当前无法处理请求。

后续继续更新

相关推荐
阿华的代码王国42 分钟前
【JavaEE】——文件IO的应用
开发语言·python
电饭叔1 小时前
《python语言程序设计》2018版第8章19题几何Rectangle2D类(下)-头疼的几何和数学
开发语言·python
程序猿小D2 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
杰哥在此3 小时前
Python知识点:如何使用Multiprocessing进行并行任务管理
linux·开发语言·python·面试·编程
小白学大数据3 小时前
User-Agent在WebMagic爬虫中的重要性
开发语言·爬虫·http
zaim15 小时前
计算机的错误计算(一百一十四)
java·c++·python·rust·go·c·多项式
PythonFun9 小时前
Python批量下载PPT模块并实现自动解压
开发语言·python·powerpoint
炼丹师小米10 小时前
Ubuntu24.04.1系统下VideoMamba环境配置
python·环境配置·videomamba
GFCGUO10 小时前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
985小水博一枚呀11 小时前
【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。
人工智能·python·rnn·深度学习·lstm·ntm