网络爬虫之HTTP基本原理
Posted 青优小栈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络爬虫之HTTP基本原理相关的知识,希望对你有一定的参考价值。
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
浏览器访问的网页就是超文本解析而成,其网页源代码是一系列html代码,源代码都是超文本。
例:在Google浏览器访问百度(https://www.baidu.com)
在页面右击选择检查或快捷键F12,打开浏览器的开发者工具
通过URL访问资源时需要协议类型,常见的协议类型有
在爬虫中,抓取的页面通常是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加密
如果访问的https的站点提示“您的连接不是私密连接”
该站点的数据依然是经过SSL加密的,但是其站点申请的CA证书没有被CA机构所信任,所有就会存在此提示,在爬取这样的站点时需要设置忽略证书的选项,否则会提示SSL连接错误,无法正常爬取站点
用户在浏览器地址栏中输入www.baidu.com回车后,浏览器返回百度搜索页面
浏览器即客户端向网站所在的服务器发送了一个请求,网站的服务器收到这个请求后进行处理和解析,然后做出对应的响应,传给浏览器。响应中包含了页面的源代码等内容,浏览器再对其进行解析,以网页形式呈现给用户。
例:Google浏览器访问百度搜索站点,使用快捷键F12打开开发者工具,选择network选项,刷新页面后network列表出现大量条目信息,其中每一个条目代表一次请求和响应的过程
Name:请求的名称,一般会将URL的最后一部分内容当做名称
Status:响应状态码,200为正常响应,用来判断请求是否得到了正常的响应
Type:请求的文档类型,document代表HTML文档,内容为HTML代码
Initiator:请求源,用来标记请求是由哪个对象或进程发起的
Size:从服务器下载的文件和请求的资源大小。如果是从缓存中取得的资源,则该列会显示from cache
Remote Address:远程服务器地址和端口
Referrer Policy:Referrer判别策略
响应的一部分,包含服务器的类型、文档类型、日期等信息
请求的一部分,包含浏览器标识符、Cookies、Host等信息
服务器根据请求头内的信息判断请求是否合法,进而做出对应的响应
在浏览器地址栏输入url访问,就发起了一个GET请求。在百度搜索网络安全,这是一个GET请求
URL中包含了请求的参数信息,wd后面为搜索的关键词“网络安全”
POST请求大多在表单提交时发起、例如登录表单,输入用户名和密码后,点击登录,这通常会发起一个POST请求,其数据通常以表单形式传输,不会体现在URL中
GET相对不安全,在登录时账号和密码等敏感数据如果使用GET请求方法,容易造成密码泄露,在上传文件时,由于文件内容较大建议使用POST请求
|
|
|
|
|
类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
|
|
|
|
|
|
|
|
|
|
|
|
|
请求的网站,即统一资源定位符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协议消息头中,它用来表示具体请求中的媒体类型信息。
Application/x-www-form-urlencoded 代表表单类型
请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,请求体为空
在爬虫中,如果要构造POST请求,需要使用正确的Content-Type,并了解各种请求库的各个参数设置时使用的是那种Content-Type,不然可能会导致POST请求提交够无法正常响应
响应,由服务器返回给客户端,可以分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)
301代表请求的网页已永久移动到新位置,即永久重定向
302代表请求的网页暂时跳转到其他页面,即暂时重定向
401代表请求没有经过身份验证或验证未通过,未授权访问
响应头包含了服务器对请求的应答信息,如Content-Type,Server,Set-Cookie等
Last-Modified:指定资源的最后修改时间
Content-Encoding:指定响应内容的编码
Server:包含服务器的信息,比如名称、版本号等
Content-Type:文档类型,指定返回的数据类型
Set-Cookie:设置Cookies,响应头中的Set-Cookie告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies请求
Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间
响应的正文数据都在响应体中,比如请求网页时,它的响应体就是网页的HTML代码;请求一张图片时,它的响应体就是图片的二进制数据。
在浏览器开发工具中的Preview或Response,就可以看到响应体的内容
以上是关于网络爬虫之HTTP基本原理的主要内容,如果未能解决你的问题,请参考以下文章
网络爬虫基础之HTTP基本原理(附相关HTTPS知识)
Python爬虫学习一------HTTP的基本原理
网络爬虫入门02HTTP客户端库Requests的基本原理与基础应用
python应用之爬虫实战1 爬虫基本原理
网络爬虫基本原理——基于python语言
芝麻HTTP:爬虫的基本原理