乐之之

知而行乐,乐而行之,天道酬勤,学无止境。
爬虫概念

一、爬虫的概念

(一)爬虫的简介

1、概念

(1)网络爬虫也叫网络蜘蛛,特指一类自动批量下载网络资源的程序,这是一个比较口语化的定义。

(2)更加专业和全面对的定义是:网络爬虫是伪装成客户端与服务端进行数据交互的程序。

2、作用

  1. 数据采集。
  2. 搜索引擎。
  3. 模拟操作。

3、分类

(1)通用爬虫

  • 搜索引擎的重要组成成分。

(2)聚焦爬虫

  • 建立在通用爬虫的基础上,抓取页面当中的指定的数据。

(二)爬虫的合法性

  • 从法律的角度来讲,爬虫是合法的。

(三)如何避免违法

  1. 在不干扰服务器正常运营的前提下,进行数据采集。
  2. 不窃取个人用户信息。
  3. 不干扰网站的正常运营。
  4. 避免敏感信息的抓取。

二、HTTP与HTTPS

(一)HTTP协议

1、概念

 (1)HTTP

  • HTTP是Hyper Text Transfer Protocol (超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。是以明文的方式在网络当中传递数据。目前互联网上90%的网络传输都是基于http协议。

 (2)HTTPS

  • HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道。简单的讲是HTTP的安全版,即HTTP下加入SSL层。
小结:通俗来讲就是:计算机之间也是需要一种规则,保障之间的信息的有效交流,这就是HTTP协议。

2、特点

 (1)HTTP

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。 每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通讯速度很快。
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

 (2)HTTPS

  • 安全性:内容加密建立一个信息安全通道,来保证数据传输的安全;数据完整性防止内容被第三方冒充或者篡改。
  • 真实性:通过身份认证,确认网站的真实性。

3、网络架构

  1.  c/s (client server)  客户端与服务端。
  2. b/s (browser server)  浏览器与服务器。
  3. m/s (mobile server)  移动端与服务端。

4、运行原理

(1)创建连接(三次握手)

  • 第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
  • 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个syn包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态。
  • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

(2)断开连接(四次挥手)

  • 第一次挥手:客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,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状态。
总结:
三次握手: 就是在前端发送请求报文之前, 确定一下是不是双方都 “在线”。
四次挥手: 就是在后端发送完毕响应之后, 双方告知一下纷纷 “下线”。

(二)认识URL

1、URL的概念

  •  URL(Uniform Resource Locator),中文叫统一资源定位符。是用来标识某一处资源的地址。
  • 通俗的来说就是网址,当发送http请求时,通过URL对网络资源进行定位。

2、HTTP请求格式

(1)请求行

  根据http标准,http请求可以使用多种请求方法。

  • 定义了三种请求方法:GET、POST和HEAD方法。
  • 新增了五种请求方法:OPTIONS、PUT、DELETE、TRACE和CONNECT方法。

  常用方法:

  GET

  1. 主要是负责从服务器获取数据。
  2. URL中添加请求参数,显示在地址栏。
  3. 请求字符串限制 1024个字节。
比post更高效和方便

  POST

  1. 主要负责向服务器提交数据。
  2. 没有大小限制。
比GET传递数据量大,安全性高

(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:具体请求的媒体的类型信息,如下:
  1. text / html:HTML 格式
  2. image / gif:gif 图片
  3. application / json:son 类型
  • Content - Range:响应资源的范围。可以在每次请求中标记请求的资源范围,在连接断开重连时,客户端只请求该资源未下载的部分,而不是重新请求整个资源,实现断点续传。
  • Cache - Control:指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Contro 并不会修改另一个消息消息处理过程中的缓存处理过程。(包含请求时的缓存指令包和响应消息中的指令)

    请求时的缓存指令包括:no-cache、no-store、man-age、max-stake、min-fresh、only-if-cached。

    响应消息中的指令包括:public、privete、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。

(3)空行

  • 最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

(4)请求体 

  • 请求体不在 GET 方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。
  • 与请求体相关的最常使用的是:包体类型 Content-Type、包体长度 Content-Length。

(5)状态行

  • 状态行的概念:状态行由 HTTP 协议版本、状态码和状态码的描述文本3个部分组成,他们之间使用空格隔开。
  • 状态码的概念:状态码由三位数字组成,第一位数字表示响应的类型。
  • 常用的五大类状态码:

    1xx:表示服务器已接收了客户端请求,客户端可继续发送请求。

    2xx:表示服务器已成功接收到请求并进行处理。

    3xx:表示服务器要求客户端重定向。

    4xx:表示客户端的请求有非法内容。

    5xx:表示服务器末能正常处理客户端的请求而出现意外错误。

  • 七大常见的状态行:

    200 OK:表示客户端请求成功。

    400 Bad Request:表示客户端请求有语法错误,不能被服务器所理解。

    401 Unauthonzed:表示请求未经授权,该状态代码必须与 www-Authenticate 报头域一起使用。

    403 Forbidden:表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因。

    404 Not Found:请求的资源不存在。例如,输入了错误的 URL。

    500 Internal Server Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求。

    503 Service Unavailable:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

三、会话技术

 (一)Cookie(凭证)

1、简述

  • http 是无状态的,那服务端怎么区分同一个用户的连续请求呢,这就用到了会话技术: cookie 和 session。

2、概念

(1)Cookie

  • 指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密); 有时也用其复数形式 Cookies。

(2)cookie的运行流程

  1. 实际是由服务器发给客户端的特殊信息。
  2. 这些信息以文本文件的方式存放在客户端。
  3. 客户端毎次向服务器发送请求的时候都会带上这些特殊的信息。服务器在接收到 Cookie 以后,会验证 Cookie 的信息,以此来辨别用户的身份。

 (二)Session(会话)

1、含义

  • 是指有始有终的一系列动作或消息;比如打电话时从拿起电话拨号到 挂断电话这中间的一系列过程可以称之为一个 session 。
  • 这个词在各个领域都有在使用,而我们 web 领域,一般使用的是其 本义,一个浏览器窗口从打开到关闭这个期间。

2、目的

  • 在一个客户从打开浏览器到关闭浏览器这个期间内,发起的所有请求都可以被识别为同一个用户。

3、实现的方式

  • 在一个客户打开浏览器开始访问网站的时候,会生成一个 Cookie 和SessionID ,这个 ID 每次的访问都会带上,而服务器会识别这个 SessionID 并且将与这个 SessionlD 有关的数据保存在服务器上。由此来实现客户端的状态识别。
  • 因此 session 是基于 cookie 的。

4、区别

  • Session 与 Cookie 相反, Session 是存储在服务器上的数据,只由客户端传上来的 SessionID 来进行判定,所以相对于 Cookie , Session 的安全性更高。

5、表现

  • 一般 SessionID 会在浏览器被关闭时丢弃,或者服务器会验证 Session 的活跃程度。例如30分钟某一个 SessionID 都没有活跃,那么也会被识别为失效。

posted on 2022-10-17 22:42  乐之之  阅读(128)  评论(0编辑  收藏  举报