网络爬虫之HTTP基本原理

Posted 青优小栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络爬虫之HTTP基本原理相关的知识,希望对你有一定的参考价值。

HTTP基本原理之URL与URI
URI全称 Uniform Resource Identifier 即统一资源标志符
URL全称 Universal Resource Locator 即统一资源定位符            
URL是URI的子集,即每个URL都是URI,但不是每个URI都是URL
URI还包括一个子类:URN(Universal Resource Name),即统一资源名称

URN之命名资源而不指定如何定位资源,比如urn:isbn:0451450523指定了一本书的ISBN,可以唯一标识这本书,但没有指定到哪里定位这本书

在目前互联网中,URN使用很少且几乎所有的URI都是URL,一般网页链接称为URL或URI

超文本(hypertext)
浏览器访问的网页就是超文本解析而成,其网页源代码是一系列html代码,源代码都是超文本。

例:在Google浏览器访问百度(https://www.baidu.com)
在页面右击选择检查或快捷键F12,打开浏览器的开发者工具
网络爬虫之HTTP基本原理

HTTP和HTTPS
通过URL访问资源时需要协议类型,常见的协议类型有
ftp、sftp、smb、http、https
在爬虫中,抓取的页面通常是http和https协议
HTTP全称Hyper Text Transfer Protocol,即超文本传输协议。
HTTP协议是用于从网络传输超文本数据到本地浏览器的传出协议,它能保证高效而准确的传输超文本文档。

了解:HTTP是由万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)共同合作制定的规范,目前广泛使用的是HTTP1.1版本。

HTTPS全称Hyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通过,即HTTP的安全版,在HTTP下加入了SSL层,简称为HTTPS。
HTTPS的安全基础是SSL,传输的内容都是经过SSL加密
其主要作用
  • 建立一个信息安全通道来保证数据传输的安全

网络爬虫之HTTP基本原理


常见问题1:您的连接不是私密连接
如果访问的https的站点提示“您的连接不是私密连接”
网络爬虫之HTTP基本原理
该站点的数据依然是经过SSL加密的,但是其站点申请的CA证书没有被CA机构所信任,所有就会存在此提示,在爬取这样的站点时需要设置忽略证书的选项,否则会提示SSL连接错误,无法正常爬取站点




HTTP请求过程
用户在浏览器地址栏中输入www.baidu.com回车后,浏览器返回百度搜索页面
网络爬虫之HTTP基本原理
浏览器即客户端向网站所在的服务器发送了一个请求,网站的服务器收到这个请求后进行处理和解析,然后做出对应的响应,传给浏览器。响应中包含了页面的源代码等内容,浏览器再对其进行解析,以网页形式呈现给用户。
客户端:PC或手机的浏览器
服务器:要访问的网站所在的服务器
例:Google浏览器访问百度搜索站点,使用快捷键F12打开开发者工具,选择network选项,刷新页面后network列表出现大量条目信息,其中每一个条目代表一次请求和响应的过程
网络爬虫之HTTP基本原理
网络爬虫之HTTP基本原理
Name:请求的名称,一般会将URL的最后一部分内容当做名称

Status:响应状态码,200为正常响应,用来判断请求是否得到了正常的响应

Type:请求的文档类型,document代表HTML文档,内容为HTML代码
网络爬虫之HTTP基本原理
Initiator:请求源,用来标记请求是由哪个对象或进程发起的

Size:从服务器下载的文件和请求的资源大小。如果是从缓存中取得的资源,则该列会显示from cache

Time:发起请求到获取响应所用的总时间

Waterfall:网络请求的可视化瀑布流
点击某个条目,可以看到数据的详细信息
网络爬虫之HTTP基本原理
网络爬虫之HTTP基本原理
General部分
Request URL:请求的URL
Request Method:请求的方法
Status Code:响应状态码
Remote Address:远程服务器地址和端口
Referrer Policy:Referrer判别策略
Response Headers:响应头
网络爬虫之HTTP基本原理
响应的一部分,包含服务器的类型、文档类型、日期等信息
Request Headers:请求头
网络爬虫之HTTP基本原理
请求的一部分,包含浏览器标识符、Cookies、Host等信息
服务器根据请求头内的信息判断请求是否合法,进而做出对应的响应

请求
请求,由客户端向服务器发出,可以分为4部分内容:
请求方法(Request Method)
请求网站(Request URL)
请求头(Request Headers)
请求体(Request Body)

