Python网络爬虫之-HTTP协议原理
程序员文章站
2022-06-05 17:28:31
...
Python网络爬虫之-HTTP协议原理
1. 爬虫之http基本原理
- URI(统一资源表示符)中包含(URL<统一资源定位符>/URN<统一资源名称>)
- 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,依旧还是可以保持登录状态的。
而且恰恰是由于关闭浏览器不会导致会话被删除,这就需要服务器为会话设置一个失效时间,\
当距离客户端上一次使用会话的时间超过这个失效时间时,\
服务器就可以认为客户端已经停止了活动,才会把会话删除以节省存储空间。