一、http/https协议
1、学习http/https协议原因
2、什么是http/htttps协议?
HTTP(超文本传输协议):HTTP是一个客服端和服务器请求和应答的标准。
通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。
由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1+200+OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。
HTTPS=HTTP+SSL,默认端口号:443
区别:HTTPS比HTTP更安全,但是性能更低。
二、爬虫特别关注的请求头和响应头
1、特别关注的请求头字段
a、Content-Type 请求内容类型
b、Host:域名
c、Connection:keep-alive 长链接
d、Upgrade-Insecure-Requests :升级为HTTPS请求
e、User-Agent : 用户代理,提供浏览器信息和系统信息
f、Referer:页面跳转处,防盗链(图片/视频)
g、Cookie :状态保持
h、Authorization:认证信息
2、特别关注的响应头字段
Set-Cookie:让浏览器记录服务器设置或保存的cookie
例:在http://so.lenovo.com.cn/)中搜索"报文":
三、常见的响应状态码
a、200:成功
b、302:跳转,新的url在响应的Location头中给出
c、303:浏览器对于POST的响应重定向至新的url
d、307:浏览器对于GET的响应重定向之新的url
e、403:资源不可用;服务器理解客户的需求,但拒绝处理它(没有权限)
f、404:找不到该页面
g、500:服务器内部错误
h、503:服务器由于维护或者负载过重未能应答,在响应中可能会携带Retry-After(多久之后重新尝试)响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503响应状态码。
出现问题则尝试浏览器访问
所有的状态码都不可信,一切以是否从抓包得到的响应中获取到数据为准。
network中抓包得到的源码才是判断依据,elements中的源码是渲染之后(汇总)的源码,不能作为判断标准。
例:搜索(http://www.baidu.com/):(图片右下角表示响应获取的数据)