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

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

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

dns_get_record("website.com", DNS_ANY); 

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

这并不容易,但可以做到。 Adam Dobrawy在http://ipleak.net/的单独答案中展示了这种方法的演示。

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

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

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

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

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

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

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

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

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

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

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

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