shell-script-pt
[Top][All Lists]
Advanced

[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&sector1_o=aGIG&sector1_d=POA&sector_1_d=10&sector_1_m=062008&sector_2_d=00&sector_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"


reply via email to

[Prev in Thread] Current Thread [Next in Thread]