Проверьте SSL-сертификат Php Fopen и Curl - PullRequest
0 голосов
/ 09 октября 2018

Я пишу скрипт, который работает как бот, и я пытаюсь проанализировать определенные данные из URL.Я делаю «основной» запрос с curl и Dom Element для разбора веб-страницы, однако я не нашел решения, чтобы проверить, есть ли у сайта действительный ssl-сертификат с Curl.Вместо этого я делаю это с fopen следующим образом:

$stream = stream_context_create (array("ssl" => array("capture_peer_cert" => true)));
$read = fopen($url, "rb", false, $stream);
$cont = stream_context_get_params($read);
$var = ($cont["options"]["ssl"]["peer_certificate"]);
$result = (!is_null($var)) ? true : false;

if($result == true){ 
     $returnData["ssl"] = 1; // index 7
    } else {
     $returnData["ssl"] = 0; // index 7
    }

Теперь иногда fopen не будет работать правильно и выдает следующую ошибку:

fopen(http://): failed to open stream: operation failed 

Так что я либо хочу проверитьесли сайт использует SSL с curl или, по крайней мере, вернет пустую строку при возникновении этой ошибки, а затем продолжит работу с остальной частью сценария, поскольку данные должны быть отправлены обратно в ajax в конце сценария.Если нет - Ajax потерпит неудачу, и я верну 504, потому что скрипт выполняется слишком долго.

...