Stažení dodacích listů od Rabenu

Raben (logistická firma) má webovou aplikaci ve které je možné vyhledávat již doručené zásilky zákazníka, rozkliknout si detail zakázky a poté stáhnout PDF, které je vložené v iframe. Celá tahle operace ručně zabere minuty na jedno PDF, pořád se na něco čeká na straně serveru.

Následující skript je ukázkou jak to zautomatizovat a postahovat všechna PDF ze zadaného časového intervalu. Formát dat a atributy zasílané z formuláře v prvním volání curl je dán jejich webovou aplikací.

Některé hlavičky a adresy jsou vykopírované z komunikace uživatele přes webový prohlížeč. Data zasílaná formulářem jsou sepsaná do vhodného formátu pro CURL.

#!/opt/local/bin/perl
$datumOd="2013-09-24";
$datumDo="2013-12-02";
$curlCmd='curl -v --data "FNM=FORM1&ARGV=kgTTRelSh%26%5C%3A2%26%5C%3A4%26%5C%3A6%26%5C%3A8%26%5C%3A16%26VAR:1&VAR:1,2='.$datumOd.'&VAR:1,4='.$datumDo.'&VAR:1,6=A&VAR:1,8=CZ&VAR:1,16=1" \
-H "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" \
-H "Accept-Language: en,en-US;q=0.9,cs;q=0.8,sl;q=0.7,sk;q=0.6,ca;q=0.5,el;q=0.4,he;q=0.3,hr;q=0.2,ro;q=0.1" -H "Accept-Encoding: gzip, deflate" \
-H "Authorization: Basic Z6dPaAHmNTQ8bGJroK24IpJ=" \
-H "Referer: http://tt.raben-group.cz/callany.php?role=RT_trtruser&kgTTRoz" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Content-Length: 195" \
"http://tt.raben-group.cz/submit.php?&role=RT_trtruser"';
$curl=`$curlCmd`;
while ($curl =~ m/kgTTdocs&amp;(\d{15})\">Doklady</g) {
$html=`curl -v -H "Authorization: Basic Z6dPaAHmNTQ8bGJroK24IpJ=" \
-H "Referer: http://tt.raben-group.cz/submit.php?&role=RT_trtruser" \
"http://tt.raben-group.cz/callany.php?role=%21%21wrtey&kgh-RAW_doc&44&$1"`;
 $name=$1;
$html =~ m!(navitmp.php\?file=navtmp_.+&type=&type=application/pdf)!;
`curl -v -H "Authorization: Basic Z6dPaAHmNTQ8bGJroK24IpJ=" \
-H "Referer: http://tt.raben-group.cz/submit.php?&role=RT_trtruser" \
"http://tt.raben-group.cz/$1" -o $name.pdf`;
}