Отслеживание почтовых сообщений парсингом страницы (УкрПочта)

Когда официальное API есть, но по факту не работает. Возвращаемся к старому способу — парсинг страниц.

Для внутреннего проекта необходимо было реализовать сервис отслеживания факта доставки заказного письма через Укрпочту клиенту. Обратившись к поиску, получили ссылку на местную статью. Но оказалось, что три года — это достаточный срок, чтобы сервис перестал работать. 

Причем, сам сервис вроде бы находится по нужному адресу: http://services.ukrposhta.com/barcodestatistic/barcodestatistic.asmx?wsdl

По адресу http://services.ukrposhta.com/barcodestatistic/barcodestatistic.asmx?op=GetBarcodeInfo находим страницу, на которой можно протестировать работу сервиса, но увы — встречаем таймаут при запросе. На этой же странице, находим возможность получить историю письма при помощи http GET или POST запроса. Но снова — увы. Наш запрос потерялся в дебрях почты.

С другой стороны, сервис http://services.ukrposhta.ua/bardcodesingle/ живет и достаточно оперативно выдает результаты. 

Обращения по всем доступным нам номерам телефонов не позволило выйти на техническую поддержу. Случайно обнаруженная вакансия о поиске Укрпочтой программиста по внешним интерфейсам (API) сводила вероятность найти нужного сотрудника вообще к нулю. Вспоминаем, что для Android существует несколько программ для отслеживания посылок Укрпочты. Неужели там не найдется нужного нам решения? Проанализировав трафик таких приложений, мы разделили их условно на две категории: запрос через собственный ресурс приложения (скрыт для анализа) и …. обращение к странице http://services.ukrposhta.ua/bardcodesingle/. Т.е. заветным API никто напрямую не пользуется.

Принято непопулярное решение — парсить страницу поиска.

Вводим трекномер на странице http://services.ukrposhta.ua/bardcodesingle/ и смотрим что загрузка идет со страницы http://services.ukrposhta.ua/bardcodesingle/DownloadInfo.aspx?id=ХХХХХХХХХХХХХ , где ХХХХХХХХХХХХХ  — искомый трек номер. Вводим этот адрес на другой машине — вместо нашей страницы получаем первоначальную http://services.ukrposhta.ua/bardcodesingle/Default.aspx. 

Простой HTTP GET значит не пройдет.  Будем эмулировать запрос.

Грузим страницу http://services.ukrposhta.ua/bardcodesingle/ и смотрим, что происходит при нажатии на кнопку «Пошук». Страница делает запрос на /bardcodesingle/Default.aspx, передавая в запросе несколько параметров, один из которых — искомый трекномер. В ответ должна прийти страница с кодом 302 (редирект), в поле Location заголовка ответа содержится страница для перехода — вышеуказанная http://services.ukrposhta.ua/bardcodesingle/DownloadInfo.aspx?id=ХХХХХХХХХХХХХ. Загрузив данную страницу, можно спокойно ее парсить: в ней содержится только одна html таблица, в которой указаны этапы прохождения письма. Для удобства, к последеней строке редиректа можно добавить параметр «culture=en» для гарантированного получения страницы на английском языке. Про конвертацию html таблицы в таблицу значений на Инфостарте были публикации — например, //infostart.ru/public/172688/. Если встречаем статус «Handing over personally to an addressee», значит Укрпочта доставила наше письмо адресату!

Ну и сам программный текст (ШК = трекномер)

 //загружаем первую страницу и получаем cookie
