(协议分析)通过抓包分析HTTP协议以及包中内容
Posted xialuoxialuo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(协议分析)通过抓包分析HTTP协议以及包中内容相关的知识,希望对你有一定的参考价值。
因为网络安全往往需要一门脚本语言的支持,不然只能用着别人的工具。因此决定从学习编写一只爬虫开始,来入门python掌握一门脚本语言,学习爬虫,当然与http协议离不了关系,因此先分析一下http的工作流程
HTTP协议
1.什么是HTTP
http协议是超文本传输协议,它定义了浏览器和服务器之间的通信规则,http有两个程序实现,一个客户端程序,一个服务器程序,从层次结构上来看属于应用层的协议,使用tcp作为它的支撑运输协议,并且是一种无状态协议,以此来降低服务器的负荷
2.工作原理
HTTP:客户端与服务器端建立连接 -————客户端发出请求报文———— 服务器端发出应答报文
HTTPS:现在大多数页面使用HTTPS来进行数据的交流,因为HTTP报文都是明文的,一旦目标截取数据包,很有可能得到用户的账号密码
过程: 主机向服务器发送请求,想要建立连接—————服务器向主机返回一个公钥(公钥需要到认证中心申请,因此许多做黑产的页面只能使用http)——————主机收到公钥后,利用公钥对自己的请求报文进行加密——————服务器收到后利用自己的私钥进行解密
3.http请求
包括 请求行 请求头 请求内容
请求方式有get、post、put、delet等等
这里主要说下最常见的两种get和post post可以承载更多的发送信息
post请求
如图---------在百度 搜索123 后抓取到如上图的数据包
POST:请求方式以及使用的HTTP的版本
URI:统一资源标识符(注意URI和URL是两种不同的概念,但是可以把它当作url来理解,下面是对于两者区别的详细讲解)
https://www.jianshu.com/p/ba15d066f777
Request Version:版本信息
Request Method:请求方法
Host:表示向哪一台主机发送请求
Accept:告诉浏览器我可以接收哪些数据类型
Accept-Encoding:告诉浏览器,支持的压缩格式
User-Agent:客户机使用的浏览器以及版本信息
Cache Control:缓存控制
Connection:告诉服务器请求完后是断开还是保持连接
Content-Length:我可以接收的数据的长度
Full-Request URI:所请求的完整的URI
HTTP Request :HTTP请求的进度
Response in frame 请求的帧
request请求
Request URI 以及请求的内容
Request path 所请求的路径
Referer:表示的含义是你是从哪个页面来到此页面的,服务器往往通过referer来防盗链
Cookie:http往往是种无状态协议,因此大部分页面使用cookies来对用户进行表示,从而实现登录功能
(这里出了点问题,因为现在的页面大都是https的包,导致我抓不到几个数据包,唉)
4.http响应
响应同样也包括 响应行 响应头 响应内容
Sever:服务器信息
Last-modified:上一次修改时间
状态码含义以及常见的状态码:我们可以通过状态码得到此次请求是否成功
1XX 表示信息 如
2XX 表示请求成功
3XX 表示重定向
4XX 表示问题在客户端
5XX 表示问题在服务器端
几个常见的状态码
- 200 OK 请求成功(其后是对GET和POST请求的应答文档。)
- 302 Found 所请求的页面已经临时转移至新的url
- 400 Bad Request
- 403 Forbidden 对被请求页面的访问被禁止
- 404 Not Found服务器无法找到被请求的页面。
- 500 Internal Server Error
请求未完成。服务器遇到不可预知的情况。 - 502 Bad Gateway
请求未完成。服务器从上游服务器收到一个无效的响应。 - 504 Gateway Timeout
网关超时。
在抓取数据包时,发现wireshark不能够抓取https的数据包
然而现在页面大多数都是https,唉
以上是关于(协议分析)通过抓包分析HTTP协议以及包中内容的主要内容,如果未能解决你的问题,请参考以下文章
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)