是否可以检测访客DNS服务器?

时间:2012-05-23 14:10:15

标签: java php javascript jquery dns

检测访客IP很容易。但是如何检测访问者的DNS服务器ips?

我找到了这个PHP函数,但它只找到域名'DNS。

dns_get_record("website.com", DNS_ANY);

是否可以检测访客DNS服务器?

5 个答案:

答案 0 :(得分:7)

这并不容易,但可以做到。 Adam Dobrawy在http://ipleak.net/

的单独答案中展示了这种方法

要添加一些细节,您可以实现这样的方式:

第1部分 - 在myspecialdomain.com上设置您自己的DNS服务器

此DNS服务器需要自定义编写以记录和存储传入请求和源IP地址。这个存储只需要很短的时间,因此像memcache这样的东西可能会很好地工作。 DNS响应应该是NXDOMAIN。

第2部分 - 您的客户端代码

在你的Javscript中制作和存储一个大的随机数。使浏览器查找.myspecialdomain.com。通过带有错误处理程序的JS img标记加载它。 在该错误处理程序中,现在对通过随机数的服务器端代码进行查询。

第3部分 - 您的Web应用程序(服务器端)

您需要实现一些服务器端逻辑,该逻辑采用随机字符串,在数据存储区中查找,并检索DNS服务器的IP地址。 请注意,此处的IP地址将是特定服务器的IP单播地址,它不会是8.8.8.8之类的IP任播地址。 在这里,您可以使用GeoIP或Whois数据库来确定该IP地址的所有者(OpenDNS,Google等)。然后,您可以生成响应以发送到客户端逻辑。

答案 1 :(得分:5)

是的,您可以像检测访问者的页面分辨率一样。

您需要自己的DNS服务器并强制用户解析唯一的DNS名称。如果用户试图解决它,那么它们将泄漏到您的DNS服务器自己的DNS服务器地址。 DNS服务器旁边必须与您的网络应用程序共享询问唯一DNS名称的信息。

答案 2 :(得分:3)

DNS解析不是请求本身的一部分,这意味着请求的接收方无法知道客户端(浏览器)使用了哪个DNS。

答案 3 :(得分:-1)

首先发生DNS请求,因为需要将主机名解析为IP地址。完成后,将对相关地址执行单独的请求。

答案 4 :(得分:-1)

答案是否定的。所有服务器获得的是与访问者的TCP连接,即[IP,端口]对。 DNS解析取决于访问者的本地配置,可以通过代理完成。