Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Парсинг сайта почты России

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: что-то такое они изобрели
Slavenin
Отправлено: 27 Августа, 2012 - 21:51:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




Всем доброго времени суток!
Есть скрипт, который до недавнего времени прекрасно работал и парсил данные о стоимости доставки. НО настал тот самый "прекрасный момент" и на сайте почты изобрели что-то такое, что безошибочно определяет, что на сайт пришел робот... Полная имитация браузера пришедшего с основной страницы не помогает, ибо даже главная страница не открывается. Вместо кода со стоимостью возвращается волшебный код бесконечного редиректа:
CODE (html):
скопировать код в буфер обмена
  1. <html><head></head><body onload="document.myform.submit();"><form method="post" name="myform" style="visibility:hidden;"><input id="key" name="key" value="425908"/><input type="submit"/></form></body></html>


собственно сам скрипт (дошел до главной страницы пытаясь получить куки, но в ответе всегда редирект)
Да и еще ОЧЕНЬ ВАЖНЫЙ момент, если зайти на сайт почты через браузер, даже на главную страницу, то потом примерно минут пять десять, скрипт будет работать!!! Потом снова отвалиться. Дело тут не в куках ибо куки у меня пишутся в файл. Если смотреть после открытия страницы смотреть в файлах, то куки пишутся, как только скрипт отваливается, куки пропадают. Мой мозг расплавлен. Что еще можно сделать, чтобы получить страницу? Пробовал по всякому начиная от простого file_get_contents и сокетов, заканчивая курлом, на чем пока и остановился за неимением других идей... Очень надеюсь на вашу помощь...

