Подтвердить что ты не робот

Php curl -k или --insecure, -X

С PHP и curl мне нужно подключиться через прокси-сервер к защищенному SSL-сайтом и игнорировать предупреждения сертификатов. Моя строка командной строки выглядит следующим образом:

curl -k -u username:password -X GET https://someURL

Просматривая curl.php, я вижу, что я считаю правильным выбором. С ними я получаю что-то вроде этого:

  $ch = curl_init("https://someURL");
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Ignore cert errors?
  curl_setopt($ch, CURLOPT_PROXY, true);           // Proxy true?
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");     
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);            
  curl_setopt($ch, CURLOPT_USERPWD, "username:password");      
  $result = curl_exec($ch);

Но, $result всегда возвращает false. В моем пароле есть специальный символ "!". Возможно, мне нужно избежать этого? Кроме этого, любые другие идеи?

Спасибо, Скотт

4b9b3361

Ответ 1

Чтобы полностью отключить проверку ssl-сертификата, зависает опция CURLOPT_SSL_VERIFYPEER. Если установлено значение false, проверка certifcate вообще будет отключена. Поскольку значение по умолчанию true, вам нужно добавить:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Из документации по PHP:

CURLOPT_SSL_VERIFYPEER FALSE, чтобы остановить cURL от проверки сертификата однорангового узла. Альтернативные сертификаты для проверки могут быть указаны с помощью опции CURLOPT_CAINFO, или каталог сертификата может быть указан с помощью опции CURLOPT_CAPATH. TRUE по умолчанию, начиная с cURL 7.10. Установленный по умолчанию пакет cURL 7.10.

Обратите внимание, что если проверка сертификата отключена, вы можете опустить параметр CURLOPT_SSL_VERIFYHOST. Таким образом, можно удалить следующую строку:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

Вы также спросили, поддерживает ли следующая настройка:

curl_setopt($ch, CURLOPT_PROXY, true);

Из документации по PHP:

Прокси-сервер HTTP для туннелирования запросов.

означает, что он принимает прокси-адрес типа 192.168.0.1:3128, если вы используете прокси-сервер. true не имеет смысла в этом случае