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 <[email protected]>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... > >
=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
