|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Stubborn 于 2019-1-16 06:05 编辑
HTTP基础原理
1.1.1 URI和URL
URI是统一标志符 URL是统一定位符
URL是URI的子集,也就是说所有的URL都是URI,但不是每个URI都是5RL。
1.1.2 超文本
超文本,英文名称hypertxt,平常所浏览的网页都是超文本解析而成,其网页源代码是一系列的HTML代码,里面包含一系列的标签。
1.1.3 HTTP和HTTPS
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
[b]1.1.4 HTTP请求过程[/b]
客===发送请求===>服
户 务
端<===响应======器
当我们在web浏览器的地址栏中输入网址回车是,浏览器会向所在的网址服务器发送一个请求,网站服务器接受到这个请求后进行处理和解析,然后返回对应的响应,接着传给浏览器,响应里面包含了页面的源代码等内容,浏览器经过解析,将具体内容呈现在用户眼前。
“参考链接:https://www.cnblogs.com/xuzekun/p/7527736.html”
当我们在web浏览器的地址栏中输入: www.baidu.com,然后回车,到底发生了什么?
1.对www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址
2.根据这个IP,找到对应的服务器,发起TCP的三次握手
3.建立TCP连接后发起HTTP请求
4.服务器响应HTTP请求,浏览器得到html代码
5.浏览器解析html代码,并请求html代码中的资源(如js、css图片等)(先得到html代码,才能去找这些资源)
6.浏览器对页面进行渲染呈现给用户
1.1.15 请求
即客户端向服务器发送的请求;其主体包括a.请求网址(Reqest URL),b.请求方法(Reuqest Method),c.请求头(Request Header)d.请求正文,或者说请求体(Request Body)
a.请求网址(Reqest URL):即统一定位符URL,它可以唯一确定我们想请求的资源。
b.请求方法(Reuqest Method):两种b1.GET b2.POST
“参考链接:https://www.cnblogs.com/foodoir/p/5911099.html”
b1.GET:比如我们百度python,这个就是一个GET请求方法,在其链接URL里面可以查询到请求参数信息“python"
b2.POST:比如对于一个登陆表单,我们输入账户密码进行登陆,这个就是一个POST请求方法,其数据用表单形式传输,不会体现在URL里面
GET与POST区别:
1,GET方法用于信息获取,它是安全的(安全:指非修改信息,如数据库方面的信息),而POST方法是用于修改服务器上资源的请求;
2,GET请求的数据会附在URL之后,而POST方法提交的数据则放置在HTTP报文实体的主体里,所以POST方法的安全性比GET方法要高;
3,GET方法传输的数据量一般限制在2KB,其原因在于:GET是通过URL提交数据,而URL本身对于数据没有限制,但是不同的浏览器对于URL是有限制的,比如IE浏览器对于URL的限制为2KB,而Chrome,FireFox浏览器理论上对于URL是没有限制的,它真正的限制取决于操作系统本身;
POST方法对于数据大小是无限制的,真正影响到数据大小的是服务器处理程序的能力
4,其余还有6种请求方法,这里不说了,有兴趣可以自己参考上述链接
c.请求头(Request Headers)
请求头包含了对服务器的请求信息,下面简述一些常用的:
“参考链接:https://blog.csdn.net/alexshi5/article/details/80379086”
“参考链接:https://baike.baidu.com/item/http请求头/6623287”
1.Accept:浏览器可接受的MIME类型。请求报头域,用于指定客户端可接受那些类型的信息。
2.Accept-Encoding:浏览器可接受的字符集,指定客户端可接受的语言类型。
3.Accept-Language:浏览器能够进行解码的数据编码方式,制动客户端可接受的内容编码
4.Host:初始URL中的主机和端口。用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关位置
5.Cookie:这是最重要的请求头信息之一,也常用复数行书Cookies,这是网站为了辨别用户进行的会话跟踪而储存在用户本地的数据。它的主要功能就是维持当前的访问页面会话。例如你登陆鱼C网站,并记录了登陆状态,下次登陆则不需要再次登陆,服务器就是通过Cookies识别出是我们自己,并查询出当前状态是登陆状态,所以返回结果是登陆之后才
能看到的页面内容。
6.Referer:表示浏览器所访问的前一个页面,可以认为是之前访问页面的链接将浏览器带到了当前页面。此内容用于标识这个请求是从哪个页面发过来的,服务器可以拿到这以信息 并做相应的处理,如做来源统计,防盗链处理等
7.User-Agent:浏览器的身份标识字符串
8.Content-Type:请求体的MIME类型或者叫互联网媒体类型(用于POST和PUT请求中),在HTTP协议消息头中,它用来标识具体请求中的媒体类型信息,如,text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON类型,更多对应参考一下链接:
“http://tool.oschina.net/commons"
因此,请求头是请求的重要组成部分,在写爬虫时,大部分情况下,都需要设定请求头
d.请求正文,或者说请求体(Request Body)
请求体一般承载的内容是POST请求中的表单数据,对于GET请求,请求体则为空。
在写爬虫中,若果要构造POST请求,需要使用正确的Content-Type,并了解各种请求库的各个参数设置时使用的时那种Content-Type,不然可能导致POST提交之后无法组成响应
1.1.6 响应或者响应头
响应,由服务器返回给客户端,分为三部分,a.响应状态码(Request Status Code),b.响应头(Request Headers),c.响应体(Request Body)
a.响应状态码(Request Status Code)
"参考链接:http://tool.oschina.net/commons?type=5“
响应状态码标识服务器的响应状态,如200请求已成功,请求所希望的响应头或数据体将随此响应返回。跟多参考上述链接
b.响应头(Request Headers)
“参考链接:https://itbilu.com/other/relate/ ... tp-response-headers"
响应头包含了服务器对请求的应答信息,下面简述一些常用的:
Date:发送该消息的日期和时间(以RFC 7231中定义的"HTTP日期"格式来发送),标识响应产生的时间
Last-Modified:所请求的对象的最后修改日期(按照 RFC7231中定义的“超文本传输协议日期”格式来表示)
Content-Encoding:指定响应内容的编码,响应资源所使用的编码类型。
Server:包含服务器的信息,如名称版本号等。服务器的名称
Content-Type:请求体的MIME类型 (用于POST和PUT请求中),文档类型,指定返回的数据类型是什么。
Set-Cookie:设置Cookies,响应头中的Set-Cookie告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies请求
Expires:指定响应的过期时间,可以使用代理服务器或者浏览器将加载的内容跟新到缓存中,如果再次访问,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。
c.响应体(Request Body)
最重要的当属响应体的内容了,响应的正文数据都在响应体重,比如请求网页是,他的响应体就是网页的HEML代码,请求一张图片是,他的响应体就是图片的二进制数据。我们做爬虫要解析的内容就是响应体。 |
评分
-
查看全部评分
|