网络请求基础
http请求的过程
- 域名解析----TCP连接 ----发送请求-----响应请求----获取html代码----浏览器渲染
- TCP是主机对主机层的控制传输协议,提供可靠的连接服务
- TCP的三次握手
- 客户端向服务端发送连接请求报文,发送SYN包
- 服务端接收连接请求并发送SYN+ACK包给客户端
- 客户端接收ACK报文,向服务端发送ACK报文,建立连接
- TCP的四次挥手
- 第一次挥手:客户端发送一个FIN,用来关闭客户端与服务端的数据传送
- 第二次挥手:服务端接收客户端发送的FIN,发送一个ACK给客户端
- 第三次挥手:服务端发送一个FIN给客户端,用来关闭服务端与客户端的数据传送
- 第四次挥手:客户端接收到服务端发送的FIN,发送一个ACK给服务端,关闭连接
1.网络请求过程
1.1请求过程
客户端,通常指web浏览器或APP向服务器发起请求,并向客户端发起请求
用dango做对比:
用户访问url ---> uwsgi ---> 框架:urls.py ---> 视图 --> 响应 ---> uwsgi ---> 浏览器 ---> 渲染
2.请求涉及的基础
2.1请求
请求:由客户端向服务器发起的,可以分为四部分内容:
请求方法(Request Methods)
请求网址(Requets URL)
请求头(Requets Header)
请求体(Requets Body)
2.2 请求方法
- GET:请求页面,并返回页面内容
- POST:用于提交表单数据或上传文件,数据包含在请求体中
- PUT: 从客户端向服务端传送的数据取代指定文档中的内容
- DELETE:请求服务器删除指定的页面
- HEAD:类似GET请求,只不过返回的响应中没有具体的内容,用于获取数据报头
- CONNECT:把服务器当做跳板,让服务器代替客户端访问其他网页
- OPTIONS:允许客户端查看服务器的性能
- TRACE:回显服务器收到的请求,主动用于测试或诊断
#GET & POST: GET与POST的区别(重点) -->(面试出镜率高)
1.GET请求中的参数包含在URL里面,数据可以在URL 中看到, 而POST请求的URL不会包含这些数据,
POST的数据都 是通过表单形式传输的,会包含在请求体中
2.GET 请求提交的数据最多只有1024字节,而POST方式没有限制
3.POST请求比GET请求相对安全
2.3请求头
请求头,用来说明服务器要是用的附加信息。
重点掌握:Accept,Cookie,Referer,User-Agent,Host
1.Accpect: 请求包头域,用于指定客户端可接受哪些类型的信息 # 重点(*/*)
2.Cookie: 也常用复数形式,Cookies,这是网站为了辨别用户进行会话跟踪而储存在用户本地的数据。 他的主要功能是维持当前访问会话。
例如,我们输入用户名和密码成功登陆某个网站后,服务器会用会话保存登录状态信息, 后面我们每次刷新或请求该站点的其他页面时,
会发现都是登录状态,这就是Cookies的功劳。Cookies并将其发送给服务器, 服务器通过Cookies识别出是我们自己,
并且查处当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容 # 重点
3.Referer:此内容用来表示这个请求时从哪个页面发送过来的,服务器可以拿到这一信息并做相应的处理,如做统计、防盗链处理等 # 重点
4.User-Agent:简称UA,他是一个特殊的字符串头,可以是服务器识别用户的操作系统及版本、浏览器及版本等信息。
在做爬虫时,加上此信息。可以伪装为浏览器。如果不加,很可能会被识别出来为爬虫 # 重点
5. x-requested-with:XMLHTTPRequest # 代表ajax请求
6. Accept-Language:指定客户端可接受的语言类型
7. Accept-Encoding: 指定客户端可接受的内容编码
8. Content-Type: 也叫互联网媒体类型(Internet Meida Type)或者MIME类型,在HTTP协议消息头中,
他用来标识具体请求的媒体类型信息。例如: tetx/html代表HTML格式等
2.4 请求体
请求体: 请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,,请求体则为空。
get获取页面资源
get和post是否都能向服务器传递数据
3.响应
响应,是由服务器返回给客户端的, 可以分为三部分:
响应状态码(requets status code)
响应头(requets header)
响应体(requets body)
3.2 响应状态码
# 响应状态码:用于判断请求后的响应状态
# 常见状态码:
200系列:
200 成功 服务器已经处理了请求 # 重点
300系列:
301 永久移动 请求的网页已经永久移动到新位置,即永久重定向 # 重点
302 临时移动 请求的网页暂时跳转到其他页面, 即暂时重定向 # 重点
400系列:
400 错误请求 服务器无法解析该请求 # 重点
401 未授权 请求没有进行身份验证或验证未通过
403 禁止访问 服务器拒绝此请求 # 重点
404 未找到 服务器找不到请求的网页
500系列:
500 服务器内部错误 服务器遇到错误,,无法完成请求 # 重点
501 未实现 服务器不具备完成请求的功能
502 错误网关 服务器作为网关或代理,从上游服务器收到无效响应
504 网关超时 服务器作为网关或代理,但是没有及时从上游服务器收到请求
505 HTTP版本不支持 服务器不支持请求中所用的HTTP协议版本
注意:状态码不能完全代表响应状态,部分网站的状态码是自定义的,一切以响应的数据为准)
3.3 响应头介绍:
3.4 响应体介绍
响应体:重要 最重要的当属响应体的内容了。 响应的正文数据都在响应体中,
比如请求网页时, 他的响应体就是网页的HTML代码,请求一张图片时, 他的响应体就是图片的二进制数据。我们做爬虫请求网页后, 要解析的内容就是响应体。

浙公网安备 33010602011771号