Python网络爬虫(一)Web及网络基础

1240

你可知道当在浏览器地址栏输入URL("网址”)后,Web网页是如何显示的吗?

其实,当你按下回车后,浏览器(客户端)帮你给服务器发送了请求,服务器收到请求后给出相应的响应,

1240

之后,浏览器再把响应内容进行解析,就显现出一个个丰富多彩的网页,

1240

在这个过程中,Web使用了一种名为HTTP(HyperText Transfer Protocol,超文本传输协议),完成从客户端到服务器端的一系列操作。协议,指的是规则的约定,说白了就是“规矩”。

URL(Universal Resource Locator,统一资源定位符)是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。

其基本格式为:scheme://host[:port]/path/…/[?query-string][#anchor]

  • scheme:协议(例如:http, https, ftp)
  • host:服务器的IP地址或者域名
  • port:服务器的端口(如果是走协议默认端口,缺省端口80)
  • path:访问资源的路径
  • query-string:参数,发送给http服务器的数据
  • anchor:锚(跳转到网页的指定锚点位置)

HTTP报文

用于HTTP协议交互的信息被称为HTTP报文。客户端的HTTP报文叫做请求报文,服务器端的HTTP报文叫做响应报文。其格式分别如下:

  1. 请求报文

1240

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1

HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。

1240

请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:

  • User-Agent:产生请求的浏览器类型。
  • Accept:客户端可识别的内容类型列表。
  • Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

  1. 响应报文

1240

HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文。

状态行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF

其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

1240

常见的状态码如下:

  • 200 OK:客户端请求成功。
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务。
  • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
  • 500 Internal Server Error:服务器发生不可预期的错误。
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

HTTP首部

四种HTTP首部字段类型:

  • 通用首部字段(General Header Fields): 请求报文和响应报文两方都会使用的首部;
  • 请求首部字段(Request Header Fields): 从客户端向服务器发送请求报文时使用的首部。补充了请求的附加内容,客户端的信息,响应内容相关的优先级等信息。
  • 响应首部字段(Response Header Fields): 从服务器向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
  • 实体首部字段(Entity Header Fields): 针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

通用首部字段

首部字段名说明
Cache-Control控制缓存的行为
Connection逐跳首部,连接的管理
Date创建报文的日期时间
Pragna报文指令
Trailer报文末端的首部一览
Transfer-Encoding指定报文主体的传输编码方式
Upgrade升级为其他协议
Via代理服务器的相关信息
Warning错误通知

请求首部字段

首部字段名说明
Accept用户代理可处理的媒体类型
Accept—Charset优先的字符集
Accept-Encoding优先的内容编码
Accept-Language优先的语言(自然语言)
AuthorizationWeb认证信息
Expect期待服务器的指定行为
From用户的电子邮箱地址
Host请求资源所在服务器
if-Match比较实体标记(ETag)
if-Modified-Since比较资源的更新时间
if-None-Match比较实体标记(与if-Match相反)
if-Range资源为更新时发送实体Byte的范围请求
if-Unmodified-Since比较资源的更新时间(与if-Modified-Since相反)
Max-Forwards最大传输逐跳数
Proxy-Authorization代理服务器要求客户端的认证信息
Range实体字节范围请求
Referer对请求中的URL的原始获取方法
TE传输编码的优先级
User-AgentHTTP客户端程序的信息

响应首部字段

首部字段名说明
Accept-Ranges是否接受字节范围请求
Age推算资源创建经过时间
ETag资源的匹配信息
Location令客户端重定向至指定的URL
Proxy-Authenticate代理服务器对客户端的认证信息
Rety-After对再次发起请求的时机要求
ServerHTTP服务器的安装信息
Vary代理服务器缓存的管理信息
WWW-Authenticate服务器对客户端的认证信息

实体首部字段

首部字段名说明
Allow资源科支持的HTTP方法
Content-Encoding实体主体适用的编码方式
Content-Language实体主体的自然语言
Content-Length实体主体的大小(单位:字节)
Content-Location替代对资源的URL
Content-MD5实体主体的报文摘要
Content-Range实体主体的位置范围
Content-Type实体主体的媒体类型
Expires实体主体过期的日期时间
Last-Modified资源的最后修改日期时间

为Cookie服务的首部字段

首部字段名说明首部类型
Set-Cookie开始状态管理所有的Cookie信息响应首部字段
Cookie服务器接收到的Cookie信息请求首部字段

Set—Cookie字段的属性

属性说明
NAME=VALUE赋予Cookie的名称和其值
expires=DATECookie的有效期(若不mingque指定则默认为浏览器关闭前为止)
path=PATH将服务器上的文件目录作为Cookie的适用对象(若不指定则默认为文档所在的目录)
domain=域名作为Cookie适用对象的域名(若不指定则默认为创建Cookie的服务器的域名)
Scure仅在HTTPS安全通信时才会发送Cookie
HttpOnly加以限制,使Cookie不能被JavaScript脚本访问

详情请看:
https://zh.wikipedia.org/wiki/HTTP%E5%A4%B4%E5%AD%97%E6%AE%B5

代理、网关、隧道

代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接受服务器返回的响应并转发给客户端。

1240

网关是转发其他服务器通信数据的服务器,接收从客户端所发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。

1240

隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。

1240

HTTPS

HTTP的缺点

  • 通信使用明文(不加密),内容可能会被窃听;
  • 不验证通信方的身份,因此可能遭遇伪装;
  • 无法证明报文的完整性,所以可能已遭篡改。

HTTP + 加密 + 认证 + 完整性保护 = HTTPS

HTTPS并非是应用层的一种新协议。只是普通HTTP通信接口部分用SSL和TLS协议替代而已。

SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。所以说SSL是当今世界上应用最为广泛的网络安全技术。

  • 由于HTTPS需要做服务器、客户端双方加密及解密处理,因此会消耗CPU和内存等硬件资源;
  • 和HTTP相比,SSL通信部分消耗网络资源。而SSL通信部分,又因为要对通信进行处理,所以时间上有延迟了;
  • 和HTTP相比,网络负载和速度上会变慢2~100倍。

为什么不一直使用HTTPS?

  • 一个原因与纯文本通信相比,加密通信会消耗更多的CPU及内存资,能够处理的请求数量必定会减少;
  • 另一个原因,想要节约购买证书的开销也是原因之一。

因此,如果是非敏感信息则使用HTTP通信,只有在包含个人信息等敏感数据时,才利用HTTPS加密通信。

最后,如果你想了解更多有关内容,推荐阅读《图解HTTP》、《HTTP权威指南》等一些资料。

同载于:http://www.viljw1557.cn
1240

转载于:https://www.cnblogs.com/leosco/p/10007197.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值