HTTP/2 协议(Wireshark 抓取浏览器加密的 HTTP2)

简介: HTTP/2 协议(Wireshark 抓取浏览器加密的 HTTP2)

1.HTTP/1.1 面临的问题

  • 从几 KB 大小的消息,到几 MB 大小的消息。
  • 每个页面小于 10 个资源,到每页面 100 多个资源。
  • 从文本为主的内容,到富媒体(如图片、声音、视频)为主的内容。
  • 对页面内容实时性要求的应用越来越多。
  • 高延迟带来页面加载速度的降低。
  • 随着带宽的增加,延迟并没有显著下降。
  • 并发连接有限。
  • 同一连接同时只能在完成一个 HTTP 事务(请求/响应)才能处理下一个事务。
  • 単连接上的串行请求
  • 无状态导致的高传输量(低网络效率)
  • HTTP/1.1 不支持服务器推送消息

2.HTTP/2 特性

  • SPDY(2012-2016)
  • HTTP2(RFC7540,2015.5)
  • 在应用层上修改,基于并充分挖掘 TCP 协议性能
  • 客户端向 server 发送 request 这种基本模型不会变
  • 老的 scheme 不会变,没有 http2://
  • 使用 http/1.x 的客户端和服务器可以无缝的通过代理方式转接到 http/2 上
  • 不识别 http/2 的代理服务器可以将请求降级到 http/1.x

3.HTTP/2的应用情况

  • 截止 2015.5.17 号,互联网上使用 HTTP/2协议的站点已经达到 37.2%
  • 快速推广的原因:未改变 HTTP/1.1 的语义,基于 TCP,仅在应用层变动

4.HTTP/2 主要特性

  • 传输数据量的大幅减少:以二进制方式传输,标头压缩
  • 多路复用及相关功能:消息优先级
  • 服务器消息推送:并行推送

5.Chrome 浏览器检测 HTTP/2 插件

  • HTTP/2 and SPDY indicator

Tips:该插件可以坚持某个网站是否支持 HTTP/2

6.TLS1.2 的加密算法

  • 常见加密套件。

  • 对称加密算法:AES_128_GCM:每次建立连接后,加密密钥都不一样。
  • 密钥生成算法 ECDHE:客户端与服务器通过交换部分信息,各自独立生成最终一致的密钥。

7.Wireshark 如何解密 TLS 消息?

  • 原理:获得 TLS 握手阶段生成的密钥,通过 Chrome 浏览器 DEBUG 日志中的握手生成密钥
  • 步骤:1.配置 Chrome 输出 DEBUG 日志,配置环境变量 SSLKEYLOGFILE,在 Wireshark 中配置解析 DEBUG 日志,编辑->首选项->Protocols->TLS/SSL

步骤1:打开环境变量

步骤2:新建用户变量 SSLKEYLOGFILE,路径如 E:\soft\Chrome\mytestssl.txt:

步骤3:打开 Wireshark 中的 编辑->首选项->Protocols->TLS->(Pre)-Master-Secret log filename 浏览选择上述生成的文件:

步骤4:Chrome 浏览器访问支持 HTTP2 协议的网站,如 sina.com.cn 之后 E:\soft\Chrome\mytestssl.txt 文件中就会打印 Chrome 产生的密钥:

Tips:图中文件记录了 Chrome 浏览器每次请求产生密钥。

步骤5:以抓取浏览器访问 sina.com.cn 首页为例,抓取到的报文如下:

Tips:如图出现了 HTTP2 就表示解密成功,若没有解密成功只会看到 TLS相关的报文。

8.HTTP/2 是不是必须基于 TLS/SSL 协议?

  • IETF 标准不要求必须基于 TLS/SSL 协议。
  • 浏览器要求必须基于 TLS/SSL 协议。
  • TLSALPN(Application Layer Protocol Negotiation) 扩展作协商,只认 HTTP/1.x 的代理服务器不会干扰 HTTP/2
  • schema:http://https:// 默认基于 80443 端口。
  • h2:基于 TLS 协议运行的 HTTP/2 被称为 h2
  • h2c:直接在 TCP 协议之上运行的 HTTP/2 被称为 h2c
相关文章
|
数据采集 JavaScript 前端开发
“所见即所爬”:使用Pyppeteer无头浏览器抓取动态壁纸
“所见即所爬”:使用Pyppeteer无头浏览器抓取动态壁纸
|
数据采集 Web App开发 JavaScript
应对反爬:使用Selenium模拟浏览器抓取12306动态旅游产品
应对反爬:使用Selenium模拟浏览器抓取12306动态旅游产品
|
11月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
1201 0
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
1278 0
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
925 0
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
484 19
|
网络安全 开发者
如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
394 19
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
1252 20
|
网络协议 安全 网络安全
HTTP与HTTPS协议入门
HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。
1039 26
HTTP与HTTPS协议入门