Обнаружение посетителя IP очень просто. Но как насчет обнаружения DNS-сервера ips посетителя?
Я нашел эту функцию PHP, однако он находит только DNS-имена доменов.
dns_get_record("website.com", DNS_ANY);
Можно ли определить DNS-сервер посетителя?
Это непросто, но это можно сделать. Существует демонстрация подхода, предложенного в отдельном ответе Адама Добрави по адресу http://ipleak.net/
Чтобы добавить немного подробностей, способ реализовать что-то вроде этого:
Часть 1 – Настройка собственного DNS-сервера на myspecialdomain.com
Этот DNS-сервер должен быть настроен для записи и хранения входящего запроса и исходного IP-адреса. Это хранилище требуется только на короткий период времени, поэтому что-то вроде memcache может работать хорошо. Ответ DNS должен быть NXDOMAIN.
Часть 2 – Ваш код на стороне клиента
В вашем Javscript создайте и храните большое случайное число. Сделайте поиск в браузере .myspecialdomain.com. Загрузите это с помощью тега JS img обработчиком ошибок. В этом обработчике ошибок теперь сделайте запрос к вашему серверному коду, передав случайное число.
Часть 3 – Ваше веб-приложение (серверная сторона)
Вам необходимо реализовать некоторую логику на стороне сервера, которая принимает случайную строку, просматривает ее в хранилище данных и извлекает IP-адрес DNS-сервера. Обратите внимание, что IP-адрес здесь будет IP-адрес одноадресной передачи конкретного сервера, он не будет IP-адресом Anycast, например 8.8.8.8. Здесь вы можете использовать базы данных GeoIP или Whois для определения владельца этого IP-адреса (OpenDNS, Google и т. Д.). Затем вы можете сгенерировать ответ для отправки клиентской логике.
Да, вы можете, как обнаружить разрешение страницы посетителей.
Вам нужен собственный DNS-сервер и заставить пользователя разрешать уникальное имя DNS. Если пользователь попытается решить проблему, они будут протекать на ваш собственный DNS-сервер вашего DNS-сервера. Рядом с DNS-сервером необходимо обмениваться информацией, которая спрашивала об уникальном имени DNS для ваших веб-приложений.
Разрешение DNS не является частью самого запроса, что означает, что получатель запроса не может узнать, какой DNS был использован клиентом (браузером).
Сначала выполняется запрос DNS, поскольку требуется разрешить имя хоста IP-адресу. Как только это будет завершено, отдельный запрос будет отправлен на указанный адрес.
Ответ – нет. Весь полученный сервер – это TCP-соединение с посетителем, то есть пара [IP, Port]. Разрешение DNS зависит от локальной конфигурации посетителя и может выполняться прокси-сервером.