有些网站声称可以进行“DNS 泄漏测试”。我不太关心 DNS 泄漏,但很好奇,网站如何知道我使用的是哪个 DNS 服务器?我猜这将是 HTTP 请求中发送的标头,但无法找到它。
示例网站:https ://www.dnsleaktest.com/
编辑:通过谷歌搜索找到了很多其他示例。
有些网站声称可以进行“DNS 泄漏测试”。我不太关心 DNS 泄漏,但很好奇,网站如何知道我使用的是哪个 DNS 服务器?我猜这将是 HTTP 请求中发送的标头,但无法找到它。
示例网站:https ://www.dnsleaktest.com/
编辑:通过谷歌搜索找到了很多其他示例。
这是一个 DNS 解析技巧,也可以使用非 http 协议执行,但在这种情况下是通过 http 使用随机主机名和零像素图像执行的。
查看页面上的源代码,您会看到一系列随机的 10 个字符的子域请求多个 URL。这些是非常独特的主机名,您的计算机或您的 ISP,或更重要的是您的 DNS 提供商,都不会缓存在本地 DNS 中。
当这些唯一 URL 的主机名到达您的 DNS 提供商时,他们必须从测试公司网站请求它们,然后测试公司网站关联所有者 IP 地址以执行唯一 DNS 请求,然后通过快速查找通知您发出请求的公司名称
同一域的随机主机名列表
ixc9a5snm4.dnsleaktest.com
rhl50vm36o.dnsleaktest.com
4xov3y3uvc.dnsleaktest.com
2n5t99gbzp.dnsleaktest.com
6mzklkved4.dnsleaktest.com
d6z20e9c2x.dnsleaktest.com
可以在以下 html 中找到(您的主机名会有所不同)
<img width=0 height=0 src="https://ixc9a5snm4.dnsleaktest.com">.
<img width=0 height=0 src="https://rhl50vm36o.dnsleaktest.com">.
<img width=0 height=0 src="https://4xov3y3uvc.dnsleaktest.com">.
<img width=0 height=0 src="https://2n5t99gbzp.dnsleaktest.com">.
<img width=0 height=0 src="https://6mzklkved4.dnsleaktest.com">.
<img width=0 height=0 src="https://d6z20e9c2x.dnsleaktest.com">.
我不知道这件事。非常有趣。它似乎通过尝试生成与其控制的长随机子域的连接来工作,并且它可能可以整理来自调用 DNS 服务器的域解析请求。
在引擎盖下,它是使用零尺寸图像生成器的标准跟踪:
<pre class="progress">Query round Progress... Servers found
<br/> 1
<img width=0 height=0 src="https://1k9oraud8h.dnsleaktest.com">.
<img width=0 height=0 src="https://dajo0hwg9c.dnsleaktest.com">.
<img width=0 height=0 src="https://6crg9z68gj.dnsleaktest.com">.
<img width=0 height=0 src="https://nwitgnyo7r.dnsleaktest.com">.
<img width=0 height=0 src="https://z3yine4a7p.dnsleaktest.com">.
<img width=0 height=0 src="https://2tvxmp2yd5.dnsleaktest.com">.
</pre>
有趣的是,由于我默认阻止了 piwik(使用的分析引擎),所有请求都失败了,但我的 DNS 服务器仍然被识别,这意味着它们不仅仅依赖于 HTTP 跟踪器。
添加澄清以解决@Falco 的问题。
由于子域不存在,因此可能无法为所有人加载图像。因此,从下面的屏幕截图中可以看到,永远不会生成请求(无效的 DNS 查找)。就我而言,唯一的区别是他们没有收到跟踪 ID。
由于我无法访问后端,我只是猜测幕后发生的事情。他们可能在他们的 DNS 服务器上有一个钩子,将收到的每个DNS 问题的源 IP 写入他们的数据库(也许这个线程也在保存数据之前进行主机名和 ISP 查找)。请注意,这是一个 DNS 问题,而不是具体化的 HTTP 查找。中央 Web 服务器唯一要做的就是返回与我的浏览器关联的 suddomains 对应的行。
最简单的方法是与跟踪 ID 一对一对应。通常,它会发送一个名称为 like 的 piwik 跟踪 cookie,pk_id
最后会有一个额外的请求,piwik.php
其中包含很多跟踪详细信息。在我的情况下,这个 cookie 永远不会建立,并且不会发生额外的跃点。我没有看到其他会话识别发生,如果社区还没有挖掘,我会在周末更仔细地查看它。