PHP: gethostbyaddr () возвращает неверный URL

Я работаю сценарий PHP, чтобы попытаться разрешить неопределенный URL (например, набрав в facebook.com) в качестве абсолютного URL (например, https://www.facebook.com); похоже на то, что ваш браузер делает ежедневно, используя PHP.

Пока у меня есть следующий код:

$link = gethostbyname("facebook.com");

Это обеспечивает адрес IPV4, который работает, но затем, когда я обращаюсь к поиску, используя:

$link2 = gethostbyaddr($link);

Я ожидаю получить действительный URL, например «https://www.facebook.com«, но вместо этого я получаю мусор, такой как» ‘edge-star-mini-shv-13-atn1.facebook.com’ «

Это тогда разрушает всякую надежду использовать fopen или curl, чтобы попытаться прочитать содержимое веб-страницы.

Может кто-нибудь объяснить, что здесь пошло не так и как я могу это решить?

РЕДАКТИРОВАТЬ: Попытка небезопасного URL, такого как «google.co.uk», возвращает «lhr25s10-in-f3.1e100.net», так что это не связано с безопасным HTTP (HTTPS)

-2

Решение

gethostbyaddr получает имя хоста, а не URL, для IP-адреса.

Несколько имен хостов могут быть назначены одному IP-адресу.

gethostbyaddr получит по умолчанию.

HTTP-сервер, прослушивающий этот IP-адрес, будет обрабатывать запросы ко всем именам хостов.

HTTP-запрос включает заголовок запроса Host который указывает, какое имя хоста вы запрашиваете.

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]