1.http原理
url和uri
uri:全称是uniform resource Identifier 统一资源标识符,
url:全称是universal resource locator 统一资源定位符
url是uli的子集
超文本:hypertext
http和https
htttp的全称是hyper text transfer protocol,超文本传输协议;用于从网络传输超文本数据到本地的浏览器的传送协议,目前广泛应用的是http1.1版本
https:hyper text transfer protocol over secuer socket layer 是以安全为目标的http通道,就是http的安全版,即http下加了ssl层
htts的安全基础是ssl层,传输内容都是经过ssl加密的
主要作用有:
1.建立一个信息安全通道来保证数据传输的安全
2.确认网站的真实性,凡是使用了https的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证后的真实信息,也可以通过ca机构颁发的安全签章来查询
注意:如果ca证书不是被ca机构信任的,在浏览器上也会显示不安全,如12306;如果要爬这样的站点,就要设置忽略证书的选项,否则会提示ssl链接错误
http请求过程:这是浏览器向网站所在的服务器发送一个请求,网站服务器收到请求后进行处理和解析,然后返回对应的响应,再传回给浏览器;响应里包含了页面的源代码等内容,浏览器再对其进行解析,将网页呈现;
请求
包含四部分:请求方法method,请求网址url,请求头headers,请求体body
1.请求方法
常见的有get和post
get请求和post请求的区别
get请求中的参数在url中,数据可以在url中看得到,而post请求的url不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中
get请求提交的数据最多只有1024字节,而post方式没限制
其他请求:
get:请求页面,并返回页面内容
head:类似于get,只是返回的响应中没有具体内容,用于获取报头
post:大多用于提交表单或上传文件,数据包含在请求体中
put:从客户端向服务器传送数据取代制定文档中的内容
delete:请求服务器删除指定页面
connect:把服务器当作跳板,让服务器代替客户端访问其他网页
options:允许客户端查看服务器的性能
trace:回显服务器收到请求,主要用于测试或诊断
2请求的网址
即为统一资源定位符url,它可以唯一确定我们想请求的资源
3.请求头:
用来说明服务器要使用的附加信息,比较重要的信息有cookie,referer,user-agent等
常用的头信息:
accept:氢气报头域,用于指定客户端可接受那些类型的信息
accept-language:指定客户端可接受的语言类型
acc-encoding:指定客户端可接受的内容编码
host:用于指定请求资源的主机ip和端口号,其内容为请求url的原始服务器或网关的位置,从http1.1开始必须有此内容
cookies:网站为了辨别用户进行会话跟踪而储存在用户本地的数据,主要是维护当前访问会话。
referer:此内容用来标识这个(请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计,防盗链处理等。
user-agent:简称UA,是一个特俗的字符串头,可以使服务器识别客户是哟欧诺个的操作系统及版本,浏览器及版本等信息,在做爬虫时加上此信息,可以伪装为浏览器,如果不加很可能会被识别为爬虫。
content-type:互联网媒体类型或者mime类型,在http协议消息头中,它用来表示具体请求中的媒体类型信息,如text/html代表的html格式,image/gif代表gif图片,application/json代表的json类型,在写爬虫时,大部分情况下都需要设定请求头。
4.请求体
一般承载的内容是post请求中的表单数据,对于get请求则为空
响应
由服务端返回给客户端,可以分为,响应状态码,响应头,响应体。
响应头:
包含服务器对请求的应答信息
常用的头信息:
date:标识响应产生的时间
last-modified:指定响应内容的编码
content-encoding:指定响应内容的编码
server:包含服务器的信息,比如名称,版本号等
content-type:文档类型,指定返回的数据类型是什么,如text/html代表返回html文档,application/x-javascript则代表返回javascript文件,image/jpeg则代表返回图片
set-cookie:设置cookies,响应头中的set-cookie 告诉浏览器需要将此内容放在cookies中,下次请求携带cookies请求
expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中,再次访问时直接从缓存中加载
响应体:响应正文的数据都在响应体中
网友评论