Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Парсинг сайта почты России(что-то такое они изобрели) (https://javascript.ru/forum/server/31133-parsing-sajjta-pochty-rossii-chto-takoe-oni-izobreli.html)

Slavenin 28.08.2012 08:51

Парсинг сайта почты России(что-то такое они изобрели)
 
Всем доброго времени суток!
Есть скрипт, который до недавнего времени прекрасно работал и парсил данные о стоимости доставки. НО настал тот самый "прекрасный момент" и на сайте почты изобрели что-то такое, что безошибочно определяет, что на сайт пришел робот... Полная имитация браузера пришедшего с основной страницы не помогает, ибо даже главная страница не открывается. Вместо кода со стоимостью возвращается волшебный код бесконечного редиректа:
<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 и сокетов, заканчивая курлом, на чем пока и остановился за неимением других идей... Очень надеюсь на вашу помощь...
админ удалил страшный код ибо место ему на пастбинах

Deff 28.08.2012 09:50

Slavenin,
Гы - Жулики - в ответ на запрос - они посылают сперва страницу формы с автосубмитом, которую вы не принимаете и не отсылаете назад - так они определяют ботоф

Страница в ответ на запрос
'http://www.russianpost.ru/autotarif/Autotarif.aspx?viewPost=36&countryCode=643&typePos t=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&c ountryCodeName=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B 9%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&valu e1=0&postOfficeId=170039');


<html>
  <head>
    <meta content="HTML Tidy for Java (vers. 26 Sep 2004), see www.w3.org" name="generator"/>
    <title/>
  </head>
  <body onload="document.myform.submit();">
    <form method="post" name="myform" style="visibility:hidden;">
      <input id="key" name="key" value="872836"/>
      <input type="submit"/>
    </form>
  </body>
</html>

value="872836" генерицо произвольный , в зависимости от текущего пользователя

Нужно принять и отправить форму и получите страницу с данными

Slavenin 28.08.2012 10:23

неа, при отправке такой формы в ответ снова приходит эта же форма. Я собственно о ней узнал по бесконечному редиректу при выводе ответа в браузер. Вы немного не внимательно прочитали то, что я написал:
Цитата:

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

Deff 28.08.2012 10:26

Slavenin,
Вы проверьте куки которые приходят с формой - очевидно они отличны от ранее посылаемых ( посылаются куки к данной форме

Deff 28.08.2012 10:35

Цитата:

Сообщение от Slavenin
к тому же, я отслеживал полностью сетевую активность на странице почты, там нет этого промежуточного этапа с формой.

Гы как нет - отключите ява скрипт и брауз зависнет на этой форме

Slavenin 28.08.2012 10:40

куки у меня пишутся и принимаются.
странно, что этот пересыл не отображается в сетевой активности...
сейчас попробую поиграться с формой...
хотя это не объясняет факта работоспособности скрипта на продолжении 5-10 минут после посещения сайта

Deff 28.08.2012 10:47

Slavenin,
Отключите ява скрипт и воткните в адресную строку
удален длинный код админом

Кука там два
ASP.NET_SessionId:
SessionId:

Slavenin 28.08.2012 10:58

да я знаю, что там два кука, но отдаются они только после отсыла формы и курл их с успехом пишет в файлы

победа!!!
Deff, огромная вам благодарность!!! С меня +!

Deff 28.08.2012 12:16

Slavenin,
Эти два кука должна отдать форма (*эта форма, вместе с перезапросом
если куки уже стоят и отдаются при перезапросах, - форма не подгружаецо

Куки стоят на текущую сессию - т.е они отправляются с каждым запросом любой страницы с сайта
Куки генерит именно эта форма - с этой страницы и нужно их считать

Dronello 31.08.2012 10:43

а можно пример поподробнее - как отсылать вторую форму где есть поле "key"

форму получаю - отсылаю - опять форма приходит та же самая и куки пустые (файл на серваке не формируется)

значение этого key выковыриваю - отправляю по тому же адресу форму - а в ответ куки не приходят


upd - сузил пока проблему - форма уходит в постоянную перезагрузку и файл куков пустой...


Часовой пояс GMT +3, время: 21:12.