skapunker
@skapunker
Умный

Как соединиться через curl с сайтом на опрелененный ip?

Всем привет! Подскажите пожалста, как такое сделать. Все перерыл, ничего путевого.
В общем надо соединиться с сайтом на определенном IP адресе. Сайт работает на https.

Вот сама функция. Впринципе соединяется с нужным IP. Но не работает по https.
function healthCheck($host, $ip, $timeout) {
	
		$ch = curl_init($ip);
		curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: ' . $host));
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_HEADER, false);
		$html = curl_exec($ch);
		$info = curl_getinfo($ch);
		curl_close($ch);			
		if($info['connect_time'] > $timeout or $info['connect_time'] == 0) {
			return 'down';
			}		
		return $html;
}
  • Вопрос задан
  • 898 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false);
curl_setopt($ch, CURLOPT_RESOLVE, ["{$host}:443:{$ip}"]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@rPman
соединиться с сайтом на определенном IP адресе
как понимать это?
ip адрес это адрес машины в интернете, с которой соединяешься
на одной машине может быть несколько сайтов под разными доменными именами

Бывает когда на один адрес может выдаваться несколько ip адресов- geodns, если это надо обойти, то можно локально для себя (в своей сети) настроить dns на выдачу конкретного ip адреса либо тупо прописать в /etc/hosts

p.s. у утилиты curl есть ключ
--connect-to <HOST1:PORT1:HOST2:PORT2>
какраз для подмены подключений HOST1:PORT1 на HOST2:PORT2
еще есть
--resolve <host:port:address[,address]...>
Provide  a  custom address for a specific host and port pair


соответствующие им олпции curl_opt - CURLOPT_CONNECT_TO и CURLOPT_RESOLVE
Ответ написан
@Akela_wolf
Extreme Programmer
curl_init("https://$ip")
или даже
curl_init("https://$host")
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Иван,
ничего не говорит. Ошибки нет.
Если ошибки нет, то и работать должно, а у вас, я так понимаю, не работает (хотя что у вас при этом происходит вы почему-то молчите). Смотрите verbose расшифровку подключения. Вполне возможно ошибка связана с локальным сертификатом. Но это все гадание, без расшифровки нет смысла говорить о чем либо.
Ответ написан
Ваш ответ на вопрос

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

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