Python网络爬虫之-HTTP协议原理

Python网络爬虫之-HTTP协议原理

  • 1. 爬虫之http基本原理
  • 2. 浏览器解析概述
  • Cookie技术

1. 爬虫之http基本原理

  1. URI(统一资源表示符)中包含(URL<统一资源定位符>/URN<统一资源名称>)
  2. HTTP(超文本传输协议)/HTTPS(安全套接层上的超文本传输协议/Hyper Text Protocol over Security Socket Layer)
    差异性:
    HTTP: 未进行ssl协议进行加密广泛使用的是http1.1协议
    HTTPS: 增加了ssl加密协议在传输方面有了提升也增加了CA证书整明网站真实性可靠性使用https(http2.0)。

2. 浏览器解析概述

1. 基础概念:
	1. Ctrl+Shift+I 打开开发者模式	
	2. Client请求Server时通过Request(请求)-->Response(响应)

主要Network模块及该模块下的文件请求属性

	1. General(常规)
		Request URL: #请求url(统一资源定位符)
		Request Method: #提交方式(GET/POST/HEAD/more..)
		Status Code: #请求状态码(200 OK/304/more...)
		Remote Address: #目标IP
		Referrer Policy: #规则设置
	
	2. Response Headers(响应头部)
		HTTP/1.1 200 OK  响应状态及协议版本号
		Server: 目标服务器信息  
		Date: Sun, 10 Nov 2019 07:31:07 GMT    #服务器时间
		Content-Type: text/html; charset=UTF-8   #文本类型及编码格式
		Transfer-Encoding: chunked       #传输编码
		Connection: keep-alive     #连接状态
		Expires: Thu, 19 Nov 1981 08:52:00 GMT    #响应过期时间
		Cache-Control: no-store, no-cache, must-revalidate   #控制缓存
		Pragma: no-cache   #http/1.1之前版本的历史遗留字段,仅作为与http的向后兼容而定义。
		Vary: Cookie   #也是一个做缓存的东东,占时没做深入了解
		X-Pingback: wordpress网站真实路径
		Content-Encoding: gzip   #响应内容编码类型

	3. Request Headers(请求头部)
		GET /5465.html HTTP/1.1
		Host: 主机
		Connection: keep-alive   #连接状态
		Cache-Control: max-age=0  #控制缓存
		DNT: 1  #禁止跟踪
		Upgrade-Insecure-Requests: 1
		User-Agent:  #用户使用的什么代理(浏览器)
		Sec-Fetch-Mode: navigate
		Sec-Fetch-User: ?1
		Accept: #支持页面类型
		Sec-Fetch-Site: same-origin   #秒取站点
		Referer: https://cuiqingcai.com/5052.html    #告诉服务器该网页是从哪个页面链接过来的
		Accept-Encoding: gzip, deflate, br    #请求格式
		Accept-Language: zh-CN,zh;q=0.9    #支持的语言
		Cookie: cookie记录值

Cookie技术

1. 对于Cookie工作过程这里需要提及(会话保持)服务端会设置set-cookie 时间给客户端\
	服务端与客户端之间必须共同协作才能保持两者之间会话连通性\
	若不然C/S两者Client cookie 将会断开则需从新请求cookie。
	
2. **常见误区**
	在谈论会话机制的时候,常常听到这样一种误解“只要关闭浏览器,会话就消失了”,这种理解是错误的。\
	可以想象一下会员卡的例子,除非顾客主动对店家提出销卡,否则店家绝对不会轻易删除顾客的资料。\
	对会话来说,也是一样,除非程序通知服务器删除一个会话,否则服务器会一直保留。\
	比如,程序一般都是在我们做注销操作时才去删除会话。
	
	但是当我们关闭浏览器时,浏览器不会主动在关闭之前通知服务器它将要关闭,所以服务器根本不会有机会知道浏览器已经关闭。\
	之所以会有这种错觉,是因为大部分会话机制都使用会话Cookie来保存会话ID信息,\
	而关闭浏览器后Cookies就消失了,再次连接服务器时,也就无法找到原来的会话了。\
	如果服务器设置的Cookies保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的Cookies发送给服务器,\
	则再次打开浏览器,仍然能够找到原来的会话 ID,依旧还是可以保持登录状态的。
	
	而且恰恰是由于关闭浏览器不会导致会话被删除,这就需要服务器为会话设置一个失效时间,\
	当距离客户端上一次使用会话的时间超过这个失效时间时,\
	服务器就可以认为客户端已经停止了活动,才会把会话删除以节省存储空间。

你可能感兴趣的:(Python)