HTTP基本原理:请求

请求,由客户端向服务器发出。一个请求可以分为4部分内容:请求方法(Request Method)、请求路径(Request URL)、请求头(Request Headers)、请求体(Request Body)。

一、请求方法

1)常用的请求方法有两种:GET和POST。

  • 在浏览器中直接输入URL并回车,这相当于发起一个GET请求,请求的参数会直接拼接在URL的后面。例如,在百度中搜索Python,这就是一个GET请求,URL为https://www.baidu.com/s?wd=Python,其中URL包含了请求的参数信息,这里参数wd的值表示要搜寻的关键字。
  • POST请求大多在表单提交时使用。比如对于一个登录表单,输入用户名和密码后,点击“登录”,这通常会发起一个POST请求,其提交的数据将通过请求体发送给服务器,不会体现在URL中。

2)GET和POST请求方法的区别如下:

  • GET请求中,参数都包含在URL中,数据可以在URL中看到;而POST请求中,URL不会包含这些数据,数据都是通过表单形式(请求体)传输的。
  • GET请求提交的数据做多只有1024字节,而POST没有限制。

一般来说,登录时需要提交用户名和密码,其中包含了敏感信息,使用GET方式请求的话,密码就会暴露在URL中,造成密码泄露,所以最好以POST方式发送。上传文件时,由于文件比较大,因此一般也会选用POST方式。

请求方法 描述
GET 请求页面,并返回页面内容
HEAD 类似于GET请求,只不过返回的响应中没有具体的内容,仅用于获取报头
POST 大多用于提交表单或上传文件,数据包含在请求体中
PUT 从客户端向服务器传送的数据取代指定文档中的内容
DELETE 请求服务器删除指定的页面
CONNECT 把服务器当做跳板,让服务器代替客户端访问其他网页
OPTIONS 允许客户端查看服务器的性能
TRACE 回显服务器收到的请求,主要用于测试或诊断



二、请求网址

请求的网址,即统一资源定位符URL,它可以唯一确定我们想请求的资源。


三、请求头

请求头用于将客户端的某些信息当作附加信息传递给服务器。常用的头信息有:

  • Accept:表明客户端可以接收哪些类型的信息。
  • Accept-Language:表明客户端可以接收的语言类型。
  • Accept-Encoding:表明客户端可以接收的内容编码。
  • Host:用于指定请求资源的主机IP和端口号,其内容为URL的原始服务器或网关的位置。从HTTP 1.1开始,请求头必须包含此项内容。
  • Cookie:也常用复数形式Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话,记录登录状态。Cookies里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面向服务器发送请求时,都会在请求头中加上Cookies并将其发送给服务器,服务器通过Cookies识别出用户身份,并且能查出用户当前的状态。
  • Referer:用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、防盗链处理等。
  • User-Agent:简称UA,可以使服务器识别用户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器,如果不加,很可能会被识别为爬虫。
  • Content-Type:也称互联网媒体类型(Internet Media Type)或者MIME类型,在HTTP协议请求头中,它用来表示具体请求中的媒体类型信息。例如,text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON类型,更多对应关系可以查看此对照表http://tool.oschina.net./commons

在写爬虫时,大部分情况下都需要设定请求头。


四、请求体

1)请求体存放的内容一般是POST请求提交的表单数据,而对于GET请求,请求体则为空,因为GET请求是通过URL提交数据。
2)请求头中指定的Content-Type属性值为表单提交的数据类型。

Content-Type 提交数据的类型
application/x-www-form-urlencoded 表单数据
multipart/form-data 表单文件上传
application/json 序列化JSON数据
text/xml XML数据

在爬虫中,如果要构造POST请求,需要使用正确的Content-Type,并了解各种请求库的各个参数设置时使用的是哪种Content-Type,不然可能会导致POST提交后无法正常响应


猜你喜欢

转载自blog.csdn.net/m0_43404934/article/details/122267196