[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Procurar passagens mais baratas na Gol com Shell Scri
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] Procurar passagens mais baratas na Gol com Shell Script |
Date: |
Mon, 9 Jun 2008 19:43:20 -0300 |
Joao,
2008/6/9 João Souto Maior <address@hidden>:
> Tiago/Celso,
>
> Acredito que se a gente usar algum sniffer fica mais fácil de encontrar oq
> eh enviado no post, pois dependendo da forma que a página estiver escrita
> fica muito complicado de achar isso.
>
> J
Não precisa de um sniffer não.
Se vc quer saber o que uma pagina manda, basta salva-la e alterar o
action e forçar um erro, que o browser mostra
Ex:
$ curl 'http://compre3.voegol.com.br/skylights/cgi-bin/skylights.cgi'
> form.html
$ grep 'post' form.html
1323: <form name='search_form' method='post' action='skylights.cgi' ...
Basta alterar o metodo para get e o action para qq coisa q não seja uma url:
<form name='search_form' method='get' action='skylights.cgi'
Abre esse arquivo em algum browser (infelizmente precisa ser algum que
suporte javascript como o Opera, Konqueror ou mesmo Firefox) e faça
uma consulta.
Vais descobrir que a querystring de pesquisa de voos do Rio de Janeiro
para Porto Alegre, amanhã (10/06/2008), resulta num monstro como este:
travel_type=on§or1_o=aGIG§or1_d=POA§or_1_d=10§or_1_m=062008§or_2_d=00§or_2_m=000000&ADULT=1&CHILD=0&INFANT=0&oP=&pT=1ADULT0CHILD&nom=1&pM=0&tc=1&sid=&language=PT&mode=&module=SB&page=SELECT&openjaw_flag=true&m1=20080610GIGPOA&m1DP=0&m1DO=0&m2=&m2DP=0&m2DO=0
os códigos dos destinos e datas fica um pouco obfuscado. Perceba que a
data esta tanto no sector_1_d quanto sector_1_m quanto m1
Basta então fazer um segundo curl
$ curl
'http://compre3.voegol.com.br/skylights/cgi-bin/skylights.cgi?aquela_query_string_monstra'
> resposta.html
OU
$ lynx --dump 'aquele endereço gigante' > resposta.txt
Uma forma de formatar
$ sed -nr '/Antes/q;s/\[[[:alnum:].]+\]//g;s/^[ \t]*Clique[^)]+\)[
\t]*/======\n/;p' resposta.txt | sed -nr '/^[ \t]*$/d;/Tarifa/,$p'
(tive de usar 2 seds para formatar as respostas.)
isso produz algo como:
Tarifa K
Adulto R$ 790,00
Ter, 10 Jun 08
Vôo 1663
03:40 Partida RIO-Galeão-RJ (GIG)
Escala SAO-Guarulhos-SP (GRU)
06:40 Chegada Porto Alegre-RS (POA)
======
Tarifa Y
Adulto R$ 835,00 *
Ter, 10 Jun 08
Vôo 1342
Vôo 1944
06:00 Partida RIO-Galeão-RJ (GIG)
Conexão SAO-Guarulhos-SP (GRU)
12:20 Chegada Porto Alegre-RS (POA)
======
...
O ruim é que é dificil pra diabo pesquisar de forma satisfatória nesse
tipo de resposta, pois muita coisa pode vir de qq jeito. sem falar que
só fiz pensando em procurar passagem de ida, não de volta. De qq
forma, basta colocar esse script na cron e vc tem uma lista dos
valores das passagens, tosco, mas que pode ajudar a quem precisa
viajar pra rever familia, etc, uma prova que shell script é poderoso a
beça, basta saber colocar os pipes certos e abusar de expressões
regulares feito um condenado.
Uma forma de descobrir a passagem mais barata é salvar um lista.txt
com essa listagem e fazer:
$ echo "preço sai chega" ;grep -oE -e 'R\$[ \t]*[0-9,]+|[0-9:]{5}'
lista.txt | tr '\n' ' ' | sed 's/R\$ */\n/g' | sort -n
preço sai chega
389,00 11:00 17:30
389,00 15:21 20:00
389,00 16:10 00:30
389,00 16:10 23:20
555,00 23:10 06:40
...
Ja ajuda né?
Quem quiser transformar o script em algo util fique a vontade :)
Outros usos interessantes podem ser:
- Horario de Cinema
- Cotação de Dolar/Euro
- Procurar um livro no mercado livre diariamente (vai que surja uma
oportunidade imperdível)
- Previsão do Tempo
2008/6/9 Ivan lopes <address@hidden>:
> eu fui lah e vi ...
> o javascript deles eh bel legivel ...
> basta abrir o java script e ver oq vai para as "cgis" com extencao
> asp! rsrssrsrs!
>
> eh facil fazer mas trabalhoso!
Não é pra tanto, Ivan ;-) Até pq iriamos discutir javascript nessa
lista, o que não é necessário:
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
--
Tiago B Peczenyj
Linux User #405772
http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"