检测访客IP很容易。但是如何检测访问者的DNS服务器ips?
我找到了这个PHP函数,但它只找到域名'DNS。
dns_get_record("website.com", DNS_ANY);
是否可以检测访客DNS服务器?
答案 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解析取决于访问者的本地配置,可以通过代理完成。