Парсинг сайта почты России(что-то такое они изобрели)
Всем доброго времени суток!
Есть скрипт, который до недавнего времени прекрасно работал и парсил данные о стоимости доставки. НО настал тот самый "прекрасный момент" и на сайте почты изобрели что-то такое, что безошибочно определяет, что на сайт пришел робот... Полная имитация браузера пришедшего с основной страницы не помогает, ибо даже главная страница не открывается. Вместо кода со стоимостью возвращается волшебный код бесконечного редиректа: <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 и сокетов, заканчивая курлом, на чем пока и остановился за неимением других идей... Очень надеюсь на вашу помощь... админ удалил страшный код ибо место ему на пастбинах |
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,
Вы проверьте куки которые приходят с формой - очевидно они отличны от ранее посылаемых ( посылаются куки к данной форме |
Цитата:
|
куки у меня пишутся и принимаются.
странно, что этот пересыл не отображается в сетевой активности... сейчас попробую поиграться с формой... хотя это не объясняет факта работоспособности скрипта на продолжении 5-10 минут после посещения сайта |
Slavenin,
Отключите ява скрипт и воткните в адресную строку удален длинный код админом Кука там два ASP.NET_SessionId: SessionId: |
да я знаю, что там два кука, но отдаются они только после отсыла формы и курл их с успехом пишет в файлы
победа!!! Deff, огромная вам благодарность!!! С меня +! |
Slavenin,
Эти два кука должна отдать форма (*эта форма, вместе с перезапросом если куки уже стоят и отдаются при перезапросах, - форма не подгружаецо Куки стоят на текущую сессию - т.е они отправляются с каждым запросом любой страницы с сайта Куки генерит именно эта форма - с этой страницы и нужно их считать |
а можно пример поподробнее - как отсылать вторую форму где есть поле "key"
форму получаю - отсылаю - опять форма приходит та же самая и куки пустые (файл на серваке не формируется) значение этого key выковыриваю - отправляю по тому же адресу форму - а в ответ куки не приходят upd - сузил пока проблему - форма уходит в постоянную перезагрузку и файл куков пустой... |
нужно с помощью все того же курла методом пост отправить параметр key=значение ключа, в ответ получите нормальную страницу и куки, не стоит делать echo hml; в этом случае форма отошлется не на страницу почты, а на страницу с вашим скиптом.
|
да, действительно так - писал эхо для проверки
сейчас отдается - от ngnix ( пустая форма с key от fedora) только кракозябры теперь - формирую в utf-8 , curl отдает тоже в uft-8 update - это оказалось из-за моей неграмотности по факту - парсинг состоялся! работает !!! ура ! сутки прошли интересно ! |
Здравствуйте. А можно поподробнее о данном удачном парсинге? Впервые с данным сталкиваюсь, поэтому есть трудности. Передать BarCode постом это понятно, но там докучи капча InputedCaptchaCodex преодолевать?
|
Часовой пояс GMT +3, время: 16:41. |