У меня есть следующая проблема: есть HTTPS-сайт, и мне нужно подключиться к нему через прокси-сервер. Вот мои cURL setopts:
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_PROXY, '100.100.100.100:8080'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_USERAGENT, $ua); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); echo curl_error($ch);
выходы Не удалось подключиться к ######. com: 8080; Нет ошибки
Где 100.100.100.100:8080 является заполнителем для действительного прокси HTTPS. Это не работает. Как сделать cURL-соединение с HTTPS-сайтом через прокси-сервер? Мне бы очень понравилось, что это будет работать не только с HTTPS-прокси. Кроме того, мне лучше всего использовать метод cURL, но если есть лучший способ сделать это, без cURL, я мог бы использовать его вместо этого.
Обновление: Добавить
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
Это предотвратит прокси-сервер HTTP для анализа ваших заголовков запросов и действия более прозрачно – как туннель.
первоначальный ответ, не интересно
Ваш код выглядит нормально, и я предполагаю, что вы проверили тривиальные проблемы, поэтому проблема, вероятно, в том, что проверка сертификата SSL не выполняется. Это тот случай, если сертификат самоподписан на примере. Пытаться
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
чтобы разрешить запрос, который позволяет использовать самоподписанный сертификат.