[SP-pm] Capturar dados de sites

Alvaro Luiz alvaro.brasilia at gmail.com
Thu May 9 10:24:31 PDT 2013


Com o WWW::Mechanize é possível sim, depois de muito quebrar a cabeça
consegui solucionar da seguinte forma:

....

my $name = 'ctl00$ctl00$MasterConteudo$Conteudo$LoginSistema$UserName';
my $pass = 'ctl00$ctl00$MasterConteudo$Conteudo$LoginSistema$Password';
my $button = 'ctl00$ctl00$MasterConteudo$Conteudo$LoginSistema$LoginButton';
my $viewstate = ($mech->find_all_inputs( type => 'hidden', name =>
'__VIEWSTATE' ))[0]->value;
my $validation = ($mech->find_all_inputs( type => 'hidden', name =>
'__EVENTVALIDATION' ))[0]->value;
#loga no painel
$mech->field($name => $cpfcnpj);
$mech->field($pass => $senha);
$mech->field(__VIEWSTATE => $viewstate);
$mech->field(__EVENTVALIDATION => $validation);
$mech->field(__VIEWSTATEENCRYPTED => '');
$mech->click(); #Não funcionou nem com post() nem submit() apenas
simulando click()

...

Segue aqui como exemplo um rascunho de parte de um modulo que estou criando
para interagir como um sistema em ASP.NET nesse git bagunçado e abandonado
ai esta apenas a parte de login, mais sera suficiente para dar uma luz ao
Marcio.

https://github.com/AlvaroBrasilia/WWW-NFSe-Guarapari/blob/master/WWW-NFSe-Guarapari-0.02/lib/WWW/NFSe/Guarapari.pm

Interagir com .NET é bem chato, algumas coisas não funcionam bem usando
WWW::Mechanize pois ele ainda tem algumas limitações a interação com
Javascript.

Uma alternativa que parece ser ideal para interagir com paginas asp.net é
o HTML::TreeBuilderX::ASP_NET mas ainda não testei pois a forma que  fiz no
exemplo acima atendeu minhas necessidades.

Ignorem a bagunça e possíveis erros, estou apenas engatinhando nesse mundo
Perl.

Att.

Álvaro Luiz


Em 9 de maio de 2013 13:54, Andre Carneiro
<andregarciacarneiro em gmail.com>escreveu:

>
> Se o site tá em ASP.NET não esqueça de incluir o token gigantesco na
> requisição, que os sites feitos em ASP.NET normalmente geram
> automaticamente através de componentes .NET. Para facilitar utilize algum
> sniffer de http como Burp, wireshark ou mesmo o bom e velho Data Tamper(nem
> sei se existe isso ainda). Com isso poderás ver tudo o que está rolando na
> requisição desde cabeçalhos http até as variáveis que deverão ser incluídas
> na requisição(acho mais prático).
>
> Não sei se dá para fazer  isso automaticamente com WWW::Mechanize,
> acredito que não. De qualquer forma, você sempre pode escolher o 'caminho
> mais dolorido', abrindo o código da página, e checar as variáveis com 'os
> zóio'. Eu não recomendo, pois se tiver Javascript envolvido com
> requisição(o que não é difícil hoje em dia), vai ter mais trabalho para
> montar a requisição com tudo o que ela precisa.
>
> Sinceramente recomendo que você analise tudo com um sniffer ou algo
> parecido para só por desencargo...
>
>
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130509/4eff8ca0/attachment.html>


More information about the SaoPaulo-pm mailing list