Проблема такая:
Нужно тянуть данные с этой страницы - http://egov.kz/wps/portal/P40.05
Нужно заполнить форму через cURL и получить в ответ страницу.
Проблема в том, что сайт возвращает чистую страницу, нужны обязательно куки.
Через cURL получить данные никак не получается.
Если отправить запрос через браузер, потом подставить в cURL параметр JSESSIONID полученный из браузера, то все срабатывает, но только на то имя, на которое был запрос с браузера. Т.е. даже не обязательно потом поля формы высылать.
А напрямую через cURL не работает.
Вот код:
$hostname = 'http://egov.kz/wps/portal/!ut/p/b1/jc5NDoIwEAXgs3AAM9NSoV22wdIGBRN_sN0YFsaQAE2Men6RPejsXvK9vAEPjgiOjHFBGVzAD827vTfPNgxN980-uVaG6HwtYqyKTKLdp6wQaCjuyAjcCMqKnjSzhPBkQ5Amhqnt2WKexf_1ceYk_urX4Cey9MEEFiZKE_obHB4vcCNNZ-cMhSM4Bb3v tLArFWQUfQC06pLn/dl4/d5/L2dBISEvZ0FBIS9nQSEh/pw/Z7_OH1FG5930OKDA0IP74K90H20H2/act/id=0/p=javax.servlet.include.path_info=QCPP4005PortletView.jsp/244820460075/-/'; // имя хоста, куда будем заходить
$postdata = array( // объявляем набор параметров для передачи
'javax.faces.ViewState'=>'j_id9:j_id10',
'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm'=>'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm',
'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm:acceptSignRequestButton'=>'Отправить запрос',
'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm:beginDate_textDatePicker'=>'31.01.1990',
'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm:currentLang'=>'ru',
'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm:docNumberIdInteger'=>'123456789',
'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm:middleNameIdStr'=>'',
'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm:nameIdStr'=>'Дмитрий',
'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm:surnameIdStr'=>'Петров',
'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm:userCookieId'=>'viewns_Z7_OH1FG5930OKDA0IP74K90H20H2_:demoForm:userCookieId'
);
//$postdata = http_build_query($postdata);
$headers = array(
'Host: egov.kz',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding: gzip, deflate',
'Cache-Control: max-age=0',
'Accept-Charset: utf-8;q=0.7,*;q=0.7',
'Connection: keep-alive',
);
$ch = curl_init($hostname); // инициализация cURL
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0"); // установка браузера
curl_setopt($ch, CURLOPT_REFERER,'http://egov.kz/wps/portal/!ut/p/b1/jc5NDoIwEAXgs3AAMjOlFLuEYGmDgom_7cawMIYEaGLU84vsQWf3ku _lDTiwIXHJEhmRiOECbmje7b15tn5oum924lprUkUsI6zLPEWzS3gpUTPc0gjsCKqaHRU3RCuxJmRC82xzMljk0X99nLkUf_XP4Cay9MEEFiYq7fsb7B8vsCNNZuc0gwPYHHrXKWnCzKdB8AGT-7Sp/dl4/d5/L2dBISEvZ0FBIS9nQSEh/pw/Z7_OH1FG5930OKDA0IP74K90H20H2/act/id=0/p=javax.servlet.include.path_info=QCPP4005PortletView.jsp/244482562068/-/'); // Подделываем значение - откуда пришли данные.
curl_setopt($ch, CURLOPT_POST, TRUE); // параметры метода POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_VERBOSE, 2); // Отображать детальную информацию о соединении
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // выводит переменную
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // следовать за редиректами
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); // сохранять куки в файл
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
$page=curl_exec($ch);
curl_close ($ch); // закрыть сессию работы с cURL
echo gzinflate(substr($page, 10));
В ответе нет даже ошибки. Данные конечно не правильные и должна быть ошибка.