请求方法
常见的请求方法有两种:GET和POST
在浏览器地址栏输入url访问,就发起了一个GET请求。在百度搜索网络安全,这是一个GET请求
网络爬虫之HTTP基本原理
URL中包含了请求的参数信息,wd后面为搜索的关键词“网络安全”
POST请求大多在表单提交时发起、例如登录表单,输入用户名和密码后,点击登录,这通常会发起一个POST请求,其数据通常以表单形式传输,不会体现在URL中

GET和POST请求方法的区别
  • GET请求中的参数包含在URL中,数据可以在URL中看到,而POST请求的URL不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。

  • GET请求提交的数据最多只有1024字节,而POST方式没有限制

GET相对不安全,在登录时账号和密码等敏感数据如果使用GET请求方法,容易造成密码泄露,在上传文件时,由于文件内容较大建议使用POST请求
各类请求方法及描述
方法
描述
GET
请求页面,并返回页面内容
HEAD
类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
POST
大多用于提交表单或上传文件,数据包含在请求体中
PUT
从客户端向服务器传送的数据取代指定文章中的内容
DELETE
请求服务器删除指定的页面
CONNECT
把服务器当做跳板,让服务器代替客户端访问其他页面
OPTIONS
允许客户端查看服务器的性能
TRACE
回显服务器收到的请求,主要用于测试或诊断


请求的网址
请求的网站,即统一资源定位符URL,它可以唯一确定我们想请求的资源

请求头
请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookies、Referer、User-Agent等
Accept:请求报头域,用于指定客户端可接受哪些类型的信息
Accept-Language:指定客户端可接受的语言类型
Accept-Encoding:指定客户端可接受的内容编码
Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置。从HTTP1.1版本开始,请求必须包含此内容
Cookie:网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是cookie的作用。Cookies里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上Cookies并将其发送给服务器,服务器通过Cookies识别出是我们自己,并且查询到当前的状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。
Referer:用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如:来源统计、防盗链处理
User-Agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在编写爬虫时需加上此信息,用来伪装成浏览器,不然可能会被网站识别触发反爬机制如封IP等等
Content-Type:互联网媒体类型(Internet Media Type)或者 MIME类型,在HTTP协议消息头中,它用来表示具体请求中的媒体类型信息。
类型如下
text/html代表HTML格式
image/gif代表GIF图片
Applicatio/json代表JSON类型
Application/x-www-form-urlencoded 代表表单类型
在编写爬虫时,大部分情况下需要设定请求头

请求体
请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,请求体为空
在爬虫中,如果要构造POST请求,需要使用正确的Content-Type,并了解各种请求库的各个参数设置时使用的是那种Content-Type,不然可能会导致POST请求提交够无法正常响应
网络爬虫之HTTP基本原理
响应
响应,由服务器返回给客户端,可以分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)

响应状态码
响应状态码表示服务器的响应状态,常见如下:
200代表服务器正常响应
404代表页面未找到
500代表服务器内部发生错误
301代表请求的网页已永久移动到新位置,即永久重定向
302代表请求的网页暂时跳转到其他页面,即暂时重定向
305代表请求者使用代理访问
400代表服务器无法解析该请求,错误请求
401代表请求没有经过身份验证或验证未通过,未授权访问


响应头
响应头包含了服务器对请求的应答信息,如Content-Type,Server,Set-Cookie等
Data:标识响应产生的时间
Last-Modified:指定资源的最后修改时间
Content-Encoding:指定响应内容的编码
Server:包含服务器的信息,比如名称、版本号等
Content-Type:文档类型,指定返回的数据类型
Set-Cookie:设置Cookies,响应头中的Set-Cookie告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies请求
Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间

响应体
响应的正文数据都在响应体中,比如请求网页时,它的响应体就是网页的HTML代码;请求一张图片时,它的响应体就是图片的二进制数据。
在浏览器开发工具中的Preview或Response,就可以看到响应体的内容


HTTP基本原理知识点整理-完结
时间:2021.20-2021.1.22                                                                                    

以上是关于网络爬虫之HTTP基本原理的主要内容,如果未能解决你的问题,请参考以下文章

网络爬虫基础之HTTP基本原理(附相关HTTPS知识)

Python爬虫学习一------HTTP的基本原理

网络爬虫入门02HTTP客户端库Requests的基本原理与基础应用

python应用之爬虫实战1 爬虫基本原理

网络爬虫基本原理——基于python语言

芝麻HTTP:爬虫的基本原理