Почему я получаю пустой источник? Когда я разорву
//curl_setopt($ch, CURLOPT_URL, 'www.onet.pl');
и совершать
'Accept-Encoding: gzip,deflate,sdch',
все работает отлично для www.onet.pl. Почему это не работает на www.ebok.pl(?
<?php
$COOKIEFILE = $_SERVER['DOCUMENT_ROOT'] . '/../data/config/ebok.txt';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, $COOKIEFILE);
curl_setopt($ch, CURLOPT_COOKIEFILE, $COOKIEFILE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch,CURLOPT_HTTPHEADER, array('Content-type: application/x-www-form-urlencoded',
'Accept: text/html,application/xhtml+xml,application/xml',
'Accept-Encoding: gzip,deflate,sdch',
'Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4',
'Connection: keep-alive',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36')
);
//curl_setopt($ch, CURLOPT_URL, 'http://www.ebok.pl');
curl_setopt($ch, CURLOPT_URL, 'https://ssl.plusgsm.pl/ebok-web/');
//curl_setopt($ch, CURLOPT_URL, 'www.onet.pl');
echo curl_exec($ch);
?>
Мне нужно войти на эту страницу.
Если что-то не работает правильно, почти всегда есть способ выяснить, почему. В curl случае curl_error
расскажет вам.
Если я изменю вашу строку curl_exec
вместо этого скажу
$result = curl_exec($ch);
if ($result === false) die(curl_error($ch));
Я получаю это:
[cHao@hydra-vm ~]$ php curl.php
error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac%
Похоже, что это имеет какое-то отношение к серверу, который делает неверное обращение SSL/TLS неправильно, но я не знаю достаточно о завитке или SSL, чтобы сказать наверняка.
Причина № 15 всегда проверять результат от функций, которые могут возвращать ошибки.
В любом случае, если я использую версию SSL для TLS v1.0, например:
curl_setopt($ch, CURLOPT_SSLVERSION, 4);
то это работает для меня. Общий TLSv1 выходит из строя с той же ошибкой, что и выше, версии выше 1.0 дают мне ошибку о "неподдерживаемом протоколе", SSLv3 говорит "отказ от сбоев при сбое", а SSLv2 просто не поддерживается на моей машине.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);