认识爬虫
一、爬虫相关概念
爬虫的概念:
- 通用爬虫:搜索引擎的重要组成成分
- 聚焦爬虫:建立在通用爬虫的基础上,抓取页面当中指定的数据
二、了解http与https
1.http 端口80
-
内容加密建立一个信息安全通道,来保证数据传输的安全;
-
身份认证确认网站的真实性
-
数据完整性防止内容被第三方冒充或者篡改
3.三次握手、四次挥手
第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
四次挥手 断开连接
第一次挥手: 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。
TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
第二次挥手: 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。
TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
第三次挥手: 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
第四次挥手: 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。
注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
根据http标准,http请求可以使用多种请求方法。
- 1.定义了三种请求方法:GET,POST和HEAD方法
- 1.新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
-
GET 1.主要是负责从服务器获取数据 2.URL中添加请求参数,显示在地址栏 3.请求字符串限制 1024个字节 比
POST
更加高效和方便。 -
POST 1.主要负责向服务器提交数据 2.没有大小限制
2.请求头
-
User-Agent:产生请求的浏览器类型;
-
referer:防盗链,页面跳转处,表明产生请求的网页来自于哪个URL,告诉服务器我是从哪个链接过来的
-
Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
-
Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;
-
Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ / ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;
-
Accept-Language:客户端可接受的自然语言;
-
Accept-Encoding:客户端可接受的编码压缩格式;
-
Accept-Charset:可接受的应答的字符集;
-
connection:连接方式(close 或 keepalive);
-
Content-Length:发送给HTTP服务器数据的长度。
-
Content-Type:具体请求的媒体的类型信息,力图 text/html 代表HTML格式,image/gif代表gif图片,application/json代表Json类型
-
charset:编码格式
-
Content-Range:响应资源的范围。可以在每次请求中标记请求的资源范围,在连接断开重连时,客户端只请求该资源未下载的部分,而不是重新请求整个资源,实现断点续传。
-
-
状态码 由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示;
-
1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;
-
2xx:表示服务器已成功接收到请求并进行处理;
-
3xx:表示服务器要求客户端重定向;
-
4xx:表示客户端的请求有非法内容;
-
5xx:表示服务器未能正常处理客户端的请求而出现意外错误;
-
-
200 OK:表示客户端请求成功;
-
400 Bad Request:表示客户端请求有语法错误,不能被服务器所理解;
-
401 Unauthonzed:表示请求未经授权,该状态代码必须与 WWW-Authenticate 报头域一起使用;
-
403 Forbidden:表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因;
-
404 Not Found:请求的资源不存在,例如,输入了错误的URL;
-
500 Internal Server Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求;
-
-
-
Cookie 可以理解为一个凭证 1.实际是由服务器发给客户端的特殊信息, 2.这些信息以文本文件的方式存放在客户端, 3.客户端每次向服务器发送请求的时候都会带上这些特殊的信息。
session
Session的目的则是,在一个客户从打开浏览器到关闭浏览器这个期间内,发起的所有请求都可以被识别为同一个用户。
而实现的方式则是,在一个客户打开浏览器开始访问网站的时候,会生成一个cookie,SessionID,这个ID每次的访问都会带上,而服务器会识别这个SessionID并且将与这个SessionID有关的数据保存在服务器上。由此来实现客户端的状态识别。因此session是基于cookie的.
Session与Cookie相反,Session是存储在服务器上的数据,只由客户端传上来的SessionId来进行判定,所以相对于Cookie,Session的安全性更高。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程