Chrome 中面向网络管理员的专用预提取代理

为了缩短用户的网页加载时间,Chrome 有时会在用户点击之前预提取 Google 搜索结果页和其他合作网站上的链接。这篇文章从技术角度详细介绍了此功能。

此功能依赖于 CONNECT 代理,该代理会在需要预提取的网站中隐藏用户的 IP 地址。而这本身会将连接建立移出网络管理员视图。

与此同时,我们也了解到网络管理员可能需要过滤内容。因此,我们设计了一种机制,如果用户确实点击了预提取的链接,网络管理员就可以继续这样做。

内容过滤

为了保护用户的隐私,Chrome 在预提取链接时不会发出任何可观测的 DNS 查询。如果用户导航到预提取的链接,系统便会从本地缓存中提取网页资源,而不会进行可观察的 DNS 查找。这样做的一个副作用是,当用户导航到预提取的链接时,内容过滤可能无法按预期运行。

为了让网络管理员能够针对这些预提取的导航操作过滤内容,我们设计了一种信号机制,以指示 Chrome 在用户点击预提取的链接时发出 DNS 查找。这种 DNS 查找将会同时进行,并以与预提取未发生时相同的方式进行,从而为管理员提供了过滤内容的机会。Chrome 会暂停从缓存中加载预提取的资源,直到第二次 DNS 查找成功为止。如果加载失败,Chrome 将不会使用预提取的资源,而是按常规方式加载网页。请注意,由于 Chrome 必须等待 DNS 查找完成,因此这会给用户带来性能下降。

信号机制的详细信息

如果用户尚未停用网页预加载,Chrome 将在 Chrome 启动时或发生网络接口发生更改时异步发出 dns-tunnel-check.googlezip.net 的 DNS 查找。

以下是 dns-tunnel-check.googlezip.net 检查的可能结果:

  • 如果响应为 NXDOMAINSERVFAIL,或者返回了 NOERROR 响应代码,但既未包含 A 也未包含 AAAA 记录,则 Chrome 会认为网络管理员需要查看预提取页面的导航情况(请参阅预检模式)。
  • 如果响应为任何其他值,则 Chrome 将直接使用预提取的资源,并且当用户导航到预提取的页面时,不会发出任何其他 DNS 查询。

此检查的结果将一直保持到 Chrome 重启为止,或者直到网络接口发生更改(这会触发对 dns-tunnel-check.googlezip.net 的新 DNS 查找),但结果可能会有所不同。

预检模式

在此模式下,Chrome 会先针对相关网域发起 DNS 查找,然后等待响应返回,然后再前往通过专用预提取代理预提取的网页:

  • 如果响应包含一组非空的 IP 地址,Chrome 会使用预提取的资源继续进行导航。
  • 如果响应为 REFUSED(首选)或 NXDOMAIN,Chrome 将不会继续导航,而是显示相关的 DNS 错误页面。