Как получить содержание тела HTTPS с помощью CURL - PullRequest
3 голосов
/ 01 августа 2009

Следующий код будет извлекать содержимое тела URL-адреса, полученного с помощью CURL в php, но не https. Может кто-нибудь сказать мне, как я редактирую код, так как мне нужно, чтобы данные возвращались, а не только заголовок.

Результат теста, который я здесь сделал. Вы можете видеть, что он имеет длину контента, я просто не знаю, как получить к нему доступ.

Спасибо Стивен

Ошибки: 0

string (1457) "HTTP / 1.1 200 OK Дата: Сб, 01 Авг 2009 06:32:11 GMT Сервер: Apache / 1.3.41 (Дарвин) PHP / 5.2.4 mod_ssl / 2.8.31 OpenSSL / 0.9. 7l Cache-Control: max-age = 60 Истекает: сб, 01 авг 2009 06:33:11 GMT Последнее изменение: чт, 23 ноя 2006 17:44:53 GMT ETag: "97d620-44b-4565de15" Accept-Ranges : байты Длина содержимого: 1099 Соединение: закрыть Тип содержимого: text / html "

<?php

$curl_handle=curl_init();

$username = "";
$password = "";

$fullurl = "http://www.queensberry.com";
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_HEADER, 1);
   curl_setopt($ch, CURLOPT_VERBOSE, 1);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
   curl_setopt($ch, CURLOPT_FAILONERROR, 0);
   curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
   curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
   curl_setopt($ch, CURLOPT_URL, $fullurl);

   $returned = curl_exec($ch);

   curl_close ($ch);
   var_dump($returned);


?>

Ответы [ 4 ]

8 голосов
/ 14 января 2010

Вот решение: Попробуйте это, просто оставьте ту же кодировку, что и выше ...

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 0);
// curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_URL, $fullurl);

$returned = curl_exec($ch);

curl_close ($ch);
var_dump($returned);

Изменение CURLOPT_HEADER на 0 делает так, что возвращается только содержимое страницы.

2 голосов
/ 14 мая 2014

если вам все еще нужен заголовок, что означает, что установка CURLOPT_HEADER в 0 не является опцией, вы можете найти начало тела, ища пустую строку (два CRLF). Смотрите спецификацию: http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html

так что это должно сделать работу:

    $data = curl_exec($ch);
    $start = strpos($data, "\r\n\r\n") + 4;
    $body = substr($data, $start, strlen($data) - $start);
2 голосов
/ 01 августа 2009

Не должно $fullurl быть "https://www.queensberry.com"?

Когда я изменил $fullurl, как указано, и запустил код, var_dump отобразил страницу "в разработке".

1 голос
/ 28 ноября 2016

Я ищу длину заголовка, используя getinfo для curl. Затем подстрока ответа:

$info = curl_getinfo($ch);
$start = $info['header_size'];
$body = substr($result, $start, strlen($result) - $start);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...