Как я могу узнать домен для IP через PHP?

Как я могу узнать домен для IP через PHP?

Я использовал этот код

<?php $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); echo $hostname; ?> 

Но это работает неправильно. Например:

 gethostbyaddr(62.75.138.253); 

доменное имя earthwar.de, но правильный ответ – german-proxy.de

Пожалуйста помоги.

Один IP-адрес может содержать потенциально неограниченное количество доменов. Домены, возвращаемые gethostbyaddr будут gethostbyaddr доменные имена из записей PTR DNS для этого IP-адреса. Обратная запись DNS (PTR) отображает IP-адреса для одного или нескольких доменных имен.

Одной из таких компаний, которая предоставляет информацию о доменах по IP-адресам, является domaintools.com. Вы можете заплатить за такую ​​информацию, которую они собрали. Если имя домена отсутствует в записи PTR, то единственным способом узнать, какие домены находятся на IP-адресе, является попытка разрешить имена доменов на их IP-адреса и вести учет. AFIK нет другого пути.

См. « Обратный поиск DNS» и инструменты «Домен» обратного IP-поиска

Данные обратного IP-поиска по инструментам домена основаны на их добыче, сборе и исследованиях.

Могут быть МНОГИЕ имена -> IP-сопоставления, но только ONE IP-> name mapping. Это не редкость, когда вы используете хост-хост-> ip-> host lookups. Вы не можете определить, какое имя хоста указано пользователем, если только протокол, который они используют, не передает это имя хоста вместе с запросом, например, http 1.1. Большинство протоколов работают исключительно с IP-адреса и не нуждаются / заботятся о именах хостов.

Ваш PHP правильный, earthwar.de – правильный ответ

 eugen@lucidhome:~$ nslookup > set q=ptr > 62.75.138.253 Server: 192.168.232.1 Address: 192.168.232.1#53 Non-authoritative answer: 253.138.75.62.in-addr.arpa name = earthwar.de. Authoritative answers can be found from: > 

Это, конечно же, не означает, что другие имена (например, german-proxy.de) не указывают на один и тот же адрес, но нет способа найти их все.

Обновить:

 eugen@lucidhome:~$ nslookup > set q=a > german-proxy.de. Server: 192.168.232.1 Address: 192.168.232.1#53 Non-authoritative answer: Name: german-proxy.de Address: 62.75.138.253 > earthwar.de. Server: 192.168.232.1 Address: 192.168.232.1#53 Non-authoritative answer: Name: earthwar.de Address: 91.143.85.129 > 

так что это хороший пример. Факт: Там нет ничего, а я могу сделать это, чувак!

Вы не можете доверять имени, возвращенному gethostbyaddr . DNS-сервер с полномочиями на определенный IP-адрес может вообще вернуть любое имя хоста.

Обычно администраторы настраивают DNS-серверы для ответа с правильным именем хоста, но злоумышленник может настроить свой DNS-сервер для ответа с неправильными именами хостов. Вы можете избежать попадания в эту ловушку, когда вы вызываете gethostbyname на имя хоста, возвращаемое из gethostbyaddr, и убедитесь, что имя разрешает исходный IP-адрес.

Но есть еще … иногда одно имя хоста может сопоставляться с несколькими IP-адресами.

 var_dump(gethostbynamel('google.com')); 

возвращается

 array(6) { [0]=> string(14) "173.194.69.104" [1]=> string(14) "173.194.69.147" [2]=> string(14) "173.194.69.105" [3]=> string(14) "173.194.69.106" [4]=> string(14) "173.194.69.103" [5]=> string(13) "173.194.69.99" } 

В общем, вам нужно узнать о копании DNS и обратном DNS-поиске. Это долгий путь, чтобы идти, но вы можете доверять мне, когда я говорю, что это интересно.