PHP:
скопировать код в буфер обмена
  1. $url = 'http://www.russianpost.ru/autotarif/Autotarif.aspx?viewPost=36&countryCode=643&typePost=1&viewPostName=%D0%A6%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%BE%D1%81%D1%8B%D0%BB%D0%BA%D0%B0&countryCodeName=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B0%D1%8F%20%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F&typePostName=%D0%9D%D0%90%D0%97%D0%95%D0%9C%D0%9D.&weight=1320&value1=0&postOfficeId=170039');
  2. $get = '/autotarif/Autotarif.aspx?viewPost=36&countryCode=643&typePost=1&viewPostName=%D0%A6%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%BE%D1%81%D1%8B%D0%BB%D0%BA%D0%B0&countryCodeName=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B0%D1%8F%20%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F&typePostName=%D0%9D%D0%90%D0%97%D0%95%D0%9C%D0%9D.&weight=1320&value1=0&postOfficeId=170039');
  3. $agent   = "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1";
  4.  
  5. $url2 = 'http://www.russianpost.ru/autotarif/Selautotarif.aspx';
  6. $url3 = 'http://www.russianpost.ru/';
  7.  
  8. $ref="http://www.russianpost.ru/autotarif/SelautotarifRus.aspx";
  9. $headers = array(
  10.                 'GET /autotarif/SelautotarifRus.aspx HTTP/1.1',
  11.                 'Host: www.russianpost.ru',
  12.                 'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
  13.                 'Accept-Language: ru,en;q=0.9',
  14.                 'Connection: Keep-Alive',
  15.                 'Referer: http://www.russianpost.ru/autotarif/SelautotarifRus.aspx',
  16.                 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1'
  17.                 );
  18.  
  19. file_put_contents('cookie.txt', '');
  20.  
  21. $ch = curl_init();
  22.         $headers[0] = 'GET / HTTP/1.1';
  23.         curl_setopt( $ch, CURLOPT_URL, $url3 );
  24.         curl_setopt( $ch, CURLOPT_HEADER, 1 );
  25.         curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
  26.         curl_setopt( $ch, CURLINFO_HEADER_OUT, 1);
  27.         curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
  28.         curl_setopt( $ch, CURLOPT_USERAGENT, $agent );
  29.         curl_setopt( $ch, CURLOPT_REFERER, $ref );
  30.         //curl_setopt( $ch, CURLOPT_COOKIESESSION, 1);
  31.         curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true);
  32.         curl_setopt( $ch, CURLOPT_ENCODING,'gzip,deflate');
  33.         curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0);
  34.         curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0);
  35.         curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  36.         curl_setopt( $ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  37.  
  38.         $html = curl_exec( $ch );
  39.         echo $html;
  40.         exit();
  41.  
  42.         curl_setopt( $ch, CURLOPT_URL, $url );
  43.         $headers[0] = 'GET /autotarif/Selautotarif.aspx HTTP/1.1';
  44.         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  45.         curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  46.         curl_setopt( $ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  47.  
  48.         curl_setopt( $ch, CURLOPT_URL, $url );
  49.         $headers[0] = 'GET ' . $get . ' HTTP/1.1';
  50.         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  51.         curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  52.         curl_setopt( $ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  53.         //curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
  54.  
  55.         $html = curl_exec( $ch );
  56.  
  57.  
  58.         preg_match( '#<span id="TarifValue">(\d+(\,\d+))</span>#is', $html, $result );
  59.  
  60.         $result[ 1 ] = str_replace( ',', '.', $result[ 1 ] );
  61.  
  62. curl_close( $ch );

(Отредактировано автором: 27 Августа, 2012 - 21:55:09)

 
 Top
Slavenin
Отправлено: 28 Августа, 2012 - 11:21:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




мда, ничего такого они не изобрели, в ответ приходит форма из которой нужно взять ключ и отправить этот ключ обратно сайту... Ответ был на поверхности...
 
 Top
Jmunb
Отправлено: 29 Сентября, 2012 - 22:20:48
Post Id


Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Уважаемый, не могли бы поделится настройками курла?
Добрался до страницы с формой. Заполняю данные отправляю потом через курл но в ответ вечно редирект.

С уважением.
 
 Top
Jmunb
Отправлено: 30 Сентября, 2012 - 16:10:43
Post Id


Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




В общем думою кому нибудь еще пригодится.
Я получаю страницу с информацией о посылке так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $BarCode=12548049043572;
  3.  
  4. $curl_s = curl_init();
  5. curl_setopt($curl_s, CURLOPT_URL, "http://www.russianpost.ru/rp/servise/ru/home/postuslug/trackingpo");
  6. curl_setopt($curl_s, CURLOPT_POST, 1);
  7. curl_setopt($curl_s, CURLOPT_POSTFIELDS, "OP=&PATHCUR=PORTAL%2FRU%2FHome%2FPostal%2FTrackingPO&PATHFROM=&WHEREONOK=&ASP=&PARENTID=&FORUMID=&NEWSID=&DFROM=&DTO=&CA=&CDAY=14&CMONTH=01&CYEAR=2010&NAVCURPAGE=&SEARCHTEXT=&searchAdd=&PATHWEB=PORTAL%2FRU%2FHome&PATHPAGE=PORTAL%2FRU%2FHOME%2FSEARCH&search1=&BarCode={$BarCode}&searchsign=1");
  8. curl_setopt($curl_s, CURLOPT_HEADER, 0);
  9. curl_setopt($curl_s, CURLOPT_RETURNTRANSFER, 1);
  10. curl_setopt($curl_s, CURLOPT_COOKIEFILE, 'cookie.txt');
  11. curl_setopt($curl_s, CURLOPT_COOKIEJAR, 'cookie.txt');
  12. $page = curl_exec($curl_s);
  13. curl_close($curl_s);
  14.  

Пользуйтесь наздоровье

(Отредактировано автором: 30 Сентября, 2012 - 16:18:36)

 
 Top
eRs
Отправлено: 18 Октября, 2012 - 22:06:23
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




А у меня вот так не работает совсем, выдает пресловутую страница с переадресацией и key (вывожу в файл)
 
 Top
Konst4
Отправлено: 25 Февраля, 2013 - 18:14:37
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Господа, помогите разобраться с парсингом, ибо опыта нет и непоняток куча. В частности что делать с капчей? В ответ на запрос curl возвращает страницу с ошибкой "Неправильно введен код." что логично. Как это дело можно преодолеть?

(Отредактировано автором: 25 Февраля, 2013 - 18:30:06)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB