第二章网页前端基础与HTTP协议

第二章 网页前端基础与HTTP协议

爬虫需要遵循网络传输协议才能与服务器进行通信,当与服务器建立通信后,爬虫才能获取网页内容,从而获取想要爬取的内容。获取到的网页内容通常为HTML(HyperText Markup Language)超文本标记语言,它不是一种编程语言,而是一种用于描述网页的标记语言。在正式学习爬虫之前需要先掌握HTML标记语言,以及网络传输协议。

2.1 网页前端基础

HTML(HyperText Markup Language)超文本标记语言是一种用于创建网页的标准标记语言。HTML运行在浏览器上,由浏览器来解析。HTML5是超文本标记语言的第5代版本,在HTML5之前,各个浏览器之间的标准不统一,给网站开发人员带来了很大的不便,HTML5的目标是将Web带入一个成熟的应用平台,现在绝大多数的网页开发都采用HTML5,HTML5解决了跨浏览器问题,支持IE、火狐(Firefox)、谷歌(Chrome)、Safari和Opera等,除此之外还增加了多个新的特征以满足网页开发的需求。学习HTML5需要了解HTML5的语法基础,本节主要讲解HTML5文档的基本格式、HTML5的标签及其属性,以及谷歌浏览器的开发者工具。

2.1.1 HTML标记

1.<!doctype>标记

<!doctype>标记位于文档的最前面,用于向浏览器说明当前文档使用哪种HTML标准规范,HTML5文档中的DOCTYPE声明非常简单,代码如下:

<!DOCTYPE html>

只有在开头处使用<! doctype>声明,浏览器才能将该网页作为有效的HTML文档,并按指定的文档类型进行解析。使用HTML5的DOCTYPE声明,会触发浏览器以标准兼容模式来显示页面。

2.<html>标记

<html>标记也被称为根标记,用于告诉浏览器自身是一个HTML文档。<html>标记标志着HTML文档的开始,</html>标记标志着HTML文档的结束,在它们之间是文档的头部和主体内容,代码如下:

<html>
	...
</html>

3.<head>标记

<head>标记用于定义HTML文档的头部信息,也称为头部标记。主要用来封装其他位于文档头部的标签,如:<title>、<meta>、<link>及<style>等,用来描述文档的标题、作者、以及与其他文档的关系等。一个HTML文档只能包含一对<head>标记,绝大多数文档头部包含的数据都不会真正作为内容显示在页面中。

4.<body>标记

<body>标记用于定义HTML文档所要显示的内容,也称为主题标记。浏览器中显示的所有文本、图像、音频和视频等信息都必须位于<bogy>标签内。<body>标记中的信息才是最终展示给用户看的。一个HTML文档只能含有一对<body>标记,且<body>标记必须在<html>标记内,位于<head>头部标记之后,与<head>标记是并列关系,代码如下:

<html>
	<head>
        <title>百度以下,你就知道</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
   		...
	</head>
	<body>
        <a id="aging-total-page" role="pagedescription" aria-label="欢迎进入 百度一下,你就知道" tabindex="0" href="javascript:void(0)"></a>
        ...
	</body>
</html>

5.HTML5文档头部相关标记

制作网页时,经常需要设置页面的基本信息,如页面的标题、作者和其他文档的关系等。HTML提供了一系列的标记,这些标记通常都写在<head>标记内,因此被称为头部相关标记,具体介绍如表2-1所示:

标记描述示例
<title>用于定义HTML页面的标题,只能包含一对<title>百度一下</title>
<meta/>用于定义网页的元信息,可重复使用<meta name=“keywords” content=“python网络爬虫”/>
<link/>用于引用外部文件,可重复使用<link rel=“stylesheet” type=“text/css” href=“style.css”/>
<style>用于为HTML5文档定义内嵌样式信息<style type=“text/css”> h2{color:red} p{color:blue;} </style>

6.标题和段落相关标记

一篇结构清洗的文章通常都有标题和段落,为了使网页中的文字有条理地显示出来,HTML5提供了相应的标题和段落标记,具体介绍如表2-2所示:

标记描述示例
<h1>、<h2>…<h6>标题标记,从1~6重要性递减<h1>1级标题</h1>
<p>段落标记,自动换行<p>这是一个段落</p> <p>这是第二个段落</p>
<hr/>水平线标记,单标签<hr />
<br/>强制换行显示<p>使用python网络爬虫需要掌握<br/>HTML5的各种标记</p>

7.图像标记

在网页中显示图像,需要使用图像标记,接下来详细介绍图像标记和它的相关属性,其基本语法格式如下:

<img src="图像URL" />

<img>标记还有其他属性,具体如表2-3所示:

属性属性值描述
scrURL图像的路径
alt文本图像不能显示时的替换文本
title文本鼠标指针悬停时显示的内容
width数字图像的宽度
height数字图像的高度
border数字图像边框的宽度
vspace数字图像的垂直边距
hspace数字图像水平边距
alignleft\right图像对齐到左\右边
aligntop\middle\bottom图形顶端\水平中线\底部和文本第1行对齐

8.超链接标记

HTML5使用超级链接与网络上的另一个文档相连。几乎可以在所有的网页中找到链接。点击链接可以从一张页面跳转到另一张页面。使用标记 <a>来设置超文本链接,基本语法格式如下:

<a href="跳转目标" target="目标窗口的弹出方式">文本或图像</a>

超链接标记的属性介绍,具体如表2-4所示:

属性属性值描述
hrefurl \ 绝对路径、相对路径指定链接目标的URL地址
target_self \ _blank_ self 为默认,在原窗口中打开,_ blank为在新窗口中打开
id文本设置锚点链接

9.列表标记

HTML5支持有序列表和无序列表:无序列表是一个项目的列表,此列项目使用粗体圆点(典型的小黑圆圈)进行标记,使用 <ul> 标签。有序列表也是一列项目,列表项目使用数字进行标记,使用<ol> 标签。每个列表项使用 <li> 标签。基础语法格式为:

<ul>
    <li>咖啡</li>
    <li>果汁</li>
    <li>绿茶</li>
</ul>

<ol>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ol>

10.区块标记

HTML5可以通过 <div> 和 <span>将元素组合起来,<div> 标记是块级标记,它可用于组合其他 HTML5元素的容器。<span> 标记是内联标记,可于文本的容器,<span> 标记与CSS一同使用时,<span> 元素可用于为部分文本设置样式属性。

11.标记常见属性

HTML5中标记常见的属性如表2-5所示:

属性名描述
class规定元素的类名
id规定元素的唯一id
href指定链接的地址
src引用该图像文件的绝对路径或者相对路径

2.1.2 Chrome开发者工具

Chrome浏览器提供了一个非常便利的开发者工具,供广大Web开发者使用,该工具可提供包括查看网页标记、查看请求资源列表、调试JS等功能。在Chrome浏览器中查看网页中的HTML源码的方式有两种。第一种方式可以直接单击右键查看网页源代码,之后会在浏览器中重新打开一个页面标签显示这些源码,但是这种方式展示的源码不会将标签进行匹配和归纳,无法展示开闭标签,查看的内容比较杂乱。第二种方法单击右键选择"检查"(或者按"F12"、“Ctrl+Shift+I”)打开开发者工具,Chrome开发者工具目前包括9个面板,可以通过开发者工具的"elements"面板来查看网页源码,该项中所显示的HTML源码经过了浏览器的渲染,这种方式将标记进行了结构化,让标记更加清晰,并且可以通过鼠标单击源码在浏览器中找到对应的内容,从而可以更容易的定位源码对应的网页内容,如图2-1所示:

在这里插入图片描述

Chrome开发者工具面板功能,如表2-6所示:

面板功能描述
Elements(元素面板)该面板可查看渲染页面所需的HTML、CSS和DOM对象,并可实时编辑这些元素调试页面渲染效果
Console(控制台面板)该面板可记录各种警告与错误信息,并可作为shell在页面上与JavaScript交互
Sources(源代码面板)该面板可查看各种类型的源代码,设置调试JavaScript的断点
Network(网络面板)该面板可查看页面请求、下载的资源文件、以及优化网页加载性能。还可查看HTTP的请求头、响应头等内容
Performance(性能面板)该面板可以展示页面加载时所有事件耗费的时长分析
Memory(内存面板)该面板提供了比性能面板更详细的分析,如跟踪内存泄漏等
Application(应用面板)该面板可检查加载的所有资源
Security(安全面板)该面板可调试当前网页的安全和认证等问题,并确保网站上已正确地实现HTTPS
Lighthouse(审查面板)该面板用于分析网络应用和网页,收集现代性能指标并提供对开发人员最佳实践的意见。

对于爬虫开发来说,常用的面板是元素面板、源代码面板和网络面板,接下来的章节中会详细介绍如何使用开发者工具的这些功能面板。

2.2 认识HTTP协议

互联网分层有很多种,常见的有两种一种是OSI七层模型和TCP/IP四层模型。

开放式系统互联通信参考模型(Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),是一种概念模型,试图使各种计算机在世界范围内互连为网络的标准框架。是由ISO(国际标准化组织)制定的,它有三个基本的功能:提供给开发者一个必须的、通用的概念以便开发完善、可以用来解释连接不同系统的框架。OSI将计算机网络体系结构(architecture)划分为七层,如表2-7所示:

层级主条目主要功能
第七层应用层提供为应用软件而设的接口,以设置与另一应用软件之间的通信。
第六层表达层将数据转换为能与接收者系统格式兼容并适合传输的格式
第五层会话层负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接
第四层传输层管理端到端的通信连接
第三层网络层数据路由,决定数据在网络的路径
第二层数据链路层负责网络寻址、错误侦测和改错
第一层物理层负责管理计算机通信设备和网络媒体之间的互通

TCP/IP网络模型分为四层,分别为应用层、传输层、网络层、数据链路层。具体每层功能如表2-5所示:

层级主条目主要功能
第四层应用层对应于OSI七层参考模型的应用层、表达层和会话层
第三层传输层提供两种端到端的通信服务
第二层网际层负责数据的包装、寻址和路由
第一层网络接口层管理物理网络准备所需要的数据

OSI七层模型和TCP\IP四层模型的对应如图2-2所示:

在这里插入图片描述

客户端与服务器端通过HTTP(超文本传输协议Hyper Text Transfer Protocol)协议进行通信,HTTP一个简单的请求-响应协议,它通常运行在TCP之上,是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP进行通信的HTTP的实现程序。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。

HTTP协议经历了四个阶段,分别是0.9协议、1.0协议、1.1协议、2.0协议。0.9协议适用于各种数据信息的简洁快速协议,是一个交换信息的无序协议,仅限于文字,图片是无法显示和处理的。由于无法进行内容的协商,在双发的握手和协议中,并有规定双发的内容,远不能满足日益发展的各种应用的需要。在1982年,Tim Berners-Lee提出了HTTP/1.0。在此后的不断丰富和发展中,HTTP/1.0成为最重要的面向事务的应用层协议。该协议对每一次请求/响应建立并拆除一次连接即当连接建立起来以后,浏览器发送一个请求,之后一个回应消息被送回来,然后TCP连接被释放。其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用。但是随着互联网的快速发展,网页中还包含了有大量的图标,图象以及其他内容,建立一个TCP连接仅仅传输一个图标则显得代价太高,对于互联网最重要的速度和效率HTTP/1.0显然已经无法满足。1999年HTTP/1.1应运而生,它支持持续连接,通过建立一个TCP连接后发送请求并得到回应,然后发送更多的请求并得到更多的回应。通过把建立和释放TCP连接的开销分摊到多个请求上,对于每个请求而言,由于TCP而造成的相对开销被大大地降低。一次连接发送多个请求,由客户机确认是否关闭连接,而服务器会认为这些请求分别来自不同的客户端。HTTP/2.0是下一代HTTP协议,由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发,在2013年8月进行首次合作共事性测试,开放互联网上HTTP 2.0将只用于"https://"网址,而 "http://"网址将继续使用HTTP/1,目的是在开放互联网上增加使用加密技术,以提供强有力的保护去遏制主动攻击。

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:

  1. 客户与服务器建立连接;
  2. 客户向服务器提出请求;
  3. 服务器接受请求,并根据请求返回相应的文件作为应答;
  4. 客户与服务器关闭连接。

HTTP报文由从客户端到服务器的请求和从服务器到客户端的响应构成。请求报文格式如图2-3所示:

在这里插入图片描述

请求行以方法字段开始,后面分别是URL字段和HTTP协议版本字段,并以换行符(\n)结尾。

应答报文格式如图2-4所示:

在这里插入图片描述

2.2.1 HTTP请求方法

在HTTP\1.1中定义了8种请求方法用来实现不同方式操作指定的资源,具体功能如表2-6所示:

方法描述
GET请求指定的页面信息,并返回实体主体
HEAD与GET 请求类似,只不过返回的响应中没有具体的内容,用于获取头部信息
POST向指定资源提交数据进行处理请求(如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立或者修改现有资源
PUT从客户端向服务器传送的数据取代指定的文档的内容
DELETE请求服务器删除指定的资源
TRACE回显服务器收到的请求,主要用于测试或诊断
OPTIONS允许客户端查看服务器上指定资源所支持的所有HTTP请求方法
CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

这些方法名称是区分大小写的。一般情况下,HTTP服务器至少需要实现GET和HEAD方法,其他方法为可选项。所有的方法支持的实现都应当匹配方法各自的语法格式。当某个请求所指定的资源不支持对应的请求方法时,服务器会返回状态码405(Method Not Allowed)。

2.2.2 HTTP常见状态码

HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599),具体介绍如表2-7所示:

状态码类型状态码意义
1**信息,表示服务器收到请求需接后续处理,需请求者继续执行操作,这类响应是临时响应。
2**成功,表示请求已成功被服务器接收、理解并处理
3**重定向,表示客户端需要采取进一步的操作才能完成请求
4**客户端错误,表示客户端请求包含语法错误或无法完成请求,妨碍服务器处理
5**服务器错误,表示服务器在处理请求的过程中有错误或者异常状态发生

下面是常见的 HTTP 状态码:

  • 200 - 请求成功
  • 301 - 永久重定向,网页被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

2.2.3 HTTP头部信息

HTTP头部信息是指在HTTP请求和响应消息中的HTTP头部信息部分。头部信息中定义了一个超文本传输协议事务中的操作参数。在使用爬虫发请求时需要使用头部信息向服务器发送模拟信息,并通过发送模拟的头部信息将爬虫伪装成普通的客户端。头部信息可以在浏览器的开发者工具网络面板(Network)中找到,百度首页的头部信息,如图2-5所示:

在这里插入图片描述

HTTP头部类型按用途可分为通用头(General)、请求头(Request Headers)、响应头(Response Headers)、实体头(Entity Headers)。头部包含的字段称为头部字段,头部字段被对应的分为四种类型:通用头字段,请求头字段,响应头字段和实体头字段,如图2-6,图2-7分别展示了请求头字段和响应头字段:

请求头字段

在这里插入图片描述

响应头字段

在这里插入图片描述

接下来详细介绍四种头部信息的字段

1.通用头

通用头既适用于客户端的请求头也适用于服务端的响应头。常用的标准通用头字段如表2-8所示:

字段名说明示例
Cache-Control指定请求和响应遵循的缓存机制。请求指令cache-control : no-cache,no-store,max-age。响应指令cache-control : no-cache,no-store,max-age,s-maxage,public,privateCache-Control: no-cache
Connection客户端和服务器在进行一次会话后,服务器是否立即关闭连接,有两个值:Close和Keep_Alive。Connection: keep-alive
Date请求消息和响应消息被创建的时间,格式必须是GMT(格林尼治)时间Date: Thu, 03 Feb 2022 10:29:50 GMT
Pragma包含实现特定功能的指令,通常值为:no-cachePragma: no-cache

2.请求头

客户端向服务器发送请求时必须指明请求类型,还有其他必要的信息,请求头可提供更为精确的描述信息,其对象为所请求的资源或请求本身,常用的请求头字段如表2-9所示:

字段名说明示例
Accept浏览器可接受的响应内容类型Accept: text/html
Accept-Charset浏览器可接受的字符集Accept-Charset:utf-8
Accept-Encoding浏览器能够进行解码的数据编码方式Accept-Encoding:gzip, deflate, br
Accept-Language浏览器可接受的响应内容语言种类列表Accept-Language:zh-CN,zh;q=0.9
Authorization授权信息Authorization:BasicOSdjJGRpbjpvcG==
Connection表示是否需要持久连接Connection:keep-alive
Content-Length表示请求消息正文的长度Content-Length:348
Cookie由之前服务器通过Set-Cookie设置的一个HTTP CookieCookie:$Version=2; Skin=black;
From发送此请求的用户的邮件地址From:user@qq.com
Host服务器的域名及服务器所监听的端口号Host:www.baidu.com
If-Modified-Since设置更新时间,只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答If-Modified-Since:Thu, 03 Feb 2022 10:29:50 GMT
Pragma设置特殊实现字段,指定“no-cache”值表示服务器必须返回一个刷新后的文档Pragma:no-cache
Referer包含一个URL,设置前一个页面的地址Referer:https://www.baidu.com
User-Agent用户代理的字符串值,由客户端计算机系统版本,位数,浏览器类型及版本等内容组成User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36

3.响应头

响应头为响应信息提供了更多信息,常用的响应头字段如表2-10所示:

字段名说明示例
Allow服务器支持哪些请求方法(如GET、POST等)Allow:GET,HEAD
Content-Encoding文档的编码(Encode)方法Content-Encoding:gzip
Content-Length表示内容长度Content-Length:154
Content-Type表示后面的文档属于什么MIME类型Content-Type:text/html
Date当前的GMT时间Date:Thu, 03 Feb 2022 12:49:15 GMT
Expires应该在什么时候认为文档已经过期,从而不再缓存它Expires:Thu, 03 Feb 2022 12:48:29 GMT
Last-Modified文档的最后改动时间Last-Modified:Mon, 24 Jan 2022 07:38:18 GMT
Location表示客户应当到哪里去提取文档Location:https://dlswbr.baidu.com/heicha/mw/abclite-2020-s.js
Refresh表示浏览器应该在多少时间之后刷新文档,以秒计Refresh:5;url=https://www.baidu.com
Server服务器名字Server:BWS/1.1
Set-Cookie设置和页面关联的CookieSet-Cookie:BDSVRTM=1; path=/

4.实体头

实体头可提供关系消息体的描述,常用的实体头字段如表2-11所示:

字段名说明示例
Content-Encoding服务器使用的压缩方法Content-Encoding:gzip
Content-Language服务器最适宜使用的自然语言Content-Language:en
Content-Length服务器响应对象的长度或尺寸Content-Length: 26012
Content-Location资源实际所处的位置Content-Location:/index.html
Content-MD5基于MD5算法对响应体内容进行Base64二进制编码Content-MD5:MYGr8tv1eCO_XnyIelDt-QB6xb2kg==
Content-Range标识响应体内容属于完整消息体中的哪一部分Content-Range:bytes-unitSPfirst-byte
Content-Type服务器响应对象的类型Content-Type:text\html;charset=utf-8
Etag特定版本资源的标识符,通常是消息摘要Etag:oz7PEElBt9G-NpIa1E3BLlwiNCgK9VbtyJo0Lvn
Expires响应体的过期时间Expires:Mon, 24 Jan 2022 07:38:18 GMT
Last-Modified请求对象最后一次的修改日期Last-Modified:Thu, 03 Feb 2022 13:27:38 GMT

2.2.4 Cookie

1.Cookie的产生

由于HTTP的无状态性,当客户端与服务器之间的数据传输完成后,连接将会关闭,并不会保留相关记录,如果需要再次进行数据交互时就要重新创建连接。这样服务器也无法根据连接跟踪会话,并无法记录用户之前的操作。举例说明:用户在某电商网站购物,选择商品后需要付款,当用户输入用户名和密码完成登录后,由于服务器不能跟踪用户的使用记录,又会提示要求用户选择商品,这样严重影响了用户的交互体验。为了解决HTTP的无状态性带来的负面作用,便产生了Cookie机制。

2.Cookie机制

