Добрый день. Проблема такая: Нужно тянуть данные с этой страницы - 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-cMhSM4Bb3vtLArFWQUfQC06pLn/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));
|
В ответе нет даже ошибки. Данные конечно не правильные и должна быть ошибка. Это сообщение отредактировал(а) Killerkod - 4.11.2013, 14:28
|