Intereting Posts
PHP cookie имеет одну задержку обновления Обслуживание статического содержимого из домена Cookieless – использование субдомена и .htaccess Jquery submit не работает после ajax pagination Извлечение данных из строки json со структурным языком API Google Диска – Библиотека клиентов PHP – настройка uploadType для возобновляемой загрузки Настройка простого тестирования A / B с помощью PHP Ошибка сертификата SSL не может получить сертификат локального эмитента Вставка данных в mysql с использованием php Сохранять разрыв строки из TextArea при написании MySQL Использование PHP & curl для публикации html-формы, содержащей файл Переименуйте и загрузите mp3-файл геокод google не работает для адресов со специальными символами из базы данных Показать все строки в таблице mysql, а затем дать возможность удалить определенные Чтение данных POST в вызове AJAX Как направить уведомление от клиента отдыха для целей тестирования

PHP CURL для получения содержимого страницы https

Пример url: https://www.tescogoldexchange.com/gold-calculator.aspx?carat=9&weight=1&ref=miniQuote

Я пытаюсь использовать cURL для получения содержимого страницы HTTPS.

Проблема в том, что я не могу захватить документ, и я понятия не имею, почему.

function download_page($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"); return curl_exec($ch); } 

Вероятно, вы столкнулись с той же проблемой, с которой сталкивается этот парень . И, похоже, он исправил это. Вероятно, проблема заключается в согласовании SSL-сертификата и о том, как cURL должен сказать, что сертификат, отправляемый сервером, может быть доверен.

Проверьте наличие ошибок:

 $result = curl_exec($ch); if (!$result) { die(curl_error($ch)); } 

скорее всего, вас укусит тот факт, что завиток больше не поставляется с внутренним списком «действительных» ЦС и, следовательно, не может проверить сертификат удаленного сайта как действительный. Вам придется отключить проверку сертификата и / или установить список самих ЦС самостоятельно

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

ps никогда не предполагал, что операция на удаленном ресурсе преуспела – всегда проверяйте условия ошибки и выводите любые сообщения об ошибках. вы сэкономите себе много голов, крах, включив свет, вместо того, чтобы стучать в темноте.

Код, который вы предоставили, действительно отлично подходит для меня, без изменений. Возможно, у вас проблемы с поддержкой SSL, как упоминал RolfVandeKrol. Чтобы попытаться исправить эту идею, вы можете отключить проверку равных SSL с помощью:

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

Чтобы увидеть, что происходит на самом деле, перед изменением вы можете использовать curl_getinfo($ch) для просмотра всех возвращенных заголовков. Это должно дать вам знать, какой ответ вы используете для правильного диагноза.

Кроме того, вы можете изменить свою функцию, чтобы правильно закрыть ручку curl с curl_close($ch); , Попробуйте вместо return curl_exec($ch); , с помощью:

  ... $contents = curl_exec($ch); curl_close($ch); return $contents; }