http以及https的概念和区别:
HTTPS比HTTP更安全,但性能更低
- HTTP:超文本传输协议,默认端口号是80
- 超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等内容
- 传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容
- HTTPS:HTTP+SSL(安全套接字层),即带有安全套接字层的超文本传输协议,默认端口号是443
- SSL对传输的内容(超文本,也就是请求体或响应体)进行加密
- 可以打开一个浏览器访问一个url,右键检查,点击net work,点击一个url,查看http协议的形式
- 他们的连接方式不同,HTTP连接简单,明文传输,是无状态的,而HTTPS由于有了SSL所以是加密传输的,更加安全。
- HTTPS需要到ca申请证书,多半都是要花钱。
常见的请求头与响应头
请求头
- Content-Type (请求内容的类型)
- Host (主机和端口号)
- Connection (链接类型)
- Upgrade-Insecure-Requests (升级为HTTPS请求)
- User-Agent(用户代理,告诉服务器发送请求的浏览器及机器信息)
- Referer (页面跳转处,我们是从哪一个页面跳转过来的)
- Cookie (Cookie,状态保持)
- Authorization (用于表示HTTP协议中需要认证资源的认证信息,比如jwt认证)
响应头
- Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)
Webkit浏览器引擎 数据库和模板渲染成一个结果返回来 浏览器引擎就是用来将结果返回给用户的 自动将文件结果做成一个效果返回给用户
常见的响应状态码
302 跳转 新的url在响应的Location头中给出
303 浏览器对于POST的响应进行重定向至新的url
307 浏览器对于GET的响应重定向至新的url
503 服务器由于维护或者负载过重未能应答,在响应中可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503。
在爬虫中多了博弈的过程,状态码是不可信的,一切以是否抓包得到的响应中获取到的数据为准。
network中抓包得到的源码才是判断依据,elements中的源码是渲染之后的源码,不能作为判断标准。
浏览器的运行过程
- 1.浏览器拿到域名通过dns域名解析拿到ip后,先向地址栏中的url发起请求,并获取响应
- 2.在返回的响应内容(html)中,会含有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他请求,并获取相应的响应
- 3.浏览器每返回一个响应就对展示出的结果进行添加(加载),js、css等内容会修改页面的内容,js也可以重新发送请求,获取响应
- 4.从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改----这个过程叫做浏览器的渲染
浏览器
发送所有请求,进行渲染
爬虫
只发送指定请求,不会渲染
浏览器展示的结果可以由多次请求对应的多次响应共同渲染出来,而爬虫是一次请求对应的一个响应
骨骼文件
html静态文件
肌肉文件
js/ajax请求
皮肤
css/font/图片等
抓包过程:
- 根据发送请求的流程分别在 骨骼 / 肌肉/ 皮肤响应中查找数据
注意:
但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应(该响应的内容可以是html,css,js,图片等)
浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样,是因为爬虫不具备渲染的能力
- 浏览器最终展示的结果是由多个url地址分别发送的多次请求对应的多次响应共同渲染的结果
- 所以在爬虫中,需要以发送请求的一个url地址对应的响应为准来进行数据的提取