Много воды и прочих паражняков утекло с тех пор когда я касался трэкинга почты России, Почта России здорово обновила сайт сильно упростив жизнь своим пользователям с одной стороны и усложнив с другой, подавшись модным тенденциям возвращать результат в формате json что в общем не так уж и плохо когда есть jq
jq я собрал локально для того что бы использовать последнюю версию, вместо древнего говна из сис. пакетов.
И так сам скрипт для отслеживания массива посылок:
#!/bin/bash
jq=/www/html/dash/track/jq-1.5/jq
wrkdir=/www/html/dash/track
output=$wrkdir/index.html
echo > $output
tr="RR378888188JP RI916069826CN LM014443717CN LQ01153473CN LQ019679594CN RP359667345SG"
for i in $tr; do
echo $i
wget "https://www.pochta.ru/tracking?p_p_id=trackingPortlet_WAR_portalportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_resource_id=getList&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_count=1&barcodeList=$i&postmanAllowed=true&_=1461757915398" -O $wrkdir/$i.html
$jq '.[][] .trackingItem | .barcode, .originCountryName, .title' $wrkdir/$i.html >> $output
echo "</br>" >> $output
$jq '.[][] .trackingItem | .trackingHistoryItemList[] | "\(.date) \(.humanStatus) \(.description)"' $wrkdir/$i.html >> $output
echo "</br>" >> $output
echo "</br>" >> $output
echo "</br>" >> $output
done
запрос
вернёт json ответ в файл /tmp/RI916069826CN.htmlwget "https://www.pochta.ru/tracking?p_p_id=trackingPortlet_WAR_portalportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_resource_id=getList&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_count=1&barcodeList=
RI916069826CN
&postmanAllowed=true&_=1461757915398" -O /tmp/
RI916069826CN
.html
ответ выглядит так:
{"list":[{"officeSummary":null,"postmanDeliveryInfo":null,"formF22Params":null,"userTrackingItemId":null,"userTitle":null,"itemAddedDate":null,"deleteDate":null,"lastOperationViewed":false,"deleted":false,"autoAdded":false,"lastOperationViewedTimestamp":null,"trackingItem":{"destinationCountryName":"Россия","destinationCountryNameGenitiveCase":"России","originCountryName":"Япония","originCityName":null,"mailRank":0,"mailCtg":1,"postMark":0,"insurance":null,"isDestinationInInternationalTracking":true,"isOriginInInternationalTracking":true,"futurePathList":[],"cashOnDeliveryEventsList":null,"sender":null,"recipient"
это только кусок ответа, на самом деле он раз в 10 больше.Без пайтона или jq бороться с этой мешаниной скобочек и кавычек нихуя не хочется. и не можется. Поэтому мы берём jq и быстренько лепим 2 запроса
1.
'.[][] .trackingItem | .barcode, .originCountryName, .title'
вернёт нам: "RI916069826CN" "Япония" "Мелкий пакет из Японии"
2.
'.[][] .trackingItem | .trackingHistoryItemList[] | "\(.date) \(.humanStatus) \(.description)"'
вернёт нам сам трэк посылки:
"2016-05-06T19:06:00.000+03:00 Получено адресатом Москва 123" "2016-05-04T04:40:00.000+03:00 Ожидает адресата в месте вручения Москва 123" "2016-05-03T02:47:00.000+03:00 Покинуло сортировочный центр Москва МСП-1 МПКО-Центр Уомпо" "2016-05-01T22:22:00.000+03:00 Передано в доставку по России Мр Лц Внуково Цех-2" "2016-04-30T11:20:00.000+03:00 Прием на таможню Мр Лц Внуково Цех-1" "2016-04-30T11:20:00.000+03:00 Выпущено таможней Мр Лц Внуково Цех-2" "2016-04-30T10:54:00.000+03:00 Прошло регистрацию Мр Лц Внуково Цех-3" "2016-04-29T04:42:00.000+03:00 Прибыло на территорию России Шереметьево ММПО PCI-7" "2016-04-26T16:00:00.000+09:00 Ожидает отправку из Японии Япония" "2016-04-25T14:10:00.000+09:00 Принято в отделении связи Япония"
складываем это всё бережно в index.html и отдаём в любой web сервер.