2022 年 6 月,在发布了一组与 HTTP 相关的互联网标准(包括正式定义 HTTP/3 的 RFC)后,我们发布了 HTTP RFC 的演变情况:Cloudflare HTTP 使用趋势视图。一年过去了,随着 RFC 迎来一周岁生日,我们认为回顾过去一年这些趋势的演变将会很有意义。
我们之前的文章回顾了 2021 年 5 月至 2022 年 5 月期间在 Cloudflare 网络中观察到的 HTTP/1.1、HTTP/2 和 HTTP/3 使用趋势,按版本和浏览器系列以及搜索引擎索引和社交媒体机器人进行分类。当时我们发现,尽管 HTTP/3 的使用量显示出增长的迹象,但浏览器驱动的流量绝大多数使用 HTTP/2。搜索和社交机器人对 HTTP/1.1 与 HTTP/2 的偏好各不相同,但几乎没有使用 HTTP/3。
在 2022 年 5 月至 2023 年 5 月期间,我们发现 HTTP/3 在浏览器检索内容中的使用率持续增长,但搜索引擎索引和社交媒体机器人仍然有效地忽略了最新版本的 Web 核心协议。(尽管如此,HTTP/3 的优势是以用户为中心的,对于旨在异步抓取和索引内容的机器人来说,其优势微乎其微。这可能是我们看到这些自动用户代理采用率如此之低的一个关键原因。)此外,HTTP/3 在 API 流量中的使用率仍然很低,但在这一年中翻了一番。使用 Cloudflare 免费服务层级的区域默认启用对 HTTP/3 的支持,而付费客户可以选择激活支持。
HTTP/1.1 和 HTTP/2 使用 TCP 作为传输层,并通过 TLS 添加安全性。HTTP/3 使用 QUIC 来提供传输层和安全性。由于传输层的差异,用户代理通常需要先了解可以使用 HTTP/3 访问来源,然后再尝试。一种发现方法是 HTTP 替代服务,即服务器返回 Alt-Svc 响应标头,其中包含受支持的应用程序层协议协商标识符 (ALPN ID) 列表。另一种方法是 HTTPS 记录类型,客户端查询 DNS 以了解支持的 ALPN ID。HTTP/3 的 ALPN ID 是“h3”,但在规范处于开发和迭代阶段时,我们添加了一个后缀来标识特定的草案版本,例如“h3-29”标识草案 29。为了对广泛的客户端保持兼容性,Cloudflare 公告了“h3”和“h3-29”。然而,草案 29 已于近三年前发布,客户已跟上对最终 RFC 的支持。截至 2023 年 5 月下旬,Cloudflare 不再为启用了 HTTP/3 的区域公告 h3-29,这有助于在每个本需要包含该内容的 HTTP 响应或 DNS 记录上节省几个字节。由于浏览器和 Web 服务器通常会自动协商可用的最高 HTTP 版本,因此 HTTP/3 优先于 HTTP/2。
在下面的部分中,基于 Cloudflare 机器人评分的“可能为自动化”和“自动化”流量已被过滤掉,未用于桌面和移动浏览器分析,以将分析限制为“可能是人类”流量,但在搜索引擎和社交媒体中机器人分析中是包含这些流量的。此外,下文中提到的 HTTP 请求或 HTTP 流量包括通过 HTTP 和 HTTPS 发出的请求。
基于 HTTP 版本的总体请求分布情况
通过每天将全球 Web 流量汇总到 Cloudflare,我们可以观察一年的调查期间内 HTTP/1.1、HTTP/2 和 HTTP/3 的使用趋势。从 5 月到 9 月底,HTTP/1.1 流量所占比例从 8% 下降到 7%,但到 10 月又迅速增长到 11% 以上。进入新一年的一月份后,它一直保持在高位,到 2023 年 5 月回落到 9%。有趣的是,在 10 月份增加之后,工作日/周末的流量模式变得更加明显,并在随后的 6 个月中保持不变。HTTP/2 请求份额在这一年中出现了微弱的变化,从 2022 年 5 月的 68% 左右开始,到 6 月开始略有下降。此后,它的份额变化不大,在期间结束时仅略低于 64%。HTTP/2 没有明显的工作日/周末模式。通过 HTTP/3 的请求份额从 2022 年 5 月刚刚超过 23% 开始,到 8 月和 9 月增长到刚刚超过 30%,但到 11 月又下降到 26% 左右。在经历了一些微弱的下降和增长之后,它在调查期结束时的份额为 28%。(请注意,由于在 6 月初生成图表时遇到数据保留限制,本图表从 5 月下旬开始。)
基于 HTTP 版本的 API 请求分布情况
尽管 API 流量占 Cloudflare 请求量的很大一部分,但这些请求中只有一小部分是通过 HTTP/3 发出的。大约一半的此类请求是通过 HTTP/1.1 发出的,另外三分之一是通过 HTTP/2 发出的。不过,API 的 HTTP/3 使用率从 2022 年 5 月的约 6% 增长到了 2023 年 5 月的 12% 以上。HTTP/3 的流量份额较小,部分原因可能是 curl 等关键工具对 HTTP/3 的支持仍被视为“实验性”。如果这种情况在未来发生变化,随着 HTTP/3 在此类工具中获得一流的支持,我们预计这将加速 HTTP/3 使用率在 API 中和整体上的增长。
基于 HTTP 版本的已缓解请求分布情况
上述分析考虑了向 Cloudflare 发出的所有 HTTP 请求,但我们也认为,研究潜在恶意流量的 HTTP 版本使用情况会很有趣,因此我们分解了那些通过 Cloudflare 应用程序安全解决方案之一得到缓解的请求。上图显示,绝大多数被缓解的请求是通过 HTTP/1.1 和 HTTP/2 发出的,通过 HTTP/3 发出的请求一般不到 5%。被缓解的请求似乎最常通过 HTTP/1.1 发出,不过 HTTP/2 在 8 月初到 11 月下旬期间占据了更大的份额。这些观察结果表明,攻击者似乎并没有投入精力升级他们的工具以利用最新版本的 HTTP,而是认为旧版本的协议足以满足他们的需求。(请注意,由于在 2023 年 6 月初生成图表时遇到数据保留限制,本图表从 2022 年 5 月下旬开始。)
桌面浏览器的 HTTP/3 使用情况
正如我们去年指出的那样,主要浏览器的稳定发布渠道中对 HTTP/3 的支持分别于 2020 年 11 月(Google Chrome 和 Microsoft Edge)以及 2021 年 4 月 (Mozilla Firefox) 提供。我们还注意到,在 Apple Safari 中,需要在生产版本的“实验功能”开发人员菜单中启用 HTTP/3 支持。然而,在 Safari 的最新版本中,似乎不再需要此步骤,现在原生支持 HTTP/3。
从各浏览器的请求份额来看,Chrome 浏览器在开始阶段占 HTTP/3 请求量的 80% 左右,但随着 Safari 浏览器的持续增长,到 2023 年 5 月,这一比例下降到 74% 左右。一年前,Safari 浏览器在 Cloudflare 的 HTTP/3 流量中所占比例不到 1%,但到 2023 年 5 月,这一比例增长到了近 7%,这可能是支持从实验阶段过渡到生产阶段的结果。
从图表中再次移除 Chrome 浏览器后,其他浏览器的趋势更加明显。如上所述,Safari 浏览器在去年经历了大幅增长,而 Edge 浏览器在 2022 年 6 月从略低于 10% 跃升至略高于 11%。在新的一年里,它一直保持在这一水平附近,然后在接下来的几个月里逐渐降至 10% 以下。Firefox 浏览器略有下降,从 10% 左右降至 9% 以下,而 Internet Explorer 浏览器报告的 HTTP/3 流量几乎为零。
正如我们在去年的文章中所做的那样,我们也想看看 HTTP 版本的份额在过去一年中在各主流浏览器中的变化情况。HTTP/2 和 HTTP/3 在过去一年中相对稳定,这与去年所发表文章中的观察结果形成了鲜明对比,去年的观察结果表明,在 2021 年 5 月至 2022 年 5 月期间,HTTP/2 和 HTTP/3 发生了一些明显的变化。
在按协议版本查看主要桌面浏览器系列的请求份额时,我们发现在所有这些浏览器系列中,HTTP/1.1 份额在 10 月底都在增长。进一步的分析表明,这种增长是由于几个大型客户区域的 HTTP/1.1 请求量显着增加,但尚不清楚为什么会出现使用旧版本 HTTP 的流量涌入。显然,HTTP/2 仍然是主要浏览器用于内容请求的主要协议,始终占 Chrome 浏览器和 Edge 浏览器请求量的 50-55%,以及占 Firefox 浏览器的约 60%。然而,对于 Safari 浏览器来说,由于 HTTP/3 使用量的增长,HTTP/2 的份额从 2022 年 5 月的近 95% 下降到一年后的 75% 左右。
这一年里,Safari 浏览器上的 HTTP/3 份额从不到 3% 增长到近 18%,而在其他浏览器上的份额则更为一致,Chrome 浏览器和 Edge 浏览器徘徊在 40% 左右,Firefox 浏览器则在 35% 左右,两者都显示出明显的工作日/周末流量模式。(这种模式可以说在 Edge 中最为明显。)这种模式在 2022 年底的 Safari 中变得更加明显,但仍然很勉强,其变化往往不到百分之一。
移动浏览器的 HTTP/3 使用情况
移动设备占 Cloudflare 请求量的一半以上,其中 Chrome Mobile 生成的请求占所有请求的 25% 以上,Mobile Safari 生成的请求量超过 10%。鉴于此,我们决定探索 HTTP/3 在这两个主要移动平台上的使用情况。
在 Chrome Mobile 和 Chrome Mobile Webview(Chrome 浏览器的可嵌入版本,应用程序可使用该版本显示 Web 内容)中,我们发现 HTTP/1.1 的使用率极低,最高不到请求的 5%。从 5 月到 9 月中旬,HTTP/2 的使用率从 60% 下降到 55%,但随后又回升到接近 60%,在接下来的时间里基本持平或略有下降。与此形成互补的是,HTTP/3 流量从 37% 增长到 45%,然后在 9 月中旬略低于 40%,一直持续到 5 月。使用模式最终看起来与桌面版 Chrome 浏览器非常相似,不过后者没有明显的工作日/周末流量模式。
Mobile Safari 和 Mobile Safari Webview 的使用模式与桌面 Safari 的使用模式非常相似,这也许并不令人意外。HTTP/1.1 的份额在 10 月份有所增加,而 HTTP/3 的份额增长强劲,从不足 3% 增长到接近 18%。
搜索索引机器人
在探索搜索引擎爬虫/机器人对不同版本 HTTP 的使用情况时,我们发现去年的趋势仍在继续,HTTP/3 的使用率仍然很低(如上所述,这在一定程度上是意料之中的,因为 HTTP/3 是针对浏览器用例进行优化的)。由于正在调查四月份的异常数据,因此此处必应和百度的图表截取了截至 2023 年 4 月 1 日的数据。
GoogleBot 仍然主要依赖 HTTP/1.1,通常占请求量的 55-60%。其余部分几乎全部是 HTTP/2,尽管 HTTP/3 使用量出现了微弱增长,在 3 月份达到了略低于 2% 的峰值。
到 2023 年 1 月,Microsoft 的 BingBot 约 85% 的请求是通过 HTTP/2 提出的,但在 1 月下旬下降到接近 80%。其余请求都是通过 HTTP/1.1 提出的,因为 HTTP/3 的使用量可以忽略不计。
看看美国以外的搜索引擎索引机器人,俄罗斯的 YandexBot 看上去几乎只使用 HTTP/1.1,HTTP/2 的使用率一般在 1% 左右,不过在 8 月底至 11 月中旬期间使用率有所上升。目前还不清楚是什么最终导致了这种增长。在 HTTP/3 上没有看到有意义的请求量。中国搜索引擎百度使用的索引机器人似乎也非常喜欢 HTTP/1.1,通常用于超过 85% 的请求。不过,HTTP/2 请求的百分比出现了几次峰值,在 2022 年 7 月、11 月和 12 月以及 2023 年 1 月的几天里曾短暂达到 60% 以上,另外还有几次峰值在 30% 左右。同样,我们也不清楚是什么导致了这种剧增的情况。百度也没有实质上使用 HTTP/3。
社交媒体机器人
与上面必应和百度的情况类似,下面的图表也是截至 4 月 1 日的数据。
在过去一年中,Facebook 使用 HTTP/3 进行网站抓取和索引的情况仍然接近于零,这与我们前一年观察到的情况类似。HTTP/1.1 开始时占请求量的 60% 以下,除了 5 月下旬出现短暂的峰值之外,HTTP/1.1 的使用量在这一年中稳步下降,到 2023 年 4 月降至 30% 左右。与此同时,HTTP/2 的使用率从 2022 年 5 月的略高于 40% 增加到 2023 年 4 月的 70% 以上。Meta 工程师证实,这种弃用 HTTP/1.1 的转变是其基础设施对 HTTP 使用的预期渐进变化,并且他们正在慢慢努力从其基础设施中完全删除 HTTP/1.1。
在去年的博客文章中,我们指出“TwitterBot 显然对 HTTP/2 有强烈且一致的偏好,占其请求的 75-80%,其余部分为 HTTP/1.1。”这种偏好一直持续到 10 月初,此时 HTTP/2 使用率开始逐渐下降,到 2023 年 4 月仅略高于 60%。目前还不清楚是什么原因导致 2022 年 5 月下旬 HTTP/2 出现长达一周的下降和 HTTP/1.1 激增。与去年一样,TwitterBot 对 HTTP/3 的使用仍然不存在。
与 Facebook 和 Twitter 的网站抓取机器人相比,HTTP/3 在 LinkedIn 机器人的请求量中占比明显,而且还在不断增加,从 2022 年 5 月的不到 1% 增加到 2023 年 4 月的略高于 10%。我们去年曾指出,LinkedIn 对 HTTP/2 的使用从 2022 年 3 月开始激增,增长到请求量的约 5%。在今年的调查期间,该版本的使用率逐渐上升到 15%,但增长特别不稳定,呈尖峰状,而不是平稳、持续的增长。HTTP/1.1 的份额虽然从 2022 年 5 月的 95% 左右降至 2023 年 4 月的 75%,但仍然是 LinkedIn 机器人使用的主要协议。
总结
总的来说,我们很高兴看到 HTTP/3 在基于浏览器的流量消耗中的使用率普遍提高,并且认识到,如果通过 curl 等关键工具的生产支持,HTTP/3 开始更积极地用于 API 交互,那么 HTTP/3 将有机会进一步大幅增长。虽然很失望地看到搜索引擎和社交媒体机器人对 HTTP/3 的使用仍然很少,甚至根本不存在,但我们也认识到,使用最新版本的 Web 基础协议所带来的实时好处可能并不完全适用于异步自动内容检索。
您可以在 Cloudflare Radar 的“采用和使用情况”部分 (https://radar.cloudflare.com/adoption-and-usage) 关注这些趋势和其他趋势,也可以在 Twitter 上关注 @CloudflareRadar,或在 Mastodon 上关注 https://cloudflare.social/@radar。