@BarneyGumble

Что может блокировать получение данных через curl?

1. Открываю в браузере ссылку https://my_api_url.ru - всё ок, выводится на страницу результирующий json
2. Иду в консоль, ввожу curl -X GET -k https://my_api_url.ru - думает минуту и выдаёт port 443: Время ожидания соединения истекло
3. Создаю на отдельном сервере файл test.php со следующим содержимым:

<?php

$ch = curl_init('https://my_api_url.ru');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
 
echo $html;

?>


Перехожу в браузере по ссылке https://my_server.ru/test.php - пустая страница

Почему так и куда копать? Нужно получить данные именно курлом, но он их отдавать не желает(
  • Вопрос задан
  • 207 просмотров
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
Браузер ничем принципиально не отличается от курла, просто у него многое делается по умолчанию, а в курле - только то, что ты сам прописал. Жмешь F12 и смотришь заголовки, которые передает браузер, и адреса, на которые он, возможно, переходит (курл по умолчанию игнорирует редирект).
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Значит из консоли коннект на 443-ий порт - не проходит.
Попробуйте telnet my_api_url.ru 443, уже сам факт ошибки "невозможно подключиться" скажет о том, что коннект на 443-ий порт - не проходит.
Если ошибки не будет - тогда полноценный коннект openssl s_client -connect=my_api_url.ru:443.
Если и во втором случае ошибок не будет - что-то у вас совсем непонятное в PHP/curl творится, да.
Возможно DNS отдаёт неправильный IP для my_api_url.ru? А может защита от DDOS от какого-нибудь CloudFlare?

P.S. Проверку коннектов можно сделать и на втором сервере.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы