get запрос на несуществующий домен, зная IP
Предположим, на хостинге есть сайт с привязанным доменом, домен владелец не проплатил, поэтому регистратор его удалил. Но зная IP хостинга и прописав запись себе в hosts, можно спокойно ввести домен в адресную строку и сёрфить по тому сайту. Как в php можно выполнить get-запрос, чтобы отправить его на известный IP-адрес, но передать требуемый мне домен (не меняя глобально hosts) и получить содержимое сайта именно на этом настроенном домене?
Передать его в заголовке host?
Ответы (2 шт):
Прописывая домен под IP себе в hosts вы всего-навсего сообщаете своей системе что ей не нужно делать DNS запрос, а брать готовый IP адрес из этого файла и на него слать запрос. По сути это ничем не отличается от обычного запроса на этот адрес в браузере и идентичен запросу на этот домен.
Доступ к VirtualHosts на сервере вы точно так не получите так как, если бы посмотрели как он работает в большинстве случаев (порт на виртуальный домен, внутренний IP адрес на домен), вы, проставив внешний IP адрес у себя не сможете узнать на какой внутренний IP адрес он будет выходить.
Смотрите примеры ответов на SuperUser о том, как отослать запрос на IP адрес с нужным вам доменным именем.
PS читая эти ответы понимаю, что «костыль» автора вопроса имеет место быть ;)
Вот такой вариант должен работать, только что проверил:
<?php
$ch = curl_init('1.2.3.4');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Host: example.com']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);