目录
3. Upgrade-Insecure-Requests (升级为HTTPS请求)
举例:Accept-Encoding:gzip;q=1.0, identity; q=0.5, *;q=0
举例:Accept-Charset:iso-8859-1,gb2312,utf-8
举例:Content-Type = Text/XML; charset=gb2312:
1. Cache-Control:must-revalidate, no-cache, private。
4. Content-Type:text/html;charset=UTF-8
5. Date:Sun, 21 Sep 2016 06:18:21 GMT
6. Expires:Sun, 1 Jan 2000 01:00:00 GMT
前言
在开始学习爬虫之前,我们必须了解和知道网页的相关运作原理,也就是http和https协议是如何去运作的,下面我会详细去介绍关于这方面的相关知识点,我们往下看!
简介
HTTP的请求与响应
HTTP通信由两部分组成: 客户端请求消息 与 服务器响应消息
浏览器发送HTTP请求的过程:
-
当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。
-
当我们在浏览器输入URL 百度一下,你就知道 的时候,浏览器发送一个Request请求去获取 百度一下,你就知道 的html文件,服务器把Response文件对象发送回给浏览器。
-
浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
-
当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。
统一资源定位符:URL(Uniform / Universal Resource Locator的缩写)是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。
例如:
-
ftp://192.168.0.116:8080/index
-
百度一下,你就知道
-
京东安全
HTTP请求主要分为Get
和Post
两种方法
注意:避免使用Get方式提交表单,因为有可能会导致安全问题。 比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。
查看网页请求
以chrome浏览器为例,在网页上点击鼠标右键,检查(或者直接F12),选择network,刷新页面,选择ALL下面的第一个链接,这样就可以看到网页的各种请求信息,下面会做详细介绍
常用的请求报头
1. Host (主机和端口号)
2. Connection (链接类型)
keep-alive在很多情况下能够重用连接,减少资源消耗,缩短响应时间,比如当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都去请求建立连接。
3. Upgrade-Insecure-Requests (升级为HTTPS请求)
4. User-Agent (浏览器名称)
5. Accept (传输文件类型)
举例:
Accept: */*
:表示什么都可以接收。
Accept:image/gif
:表明客户端希望接受GIF图像格式的资源;
Accept:text/html
:表明客户端希望接受html文本。
Accept: text/html, application/xhtml+xml;q=0.9, image/*;q=0.8
:表示浏览器支持的 MIME 类型分别是 html文本、xhtml和xml文档、所有的图像格式资源。
*q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容。若没有指定q值,则默认为1,按从左到右排序顺序;若被赋值为0,则用于表示浏览器不接受此内容类型。*
*Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;Application:用于传输应用程序数据或者二进制数据。详细请点击*
6. Referer (页面跳转处)
7. Accept-Encoding(文件编解码格式)
举例:Accept-Encoding:gzip;q=1.0, identity; q=0.5, *;q=0
如果有多个Encoding同时匹配, 按照q值顺序排列,本例中按顺序支持 gzip, identity压缩编码,支持gzip的浏览器会返回经过gzip编码的HTML页面。 如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。
8. Accept-Language(语言种类)
9. Accept-Charset(字符编码)
Accept-Charset:指出浏览器可以接受的字符编码。
举例:Accept-Charset:iso-8859-1,gb2312,utf-8
-
ISO8859-1:通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符,英文浏览器的默认值是ISO-8859-1.
-
gb2312:标准简体中文字符集;
-
utf-8:UNICODE 的一种变长字符编码,可以解决多种语言文本显示问题,从而实现应用国际化和本地化。
如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。
10. Cookie (Cookie)
11. Content-Type (POST数据类型)
Content-Type:POST请求里用来表示的内容类型。
举例:Content-Type = Text/XML; charset=gb2312:
指明该请求的消息体中包含的是纯文本的XML类型的数据,字符编码采用“gb2312”。
服务端HTTP响应
HTTP响应也由四个部分组成,分别是: 状态行
、消息报头
、空行
、响应正文
HTTP/1.1 200 OK Server: Tengine Connection: keep-alive Date: Wed, 30 Nov 2016 07:58:21 GMT Cache-Control: no-cache Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=20 Vary: Accept-Encoding Pragma: no-cache X-NWS-LOG-UUID: bd27210a-24e5-4740-8f6c-25dbafa9c395 Content-Length: 180945 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ....
常用的响应报头(了解)
理论上所有的响应头信息都应该是回应请求头的。但是服务端为了效率,安全,还有其他方面的考虑,会添加相对应的响应头信息,从上图就可以看到。
1. Cache-Control:must-revalidate, no-cache, private。
2. Connection:keep-alive
3. Content-Encoding:gzip
4. Content-Type:text/html;charset=UTF-8
5. Date:Sun, 21 Sep 2016 06:18:21 GMT
6. Expires:Sun, 1 Jan 2000 01:00:00 GMT
7. Pragma:no-cache
8.Server:Tengine/1.4.6
9. Transfer-Encoding:chunked
10. Vary: Accept-Encoding
Cookie 和 Session:
响应状态码
响应状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
常见状态码:
网页的两种加载方法
认识网页源码的构成
在网页中右键点击查看网页源码,可以查看到网页的源代码信息。 源代码一般由三个部分组成,分别是:
爬虫协议(了解)
[robots协议百度百科]链接:
https://baike.baidu.com/item/robots%E5%8D%8F%E8%AE%AE/2483797?fr=aladdin
以上就是本期的全部内容,关于http和https想相关知识点就先介绍到这里了,我们下一期再见!
分享一张壁纸: