Пробую отправить запрос на ip нужного сайта через curl. Вначале отправил через постман такой запрос:
GET / HTTP/1.1
Host: 1.1.1.1
Host: test.ru
URL : https://1.1.1.1/. Доменное имя сайта указано в заголовке Host. Никаких проблем - мне вернулось содержимое html страницы. Но когда я попробовал перенести в php что то пошло не так :
$ch = curl_init('1.1.1.1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('host:test.ru'));
$html = curl_exec($ch);
echo $html;
В результате очень долго грузит и в итоге ничего (null) не возвращает. Пробовал с указанием порта - не работает. Запрос просто не отправляется. В чем может быть дело ?
UPD
Добавил вывод ошибок $errmsg = curl_error( $ch ); Получил :
Failed to connect to 1.1.1.1 port 80: Connection timed out
поставил порт 443 - curl_setopt($ch, CURLOPT_PORT, 443); ошибка осталась. Причем url согласно информации $info = curl_getinfo($ch); записывается как ["url"]=> string(22) "http://1.1.1.1/"принудительно указать вместо ip адреса https://ip.. не получается, та же ошибка :
Failed to connect to 1.1.1.1 port 443: Connection timed out
Но в постмане (+ telnet) же все отправлялось, не понимаю в чем дело. Даже не пингуется сервер ping 1.1.1.1
Точно такой код как у вас работает корректно:
$ch = curl_init('1.1.1.1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('host:test.ru'));
$html = curl_exec($ch);
echo $html;
Показывает HTML код заглушки Cloudflare:
<title>Origin DNS error | test.ru | Cloudflare</title>
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости