菜单
中文 (简体)

AdGuard DNS v2.11:Chrome 中过滤预加载网页

浏览器总是致力于提升性能,这是可以理解的:页面加载越快,用户体验越好。然而,有时这些提升性能的方法会干扰过滤功能。

以 Chrome 为例,它的页面预加载功能可以在浏览器设置 →「性能」中找到。如果启用,Chrome 会预加载它认为用户可能会访问的页面。

比如,当您阅读一篇文章时,浏览器会分析页面中的所有链接,并预测您可能会点击的内容。为了确保下一页能够迅速打开,Chrome 会提前加载其内容。为了防止目标网站获取您的真实 IP 地址,Chrome 使用所谓的「私密预取代理」(英语:private prefetch proxy)。通过这个代理服务器加载内容时,目标网站只能看到代理的 IP 地址,而不是您的。这就引发了一个问题:如果通过代理加载页面,AdGuard DNS 无法看到请求,那么自然也就无法过滤。
不过,Chrome 提供了一种解决方法,即通过一个信号告知浏览器用户或系统管理员希望 DNS 请求保持透明。具体操作是,当您启动 Chrome 或切换网络时,浏览器会向 dns-tunnel-check.googlezip.net 发送 DNS 请求。如果没有返回 IP 地址(例如响应为 NXDOMAIN),Chrome 就会启用「预检模式」(英语:preflight mode)。在这种模式下,当用户准备访问一个被预加载的页面时,Chrome 将向系统配置的 DNS 服务器发送额外的 DNS 请求。在这里,这个服务器就是 AdGuard DNS。如果目标网站在屏蔽列表中,浏览器会阻止访问,并且不使用预加载的内容。

该如何实现呢?我们添加了一项功能,「启用用于 Chrome 预加载网页的 Preflight 模式」。用户可以在服务器设置中找到它。从技术上讲,该功能使用 dnsrewrite 规则:

|dns-tunnel-check.googlezip.net^$dnsrewrite=NXDOMAIN

我们新增的规则会为 dns-tunnel-check.googlezip.net 返回 NXDOMAIN 响应,从而向 Chrome 发送信号,要求所有请求(包括预加载页面的请求)都经过 AdGuard DNS。

请注意:此设置不会禁用页面预加载,也不会阻止浏览器分析您的网站行为。如果您希望关闭页面预加载,可以手动操作:「Chrome 设置」→「性能」→「预加载网页」。

请留下反馈意见

新功能是根据 GitHub 上的功能请求添加的。我们非常感谢大家留下的反馈意见,如果您知道我们要改进的地方,请在社交媒体GitHub 上联系我们。

喜欢这篇文章吗?