大数跨境
0
0

网络爬虫原理系列 —— HTTP协议

网络爬虫原理系列 —— HTTP协议 曼昂网络爬虫
2015-09-11
2
导读:HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTT

HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。


HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。


HTTP协议的主要特点可概括如下:

1.支持客户/服务器模式。

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。


HTTP协议的每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。


如下为一个HTTP协议请求应答示例:

Remote Address:114.215.209.238:80 //连接的服务器地址

Request URL:http://www.yuezunvip.com/ //访问的URL

Request Method:GET //访问的方法 GET

Status Code:200 //访问结果状态 200 为成功


//请求头部信息

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Encoding:gzip,deflate,sdch

Accept-Language:zh-CN,zh;q=0.8,en;q=0.6

Cache-Control:max-age=0

Connection:keep-alive

Cookie:uid=ctfR7lUpNoqVLjo4AwMMAg==

Host:www.yuezunvip.com

If-Modified-Since:Mon, 10 Aug 2015 02:16:54 GMT

User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36


//响应头部信息

Connection:keep-alive

Date:Mon, 07 Sep 2015 01:13:04 GMT

ETag:"55c80996-4a4"

Last-Modified:Mon, 10 Aug 2015 02:16:54 GMT

Server:nginx


Host头域

Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。


Referer头域

Referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。


User-Agent头域

User-Agent 表示当前使用软件的版本类型(如浏览器类型、爬虫的名称等)。


Cache-Control头域

Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。


Last-Modified头域

Last-Modified头域表示请求的内容修改的时间,时间的描述格式由rfc822定义。例如,Last-Modified:Mon, 10 Aug 2015 02:16:54 GMT。描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。


【声明】内容源于网络
0
0
曼昂网络爬虫
我们是程序员开发者联盟,利用业余时间提供网络爬虫软件定制、微站、H5、网站等各类软件开发服务,有意者请留言!
内容 96
粉丝 0
曼昂网络爬虫 我们是程序员开发者联盟,利用业余时间提供网络爬虫软件定制、微站、H5、网站等各类软件开发服务,有意者请留言!
总阅读4
粉丝0
内容96