Python:模拟登陆与HTTP协议(1)

编程悬崖,回头是岸 ——Python:模拟登陆与HTTP协议(1)

最近快船可谓风生水起,现在是14胜3负排西部第二,西决地板的魔咒有望破解。东部毫无疑问是骑士的了,就看西部的马刺勇士快船谁能笑到最后了

好了,回归正题,说下http协议

协议是什么呢,我觉得最直接最简单的理解就是:约定与规则,双方按照约定好的规则来做,不按约定来做的的不管,按错误的规则来做的不管。

那http又是啥呢,最简单粗暴的方法:百度!
以下摘自百度百科:

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

以上可以了解到两个信息
1、接收和发布html页面的标准
2、版本是1.1

那么http具体格式是怎样的呢?抓个包来看看
Python:模拟登陆与HTTP协议(1)_第1张图片

看2个重点:
1、get请求
2、200ok

那么get请求做了啥:
Python:模拟登陆与HTTP协议(1)_第2张图片

包括3个方面:请求行、请求头、请求体

请求行:GET / HTTP/1.1
GET:请求方式(还有head、put、delete、post等)
HTTP/1.1:http协议版本

请求头:里面明确了你请求的前提,比如要keep-alive保持连接,比如要压缩gzip等
这里写图片描述

Accept:用于指定客户端接受哪些类型的信息
Accept:image/gif,接受GIF图象格式的资源
Accept:text/html,接受html文本。

Referer: 告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理,例如外链

Accept-Language: 指定一种自然语言

User-Agent: 允许客户端将它的操作系统、浏览器和其它属性告诉服务器

Accept-Encoding: 用于指定可接受的内容编码

Host: 用于指定被请求资源的Internet主机和端口号

Connection: 当主机和服务器通信时对于长链接如何进行处理

……省略

请求体:就是请求头下面隔一行的内容
Python:模拟登陆与HTTP协议(1)_第3张图片

有请求就肯定有回应,回应一样也是由3部分组成:响应状态、响应头、响应体
Python:模拟登陆与HTTP协议(1)_第4张图片

响应状态:200OK就是状态,200代表正常与成功,就是刚才的请求服务器已经接受
状态码有很多,归纳为5类
100-199 用于指定客户端应相应的某些动作。
200-299 用于表示请求成功。
300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。
400-499 用于指出客户端的错误。
500-599 用于支持服务器错误。
例如平常见的最多的就是404NOTFOUND,就是请求了不存在的地址

响应头:
Content-Type:表示后面的文档属于什么MIME类型
(百度百科:MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。)

Content-Length:用于指明正文的长度,仅正文,以字节方式存储的十进制数字来表示,也就是一个数字字符占一个字节,用其对应的ASCII码存储传输

Access-Control-Allow-Origin:表示允许任何域名跨域访问
,服务端需指定一个域名

Access-Control-Allow-Credentials:跨域请求凭证,为true则携带cookie作为凭证

Date:日期

鉴于刚才家里小猫咪在我床上撒了尿还歪头卖萌,铲屎君只能洗被子去了,下回继续

你可能感兴趣的:(python,python,http协议,编程)