神奇的Willem

Http协议的简单介绍

http协议叫做超文本传输协议,他可是互联网的基石,在外面访问服务器时候。

http定义了一下规则。

请求方法:GET请求非常常见,也可以用脚本/post/put/delete/gzip(压缩不做介绍)等

请求头:content-type用于指示请求或响应中数据的媒体类型/user-agent请求设备/Content-Length:请求主体的字节长度。

客户端响应状态码:200/403/502等

常见请求头介绍

HTTP 请求方式

HTTP(Hypertext Transfer Protocol)是一种在计算机网络中用于传输超媒体文档的应用层协议。HTTP 协议定义了客户端和服务器之间的通信规则,并规定了客户端向服务器发送请求时需要采用的请求方法(请求方式)。

常见的 HTTP 请求方式有四种:

  • POST(添加)

  • GET(查询)

  • DELETE(删除)

  • PUT(修改)

下面将分别对这四种请求方式进行详细介绍。

POST 请求

POST 请求用于向指定资源提交数据,通常会导致服务器端的状态发生变化。例如,在 Web 表单中填写用户信息并提交时,就是使用 POST 请求方式将表单数据提交到服务器存储

使用 POST 请求方式提交的数据会被包含在请求体中,而不像 GET 请求方式那样包含在 URL 中。因此,POST 请求可以提交比 GET 更大的数据量,并且相对更安全。

下面是一个 POST 请求的例子:

POST /api/user HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 123

{
   "name": "John Doe",
   "email": "[email protected]",
   "age": 30
}

上述代码表示向 example.com 的 /api/user 资源发送一个 POST 请求,请求体中包含了一个 JSON 格式的用户信息。

GET 请求

GET 请求用于向指定资源发出请求,请求中包含了资源的 URL 和请求参数。服务器端通过解析请求参数来返回相应的资源,不会修改服务器端的状态。

使用 GET 请求方式提交的数据会被包含在 URL 中,因此易于被缓存和浏览器保存,但也因此不适合用于提交敏感数据。

下面是一个 GET 请求的例子:

GET /api/user?id=123 HTTP/1.1
Host: example.com

上述代码表示向 example.com 的 /api/user 资源发送一个 GET 请求,请求参数中包含了用户的 ID。

可以被缓存抗下如cdn

DELETE 请求

DELETE 请求用于请求服务器删除指定的资源,可以理解为对服务器上的资源进行删除操作。使用 DELETE 方式请求会导致指定的资源被永久删除,因此需要谨慎使用。

下面是一个 DELETE 请求的例子:

DELETE /api/user?id=123 HTTP/1.1
Host: example.com

请求头介绍

Content-Type

  • HTTP 请求:在 POST 或 PUT 请求中,Content-Type 指定请求体的数据格式。例如,发送 JSON 数据:

  • 确定需要用什么解密

POST /api/data HTTP/1.1

Host: example.com

Content-Type: application/json

Content-Length: 123



{

"name": "John",

"age": 30

}
  • HTTP 响应:服务器通过 Content-Type 指定返回数据的类型。例如,返回 HTML 页面:

HTTP/1.1 200 OK

Content-Type: text/html

Content-Length: 5678




<!DOCTYPE html>

<html>

<head><title>Example</title></head>

<body><h1>Hello, World!</h1></body>

</html>

总结

正确设置 Content-Type 是确保客户端和服务器能够正确解析和处理数据的关键。通过合理使用该头字段,可以提升网络应用的可靠性、兼容性和用户体验。

Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。

Content-Type 标头告诉客户端实际返回的内容的内容类型。

语法格式:

Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=something

截屏2025-11-03 19.30.04.png

常见的媒体格式类型如下:

  • text/html : HTML格式

  • text/plain :纯文本格式

  • text/xml : XML格式

  • image/gif :gif图片格式

  • image/jpeg :jpg图片格式

  • image/png:png图片格式

以application开头的媒体格式类型:

  • application/xhtml+xml :XHTML格式

  • application/xml: XML数据格式

  • application/atom+xml :Atom XML聚合格式

  • application/json: JSON数据格式

  • application/pdf:pdf格式

  • application/msword : Word文档格式

  • application/octet-stream : 二进制流数据(如常见的文件下载)

Content-Encoding

在HTTP协议中,服务器可以使用Content-Encoding头来指示响应数据的压缩方式,例如gzip。客户端在发送请求时,可以使用Accept-Encoding头来声明它支持的压缩方法,例如gzip和deflate。

GET /index.html HTTP/1.1

Host: www.example.com

Accept-Encoding: gzip, deflate

服务器接收到请求后,会根据客户端支持的压缩方法对响应数据进行压缩,并在响应头中包含Content-Encoding字段。

HTTP/1.1 200 OK

Content-Encoding: gzip

Content-Length: 1234

Content-Type: text/html

客户端接收到响应后,会根据Content-Encoding字段的信息解压数据,并显示网页内容

User-Agent

将获取到的 User-Agent 字段构造成字典形式,并在 HTTP 请求中使用。例如

# 定义 User-Agent

user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36'
headers = {'User-Agent': user_agent}

# 发起请求
response = requests.get('https://example.com', headers=headers)
print(response.text)

User-Agent 的组成结构

User-Agent 通常由以下部分组成:

  1. Mozilla/5.0:历史遗留部分,几乎所有 User-Agent 都包含此字段。

  2. 操作系统信息:如 Windows NT 10.0 表示 Windows 10 系统,X11; Linux x86_64 表示 Linux 系统。

  3. 引擎版本:如 AppleWebKit/537.36,表示浏览器的渲染引擎。

  4. 浏览器版本:如 Chrome/81.0.4044.113,表示浏览器的具体版本。

通过理解 User-Agent 的结构,可以根据需要自定义字段内容,以适应不同的爬虫场景。

客户端回复响应代码

这些状态码表示请求已接收,需继续处理。例如:

  • 100 Continue:请求可继续。tcp握手。

  • 101 Switching Protocols:服务器同意切换协议。如确认https链接tls版本。

成功响应 (200–299)

表示请求成功处理。例如:

  • 200 OK:请求成功,常用于 GET 和 POST 请求。

  • 201 Created:资源已成功创建。

  • 204 No Content:请求成功但无返回内容。

重定向消息 (300–399)

表示资源位置发生变化。例如:

  • 301 Moved Permanently:资源永久移动到新位置。

  • 302 Found:资源临时移动。

  • 304 Not Modified:资源未修改,可使用缓存。

客户端错误响应 (400–499)

表示请求有错误。例如:

  • 400 Bad Request:请求语法错误。

  • 401 Unauthorized:需要身份验证。

  • 403 Forbidden:无权限访问资源。

  • 404 Not Found:资源未找到。

服务端错误响应 (500–599)

表示服务器处理请求时发生错误。例如:

  • 500 Internal Server Error:服务器内部错误。

  • 502 Bad Gateway:网关收到无效响应。

  • 503 Service Unavailable:服务器暂时不可用。

常见响应头

响应头提供额外信息,例如:

  • Content-Type:返回内容的 MIME 类型。

  • Content-Length:响应体的字节长度。

  • Cache-Control:缓存策略。

  • Location:重定向的目标地址。