检测访问者 IP 很容易。但是如何检测访问者的 DNS 服务器 ips 呢?
我找到了这个 PHP 函数,但是它只找到域名的 DNS。
dns_get_record("website.com", DNS_ANY);
是否可以检测访客 DNS 服务器?
检测访问者 IP 很容易。但是如何检测访问者的 DNS 服务器 ips 呢?
我找到了这个 PHP 函数,但是它只找到域名的 DNS。
dns_get_record("website.com", DNS_ANY);
是否可以检测访客 DNS 服务器?
是的,您可以,例如检测访问者的页面分辨率。
您需要自己的 DNS 服务器并强制用户解析唯一的 dns 名称。如果用户试图解决它,那么他们将泄漏到您的 DNS 服务器自己的 DNS 服务器地址。在 DNS 服务器旁边必须分享谁询问了您的网络应用程序的唯一 dns 名称的信息。
这并不容易,但可以做到。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 等)。然后,您可以生成响应以发送到客户端逻辑。
DNS 解析不是请求本身的一部分,这意味着请求的接收者无法知道客户端(浏览器)使用了哪个 DNS。
DNS 请求首先发生,因为需要将主机名解析为 IP 地址。完成后,将对相关地址执行单独的请求。
答案是不。服务器得到的只是与访问者的 TCP 连接,即 [IP, Port] 对。DNS 解析取决于访问者的本地配置,可以通过代理完成。