Соединение = Новый HTTPСоединение("services.ukrposhta.ua");
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Host", "services.ukrposhta.ua");
ЗаголовокHTTP.Вставить("Upgrade-Insecure-Requests", "1");
ЗаголовокHTTP.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36");
ЗаголовокHTTP.Вставить("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
ЗаголовокHTTP.Вставить("Accept-Encoding", "gzip, deflate");
ЗаголовокHTTP.Вставить("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
Запрос = Новый HTTPЗапрос("/bardcodesingle/",ЗаголовокHTTP);
Ответ = Соединение.Получить(Запрос);
Cookie = ответ.Заголовки.Получить("Set-Cookie");
поз = Найти(Cookie,";");
Если поз>0 тогда
Cookie=Лев(Cookie,поз-1);
КонецЕсли;

//загружаем вотрую страницу, формируем запрос (параметры VIEWSTATE,__EVENTTARGET,__EVENTARGUMENT  не меняются, меняем только ctl00_centerContent_txtBarcode на наш.
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Host", "services.ukrposhta.ua");
ЗаголовокHTTP.Вставить("Cache-Control", "max-age=0");
ЗаголовокHTTP.Вставить("Origin", "http://services.ukrposhta.ua");
ЗаголовокHTTP.Вставить("Upgrade-Insecure-Requests", "1");
ЗаголовокHTTP.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36");
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
ЗаголовокHTTP.Вставить("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
ЗаголовокHTTP.Вставить("Referer","http://services.ukrposhta.ua/bardcodesingle/");
ЗаголовокHTTP.Вставить("Accept-Encoding", "gzip, deflate");
ЗаголовокHTTP.Вставить("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
ЗаголовокHTTP.Вставить("Cookie", Cookie);
Запрос = Новый HTTPЗапрос("/bardcodesingle/Default.aspx",ЗаголовокHTTP);

стр_=СтрЗаменить("__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKMTM5MzExOTM3NQ9kFgJmD2QWAgIDD2QWBgIBDxYCHgVjbGFzcwUGbG9nb1VLZAIDDxYCHgdWaXNpYmxlaBYCZg9kFgICAQ9kFgICAQ8PFgIeBFRleHQFVdCS0ZbQtNGB0YLQtdC20LXQvdC90Y8g0L%2FQtdGA0LXRgdC40LvQsNC90L3RjyDQv9C%2B0YjRgtC%2B0LLQuNGFINCy0ZbQtNC%2F0YDQsNCy0LvQtdC90YxkZAIFD2QWBgIBDw8WAh8CBR7QqNCw0L3QvtCy0L3RliDQutC70ZbRlNC90YLQuCFkZAICDxYCHglpbm5lcmh0bWwF3AQmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDvQktC4INC80L7QttC10YLQtSDQtNGW0LfQvdCw0YLQuNGB0Y8g0L%2FRgNC%2BINC80ZbRgdGG0LXQt9C90LDRhdC%2B0LTQttC10L3QvdGPINGC0LAg0YHRgtCw0L0g0YDQtdGU0YHRgtGA0L7QstCw0L3QvtCz0L4g0L%2FQvtGI0YLQvtCy0L7Qs9C%2BIDxici8%2BINCy0ZbQtNC%2F0YDQsNCy0LvQtdC90L3Rjywg0YnQviDRgNC%2B0LfRiNGD0LrRg9GU0YLRjNGB0Y8sINGDINCx0YPQtNGMLdGP0LrQuNC5INC30YDRg9GH0L3QuNC5INC00LvRjyDQktCw0YEg0YfQsNGBLiA8YnIgLz4gPGJyIC8%2BJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A70IbQvdGE0L7RgNC80LDRhtGW0Y4g0LzQvtC20L3QsCDQvtGC0YDQuNC80LDRgtC4INC%2F0YDQvjogPGJyIC8%2BZAIDD2QWCgIBDxYCHwMF3xsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDstINCy0L3Rg9GC0YDRltGI0L3RliDRgNC10ZTRgdGC0YDQvtCy0LDQvdGWINC%2F0L7RiNGC0L7QstGWINCy0ZbQtNC%2F0YDQsNCy0LvQtdC90L3Rjywg0YnQviDQv9C10YDQtdGB0LjQu9Cw0Y7RgtGM0YHRjyDQsiDQvNC10LbQsNGFINCj0LrRgNCw0ZfQvdC4Ozxici8%2BDQogICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDstINC80ZbQttC90LDRgNC%2B0LTQvdGWINGA0LXRlNGB0YLRgNC%2B0LLQsNC90ZYg0L%2FQvtGI0YLQvtCy0ZYg0LLRltC00L%2FRgNCw0LLQu9C10L3QvdGPLCDRidC%2BINC%2F0LXRgNC10YHQuNC70LDRjtGC0YzRgdGPINC30LAg0LzQtdC20ZYg0KPQutGA0LDRl9C90Lg7PGJyLz4NCiAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy0g0LzRltC20L3QsNGA0L7QtNC90ZYg0YDQtdGU0YHRgtGA0L7QstCw0L3RliDQv9C%2B0YjRgtC%2B0LLRliDQstGW0LTQv9GA0LDQstC70LXQvdC90Y8sINGJ0L4g0L3QsNC00ZbQudGI0LvQuCDQsiDQo9C60YDQsNGX0L3Rgy48YnIvPjxici8%2BDQogICANCiAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO9CU0L4g0LLQsNGI0L7RlyDRg9Cy0LDQs9C4ICZuYnNwOzxiPjxhIGhyZWY9J0Rvd25sb2FkQ291bnRyaWVzTGlzdC5hc3B4Jz7Qv9C10YDQtdC70ZbQuiDQutGA0LDRl9C9PC9hPjwvYj4g0Lcg0L3QsNGG0ZbQvtC90LDQu9GM0L3QuNC80Lgg0L%2FQvtGI0YLQsNC80LgsINC3INGP0LrQuNC80Lgg0KPQutGA0L%2FQvtGI0YLQsCDQt9C00ZbQudGB0L3RjtGUINC00LLQvtGB0YLQvtGA0L7QvdC90ZbQuSDQvtCx0LzRltC9INGB0YLQsNGC0YPRgdGW0LIg0YnQvtC00L4g0LTQvtGB0YLQsNCy0LrQuCDQvNGW0LbQvdCw0YDQvtC00L3QuNGFINC%2F0L7RiNGC0L7QstC40YUg0LLRltC00L%2FRgNCw0LLQu9C10L3RjC48YnIvPjxici8%2BDQogICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDvQndCwINC00LDQvdC40Lkg0LzQvtC80LXQvdGCINGDINCy0LDRgSDRlCDQvNC%2B0LbQu9C40LLRltGB0YLRjCDQstGW0LTRgdGC0LXQttC40YLQuCDQvNGW0YHRhtC10LfQvdCw0YXQvtC00LbQtdC90L3RjyDQvNGW0LbQvdCw0YDQvtC00L3QuNGFINC%2F0L7RiNGC0L7QstC40YUg0LLRltC00L%2FRgNCw0LLQu9C10L3RjDo8YnIvPg0KICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A74oCTINC80ZbQttC90LDRgNC%2B0LTQvdC40YUg0L%2FQvtGB0LjQu9C%2B0Log0LIgMTYxINC60YDQsNGX0L3Rljs8YnIvPg0KICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A74oCTINC80ZbQttC90LDRgNC%2B0LTQvdC%2B0Zcg0L%2FQuNGB0YzQvNC%2B0LLQvtGXINC60L7RgNC10YHQv9C%2B0L3QtNC10L3RhtGW0ZcgKNC00YDRltCx0L3QuNGFINC%2F0LDQutC10YLRltCyLCDQsdCw0L3QtNC10YDQvtC70LXQuSwg0YDQtdC60L7QvNC10L3QtNC%2B0LLQsNC90LjRhSDQu9C40YHRgtGW0LIpINCyIDY4INC60YDQsNGX0L3QsNGFOzxici8%2BDQogICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDvigJMg0LzRltC20L3QsNGA0L7QtNC90LjRhSDQv9C%2B0YjRgtC%2B0LLQuNGFINCy0ZbQtNC%2F0YDQsNCy0LvQtdC90Ywg0Lcg0L7Qs9C%2B0LvQvtGI0LXQvdC%2B0Y4g0YbRltC90L3RltGB0YLRjiDQsiAzMiDQutGA0LDRl9C90LDRhS48YnIvPg0KICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGI%2B0JzRltC20L3QsNGA0L7QtNC90LjQuSDRgtGA0LXQutGW0L3QsyDQv9GA0LDRhtGO0ZQg0LIg0YLQtdGB0YLQvtCy0L7QvNGDINGA0LXQttC40LzRli48L2I%2BPGJyLz48YnIvPg0KICAgDQogICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDvQo9Cy0LXQtNGW0YLRjCwg0LHRg9C00Ywt0LvQsNGB0LrQsCwg0LHQtdC3INC%2F0YDQvtC%2F0YPRgdC60ZbQsiZuYnNwOyDRgtCwINGW0L3RiNC40YUg0YHQuNC80LLQvtC70ZbQsiDQv9C%2B0LLQvdC40LkgJm5ic3A7PGI%2BMTMt0YHQuNC80LLQvtC70YzQvdC40Lk8L2I%2BIDxiciAvPiDQu9GW0YLQtdGA0L3Qvi3RhtC40YTRgNC%2B0LLQuNC5INC90L7QvNC10YAgKNGI0YLRgNC40YXQutC%2B0LTQvtCy0LjQuSDRltC00LXQvdGC0LjRhNGW0LrQsNGC0L7RgCkg0L%2FQvtGI0YLQvtCy0L7Qs9C%2BINCy0ZbQtNC%2F0YDQsNCy0LvQtdC90L3Rjywg0Y%2FQutC40Lkg0LfQsNC30L3QsNGH0LXQvdC%2BJm5ic3A7INC90LAmbmJzcDsg0JLQsNGI0L7QvNGDJm5ic3A7INGA0L7Qt9GA0LDRhdGD0L3QutC%2B0LLQvtC80YMmbmJzcDsg0LTQvtC60YPQvNC10L3RgtGWJm5ic3A7ICjQutCw0YHQvtCy0L7QvNGDINGH0LXQutGDLCDRgNC%2B0LfRgNCw0YXRg9C90LrQvtCy0ZbQuSDQutCy0LjRgtCw0L3RhtGW0Zcg0YLQvtGJ0L4pINGC0LAg0L3QsNGC0LjRgdC90ZbRgtGMINC90LAg0LrQvdC%2B0L%2FQutGDIMKr0J%2FQvtGI0YPQusK7INCw0LHQviDQutC70LDQstGW0YjRgyDCq0VudGVywrsuPGJyLz48YnIvPg0KICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A70IbQtNC10L3RgtC40YTRltC60LDRgtC%2B0YAmbmJzcDsg0LzRltC20L3QsNGA0L7QtNC90L7Qs9C%2BINC%2F0L7RiNGC0L7QstC%2B0LPQviDQstGW0LTQv9GA0LDQstC70LXQvdC90Y8g0LzRltGB0YLQuNGC0YwgMTMg0YHQuNC80LLQvtC70ZbQsiwg0Lcg0L3QuNGFOiAxLdC5INGC0LAgMi3QuSDRgdC40LzQstC%2B0LvQuCDigJQg0LvQsNGC0LjQvdGB0YzQutGWINC70ZbRgtC10YDQuCwg0YnQviDQv9C%2B0YfQuNC90LDRjtGC0YzRgdGPINC3INC70ZbRgtC10YAgUiwgQyDRgtCwIFY7INC3IDMt0LPQviDQv9C%2BIDExLdC5IOKAlCDRhtC40YTRgNC4OyAxMi3QuSDRgtCwIDEzLdC5IOKAlCDQu9GW0YLQtdGA0LgsINGP0LrRliDQstGW0LTQvtCx0YDQsNC20LDRjtGC0Ywg0LrQvtC0INC60YDQsNGX0L3QuC3QstGW0LTQv9GA0LDQstC90LjQutCwICjQvdCw0L%2FRgNC40LrQu9Cw0LQsIFVBIOKAlCDQo9C60YDQsNGX0L3QsCwgUlUg4oCUINCg0L7RgdGW0Y8sIFVTIOKAlCDQodCo0JAsIElMIOKAlCDQhtC30YDQsNGX0LvRjCDRgtC%2B0YnQvikuPGJyLz48YnIvPg0KICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A70IbQtNC10L3RgtC40YTRltC60LDRgtC%2B0YAg0LLQvdGD0YLRgNGW0YjQvdGM0L7Qs9C%2BINC%2F0L7RiNGC0L7QstC%2B0LPQviDQstGW0LTQv9GA0LDQstC70LXQvdC90Y8g0YHQutC70LDQtNCw0ZTRgtGM0YHRjyDQtyAxMyDRhtC40YTRgC48YnIvPjxici8%2BDQogICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDvQn9GA0LjQutC70LDQtNC4INC90L7QvNC10YDRltCyOiA8YnIvPg0KICAgLSDQvNGW0LbQvdCw0YDQvtC00L3QuNGFINC%2F0L7RiNGC0L7QstC40YUg0LLRltC00L%2FRgNCw0LLQu9C10L3RjDogUkExMjM0NTY3ODlVQSwgQ0ExMjM0NTY3ODlVQSwgVkExMjM0NTY3ODlVQSA8YnIvPg0KICAgLSDQstC90YPRgtGA0ZbRiNC90YzQvtCz0L4g0LLRltC00L%2FRgNCw0LLQu9C10L3QvdGPOiAgMDEyMzQ1Njc4OTEyM2QCBQ8PFgIfAgUK0J%2FQvtGI0YPQumRkAgkPZBYCZg9kFgICAQ8PFgIfAgU%2F0JfQsNGH0LXQutCw0LnRgtC1LCDQktCw0Ygg0LfQsNC%2F0LjRgiDQvtCx0YDQvtCx0LvRj9GU0YLRjNGB0Y8hZGQCCw8WAh8DBZsC0IbQvdGE0L7RgNC80LDRhtGW0Y8g0L%2FRgNC%2BINC90LDRj9Cy0L3RltGB0YLRjCDRgtCwINGB0YLQsNC9INC%2F0LXRgNC10YHQuNC70LDQvdC90Y8gINC%2F0L7RiNGC0L7QstC40YUg0LLRltC00L%2FRgNCw0LLQu9C10L3RjCDQv9C%2B0YHRgtGW0LnQvdC%2BINC%2B0L3QvtCy0LvRjtGU0YLRjNGB0Y8g0Lkg0LfQsdC10YDRltCz0LDRlNGC0YzRgdGPINCyINGB0LjRgdGC0LXQvNGWINC%2F0YDQvtGC0Y%2FQs9C%2B0LwgNiDQvNGW0YHRj9GG0ZbQsiDQtyDQvNC%2B0LzQtdC90YLRgyDRgNC10ZTRgdGC0YDQsNGG0ZbRl2QCDQ8PFgYfAgX%2BAtCd0LDQtNCw0ZTRgtGM0YHRjyDQtNC%2B0LTQsNGC0LrQvtCy0LAg0LzQvtC20LvQuNCy0ZbRgdGC0Ywg0LLRltC00YHRgtC10LbQuNGC0Lgg0L%2FQtdGA0LXRgdC40LvQsNC90L3RjyDQvNGW0LbQvdCw0YDQvtC00L3QuNGFINGA0LXRlNGB0YLRgNC%2B0LLQsNC90LjRhSDQv9C%2B0YjRgtC%2B0LLQuNGFINCy0ZbQtNC%2F0YDQsNCy0LvQtdC90Ywg0LfQsCDQtNC%2B0L%2FQvtC80L7Qs9C%2B0Y4g0JPQu9C%2B0LHQsNC70YzQvdC%2B0Zcg0YHQuNGB0YLQtdC80Lgg0JLRgdC10YHQstGW0YLQvdGM0L7Qs9C%2BINC%2F0L7RiNGC0L7QstC%2B0LPQviDRgdC%2B0Y7Qt9GDINGB0LvRltC00LrRg9Cy0LDQvdC90Y8g0LfQsCDQv9GA0L7RhdC%2B0LTQttC10L3QvdGP0Lwg0LLRltC00L%2FRgNCw0LLQu9C10L3RjC4eB0VuYWJsZWRoHwFoZGRkC%2BIJcyGFGDYl7LFo%2F4muOVSMw7M%3D&__VIEWSTATEGENERATOR=F0813681&ctl00%24centerContent%24txtBarcode=ХХХХХХХХХХХХХ&ctl00%24centerContent%24btnFindBarcodeInfo=%D0%9F%D0%BE%D1%88%D1%83%D0%BA","ХХХХХХХХХХХХХ",ШК);
Запрос.УстановитьТелоИзСтроки(стр_);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Location = ответ.Заголовки.Получить("Location");

//получаем Location из ответа на наш запрос, добавляем нужный язык страницы и загружаем ее.
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Host", "services.ukrposhta.ua");
ЗаголовокHTTP.Вставить("Cache-Control", "max-age=0");
ЗаголовокHTTP.Вставить("Origin", "http://services.ukrposhta.ua");
ЗаголовокHTTP.Вставить("Upgrade-Insecure-Requests", "1");
ЗаголовокHTTP.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36");
ЗаголовокHTTP.Вставить("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
ЗаголовокHTTP.Вставить("Referer","http://services.ukrposhta.ua/bardcodesingle/");
ЗаголовокHTTP.Вставить("Accept-Encoding", "deflate");
ЗаголовокHTTP.Вставить("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
ЗаголовокHTTP.Вставить("Cookie", Cookie);

Запрос = Новый HTTPЗапрос(Location+"&culture=en",ЗаголовокHTTP);
Ответ = Соединение.Получить(Запрос);
ОтветВВидеСтроки = Ответ.ПолучитьТелоКакСтроку();
//В переменной ОтветВВидеСтроки - код нужной нам страницы!

Описанным способом можно получать не только информацию про письма внутри страны, но и международные отправления, доставляемые Укрпочтой (например, посылка с Aliexpress и т.д.). Международные отправления таким образом трекаются только после поступления в международный пункт обмена Укрпочты (т.е. по территории Украины).

2 Comments

  1. ALF_RTF

    У УкрПочты есть уже новый трекинг (не вариант http://services.ukrposhta.com/barcodestatistic/barcodestatistic.asmx?op=GetBarcodeInfo).

    Связывайтесь с УкрПочтой интересуйтесь.

    Пока что он сырой (без документации) и сотрудниками УкрПочты были предоставлены только 4 метода (ниже просто условные наименования):

    Get tracking statuses by barcode — список статусов по ТТН

    Get last tracking statuses by barcode — последний статус по ТТН

    Get tracking statuses by barcode list — список статусов по списку ТТН

    Get last tracking statuses by barcode list — список последних статусов по списку ТТН.

    Да, некоторое время он не работал, пока разгребали последствия вируса пети, но сейчас работает исправно.

    P.S. не рекламирую, просто мы озадачились этим вопросом, связались с УкрПочтой, на момент написания этого комментария внедрение этого АПИ на завершающей стадии, но пока полёт нормальный.

    Reply
  2. abavas

    Пробовал и его с тем демо ключом, который описан в документации (fcc8d9e1-b6f9-438f-9ac8-b67ab44391dd)

    Уходит в таймаут.

    Вот сейчас еще раз проверил.

    Можно вопрос — с кем связывались?

    Можете попробовать на этой странице http://services.ukrposhta.com/barcodestatistic/barcodestatistic.asmx?op=GetBarcodeInfo

    вбить свой API-key, любой трек номер и посмотреть как быстро запрос отработает, а потом то же самое, но с демо-ключом?

    Может быть они демо-ключ игнорируют?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *