网页前端基础
认识爬虫
常见的网上冲浪过程是怎样的呢?
首先用户输入网址,浏览器向目标网站的服务器发送请求,之后服务器响应请求,接着返回相应网页的数据。
而网络爬虫(网络机器人/蜘蛛),是一个模拟浏览器向目标网站发起请求从而自动下载网页数据的计算机程序或自动化脚本。像一只蜘蛛在互联网上沿着URL的丝线爬行,下载每一个URL所指向的网页,并分析提取网页内容。
爬虫的应用场景主要有:搜索引擎、舆情分析(数据挖掘)、数据聚合、价格监测&运营助手、其它
爬虫亦需要注意合法性:个人隐私数据不能爬取、明确禁止的数据不能爬取、谨慎将爬取到的数据用于商业用途、遵循robot.txt爬取协议
认识反爬虫
概念:被爬网站采取措施禁止爬虫对其访问
为什么会反爬?
1.爬虫访问频率过高,给目标网站/应用服务器带来巨大访问压力
2.爬虫的访问记录毫无价值,甚至会扰乱网络运营者的正常工作
3.爬虫会带来数据安全问题
认识网络信息传输过程
数据在网络世界中的传播形式如下图所示:

计算机或通信系统间互联的标准体系,是抽象模型,并非按硬件层级划分的。TCP/IP模型使用更为广泛。TCP/IP是一系列协议的集合,其核心协议是TCP和IP,各层有专门协议,各主机相应协议进行通信。
网络传输过程:
发方从最高层开始向下对数据逐层封装/打包,最终形成比特流,再通过网络接口层向收方传递。
比特流穿越复杂的中间信道。
收方对收到的比特流从最底层开始向上逐层封装/解包,最终还原出原始信息。

4.认识HTTP
HTTP的全称为HyperText Transfer Protocol(超文本传输协议)
爬虫是利用python程序模拟浏览器向web服务器发送http请求,以获取服务器的目标网页文件。
http包含数据头和数据体两个部分。

在日常生活中我们浏览网页的时候也可以注意到,网址其实都带有http的前缀。以bilibili的网址为例子:


HTTP头部类型按用途可分为:通用头,请求头,响应头,实体头
通用头:既适用于客户端的请求头,也适用于服务端的响应头。与HTTP消息体内最终传输的数据是无关的,只适用于要发送的消息。
请求头:提供更为精确的描述信息,其对象为所请求的资源或请求本身。
响应头:为响应消息提供了更多信息。例如,关于资源位置的描述Location字段,以及关于服务器本身的描述使用Server字段等。
实体头:提供了关于消息体的描述。如消息体的长度Content-Length,消息体的MIME类型Content-Type等。
通用头:

请求头:

响应头:

实体头:

常用请求方法:

http状态码种类:

请求头常用字段:

响应头:
响应状态:有多种响应状态,如200代表成功、301跳转、404找不到页面、502服务器错误
响应头:如内容类型、内容长度、服务器信息、设置Cookie等等。
响应体:最主要的部分,包含了请求资源的内容,如网页HTML、图片二进制数据等。
HTTP是一种无状态的协议,客户端与服务器建立连接并传输数据,在数据传输完成后,本次的连接将会关闭,并不会留存相关记录。
服务器无法依据连接来跟踪会话,也无法从连接上知晓用户的历史操作。这严重阻碍了基于Web应用程序的交互,也影响用户的交互体验。
某些网站需要用户登录才进一步操作,用户在输入账号密码登录后,才能浏览页面。对于服务器而言,由于HTTP的无状态性,服务器并不知道用户有没有登录过,当用户退出当前页面访问其他页面时,又需重新再次输入账号及密码。
为了解决http的无状态性,所以出现了Cookie机制,Cookie是一段用作用户身份识别和操作记录的文本信息。
Cookie机制
1.客户端请求服务器时,若服务器需要记录用户状态,就在响应用户请求时发送一段Cookie信息。
2.客户端浏览器会保存该Cookie信息,当用户再次访问该网站时,浏览器会把Cookie做为请求信息的一部分提交给服务器。
3.服务器对Cookie进行验证,以此来判断用户状态,当且仅当该Cookie合法且未过期时,用户才可直接登录网站。

客户端与服务器间的Cookie实现过程的具体步骤如下:
1.客户端请求服务器:客户端请求网站页面
2.服务器响应请求:Cookie是一种字符串,为key=value形式,服务器需要记录这个客户端请求的状态,在响应头中增加一个Set-Cookie字段。
3.客户端再次请求服务器:客户端会对服务器响应的Set-Cookie头信息进行存储。当再次请求时,将会在请求头中包含服务器响应的Cookie信息。
Cookie的存储方式
Cookie由用户客户端浏览器进行保存,按其存储位置可分为内存式存储和硬盘式存储。
1.内存式存储将Cookie保存在内存中,在浏览器关闭后就会消失,由于其存储时间较短,因此也被称为非持久Cookie或会话Cookie。
2.硬盘式存储将Cookie保存在硬盘中,其不会随浏览器的关闭而消失,除非用户手工清理或到了过期时间。由于硬盘式Cookie存储时间是长期的,因此也被称为持久Cookie。
以我使用账号所登录的B站为例子:
打开网页的开发者工具,并点击Console,输入
javascript:alert(document.cookie)

得到Cookie如下:

(本文完)