Cookie有时也用其复数形式 Cookies,并不是“曲奇饼”的意思,它是一个保存在客户端浏览器中的文本文件。某些网站服务器为了识别用户身份,进行会话跟踪而由服务器根据加密算法生成发送给客户端并储存在客户端本地计算机上的文本数据。当客户端向服务器发请求时,如果服务器需要记录用户状态,就会根据用户的特征生成一段Cookie信息,服务器会保存这段Cookie信息,同时把Cookie信息加载在响应信息中发送给用户。用户的浏览器收到响应后会将收到的Cookie信息保存在浏览器中。当用户需要继续访问网站时,浏览器会带着Cookie信息发送请求,服务器收到带着Cookie的请求后会进行验证,以此来判断用户状态,如果Cookie合法有效,用户可以继续进行访问。

3.Cookie的存储方式

Cookie由客户端浏览器进行保存,按照存储位置可以分为内存式存储Cookie和硬盘式存储Cookie。内存式存储Cookie将Cookie保存在内存中,浏览器关闭后就会消失,存储时间较短,也被称为非持久Cookie,通常用于安全性要求较高的网站,例如登录网上银行,电商购物支付页面,关闭浏览器后需要再次输入用户名和密码才能进入。硬盘式存储Cookie将Cookie保存在硬盘中,不会随着浏览器的关闭而消失,由于硬盘式存储Cookie的存储时间较长,也被称为持久Cookie。但是持久Cookie并不是永久有效的,每个网站对Cookie设置的时效性不同,如果超过这个有效期间,需要重新生成新的Cookie才能继续使用。例如登录状态的微博,经过一段时间的使用后需要重新输入用户名和密码才能登录,这就是因为之前的Cookie已过期,无法维持登录状态,重新输入用户名和密码后服务器端会发送新的Cookie给用户浏览器进行保存。

4.Cookie安全性

Cookie的安全性问题主要有以下几方面:

(1)Cookie被用户非法篡改,如篡改其中的expire项,可将Cookie的有效期延长;篡改path项可使用户能够访问服务器上不被授权的内容;或修改domain项,使用户能够访问不被授权的服务器从而获得合法用户的信息等;

(2)被非法用户非法截获,然后在有限期内重放,则非法用户将享有合法用户的合法权益,可能会损害网站方的利益;

(3)若Cookie被服务器加密,而非法用户通过强力攻击或其他手段获得了相应的加密密钥,则非法用户可以伪造任何合法Cookie,从而可以访问合法用户的所有个性化信息,甚至是账户信息等。

面对诸如此类的攻击手段,有必要从服务器端和客户端对Cookie进行安全设计,服务器端保护措施主要有:
(1 )加入MAC以进行完整性校验;

(2)防止非法用户非法截获后的重放,可以让用户对相关信息进行数字签名,加强有效性验证;
(3)对Cookie本身进行随机密钥加密,保证Cookie本身的信息安全。

客户端浏览器为了保证本地的Cookie安全,采取了对不同访问网站的统一Cookie加密,在相应的系统目录下,只可看见一个与Cookie相关的加密文件,而且其中的Cookie文件,已被浏览器加密,用户不可见,在用户访问特定站点的时候,可由浏览器对cookies文件进行调用并进行解密,将特定站点的Cookie发送到指定的站点服务器中,实现对用户的Cookie的认证。

在原有的服务器端以及客户端对Cookie的安全性控制下,鉴于不同的客户端浏览器对站点的Cookie控制相互独立,可以采取在客户端浏览器对产生的Cookie文件进行基于主机特征的安全性认证,即在浏览器产生Cookie加密文件时,在Cookie文件中加入一段主机的特征,生成一个双层加密的新的Cookie文件;在调用Cookie的时候,通过对Cookie文件进行主机特征的匹配,选择对内层的文件进行解密调用。然后,对嵌套了主机序列号的内层密文进行二次加密;内层加密保证对源Cookie内容的加密,保证Cookie信息的不可见,外层加密保证对主机特征的保护,以避免对主机特征的替换,通过对Cookie加入主机特征,以及两次对Cookie加密,可以在原有的防护机制下,为Cookie提供更加安全的保护。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值