On 09/05/2013 16:05, Andre Carneiro wrote:
Pode crer Álvaro! Valeu!
2013/5/9 Marcio Ferreira <[email protected]
<mailto:[email protected]>>
Hmm, se a coisa estiver tensa com o javascript, tente usar o
https://github.com/n1k0/casperjs
CasperJS++
[]s,
Marcio Ferreira
skype: marcio.ferreir4
(21) 8365-7768 <tel:%2821%29%208365-7768>
2013/5/9 Alvaro Luiz <[email protected]
<mailto:[email protected]>>
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()
Provavelmente a url final nao aceitou POST porque exige algum tipo de
validação de session que deve ocorrer ná página onde se encontra o tal
botão que vc acionou via mech
...
Segue aqui como exemplo um rascunho de parte de um modulo que
estou criando para interagir como um sistema em ASP.NET
<http://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 <http://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
<[email protected]
<mailto:[email protected]>> escreveu:
Se o site tá em ASP.NET <http://ASP.NET> não esqueça de
incluir o token gigantesco na requisição, que os sites
feitos em ASP.NET <http://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...
=begin disclaimer
Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
<mailto:[email protected]>
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
=begin disclaimer
Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
<mailto:[email protected]>
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
--
André Garcia Carneiro
Software Engineer
(11)982907780
=begin disclaimer
Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
--
Eduardo Almeida - Software Engineer
[email protected] - 27 3021-2430 / 27 9839 3755
*WEB2 Solutions* - Inovando, sempre!
=begin disclaimer
Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer