[Cascavel-pm] WWW::Mechanize

Marco A P D'Andrade mdacwb em gmail.com
Segunda Fevereiro 5 04:47:15 PST 2007


Vict0r,

Uma alternativa interessante, para ganhar tempo é utilizar o 
HTML::Recorder, e fazer seu acesso pelo Browser, utilizando seu 
navegador de preferencia...

    http://search.cpan.org/~leira/HTTP-Recorder-0.05/lib/HTTP/Recorder.pm

Como o Igor Garcia comentou, o JS só troca dados com processamento no 
lado do cliente. A não ser que haja uma correlação de dados muito 
dispersos dentro da página, este modulo deve lhe ajudar, e muito!

#--- Parte do manual


    Script output
    <http://search.cpan.org/%7Eleira/HTTP-Recorder-0.05/lib/HTTP/Recorder.pm#___top>

By default, HTTP::Recorder 
<http://search.cpan.org/%7Eleira/HTTP-Recorder-0.05/lib/HTTP/Recorder.pm> 
outputs WWW::Mechanize 
<http://search.cpan.org/perldoc?WWW%3A%3AMechanize> scripts.

However, you can override HTTP::Recorder::Logger to output other types 
of scripts.

#---


PS: a alguns dias eu mandei, e não localizei agora, um link para um 
artigo (em inglês) que descreve o uso.


Sds,
Marco Antonio

vict0r escreveu:
> Igor,
> muito obrigado pela resposta.
> Eu tenho módulos em desenvolvimento para administrar e monitorar os
> roteadores e switches de diversos fabricantes, q costumam fazer isso
> extraindo informações através de comandos no próprio terminal,
> especificamente este se refere a um switch de conteúdo Alteon que eu
> preciso extrair relatórios de estado de diversos servidores que
> possuem tráfego balanceado por este equipamento, mas não fiquei
> satisfeito com o q consegui através dos comandos disponíveis e resolvi
> usar uma estratégia diferente, descobri q através da interface web
> dele é possível gerar os relatórios q eu preciso já prontinhos.
> A minha idéia então era executar essas chamadas via web e obter os relatórios.
> Depois eu vi q não conseguiria com o wget pq se trata de uma interface
> em Javascript, e os relatórios são gerados por chamadas, e agora não
> tenho certeza se conseguirei em perl tb, pois preciso executar essas
> chamadas remotamente, e não tenho as API's dessa interface web em Java
> pra isso..
> A solução q estou conseguindo implementar com sucesso agora é extrair
> localmente as informações q preciso do arquivo de salva da
> configuração do equipamento, que é um dump de tudo q está configurado
> nele, exportado via tftp por outro módulo já em produção, mas terei q
> correlacionar os dados e formatar o relatório.
> Em um primeiro momento será uma salva local para envio por email, mas
> a idéia é depois popular o banco.
> Os relatórios são gerados em html, e o número de links depende do
> tamanho do relatório.
> Bom, acho q é isso. :-)
>
> Agradeço a ajuda de todos, e na segunda vou testar a sua dica.
> Abração.
>
> On 2/2/07, BOO <mayakuuri em bol.com.br> wrote:
>   
>> Olá vict0r,
>>
>> Acho que o problema é que tu não definiu onde guardar cookies e não
>> passou as credenciais...
>> Tenta algo tipo:
>>
>> <code>
>>
>> use strict;
>> use warnings;
>> use Carp qw(croak);
>> use WWW::Mechanize;
>>
>> my $web = WWW::Mechanize->new(timeout => 30);
>>
>> my $url = "http://10.0.1.2";
>>
>> ######## ACHO QUE FOI ISSO QUE FALTOU ########
>>
>> $web->cookie_jar({ file => "./.cookies.txt" });
>> $web->credentials('vict0r', 'senha_do_vict0r');
>>
>> ########################################
>>
>> my $ret = $web->get($url);
>>
>> if ($ret->code != 200){
>>   croak "Deu algo errado... Poste isso em cascavel-pm para ser ajudado !";
>> }
>>
>> my $html = $ret->content;
>>
>> faz_algo_que_preste_com($html);
>>
>> </code>
>>
>>
>> Bem, isso não responde completamente a tua pergunta, pois faltam
>> elementos importantes...
>>
>> 1) Tu ta usando que tipo de autenticação (form+sessão, basic, digest,
>> session-token, et cetera) ?
>> 2) Precisa gravar o que foi coletado em disco ou vai passar para um
>> banco de dados ?
>> 3) Qual o nível de recursividade para ir seguindo os links ?
>> 4) Qualé o propósito principal do script que tu queres desenvolver ?
>>
>> Por favor, responda essas perguntas e poste novos problemas que tu
>> esteja tendo para que possamos
>> te ajudar melhor, ok ?
>>
>> Abraço.
>>
>> Igor Garcia
>>
>>
>> vict0r wrote:
>>     
>>> Srs.,
>>> gostaria de pedir a ajuda de vocês se possível.
>>> Preciso fazer o download de páginas HTML incluindo seus links
>>> internos, essa páginas estão em um servidor web de um switch da minha
>>> rede, portanto terei que autenticar para ter acesso.
>>> Pesquisei no cpan e encontrei o modulo WWW::Mechanize, que parece
>>> fazer o q preciso, incluindo autenticação e follow_link.
>>> Gostaria de saber se essa é a melhor opção nesse caso, pois escrevi um
>>> pequeno script só pra testar as funções do módulo e estou tendo
>>> problemas.
>>> ####
>>> #!/usr/bin/perl
>>>
>>>
>>> use WWW::Mechanize;
>>>
>>> my $mech = WWW::Mechanize->new();
>>> my $url = http://10.0.1.2;
>>> $mech->get( $url );
>>> my $res = $mech->status();
>>> print "$res\n";
>>> ####
>>>
>>> Retorno: 501
>>>
>>> Se tentar usar outros métodos diferentes do status(), o resultado é sempre:
>>>
>>> 501 Protocol scheme ' ' is not supported
>>>
>>> Está parecendo q falta algum parâmetro, alguém saberia dizer ?
>>>
>>> Obrigado.
>>> _______________________________________________
>>> Cascavel-pm mailing list
>>> Cascavel-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>>
>>>
>>>       
>> _______________________________________________
>> Cascavel-pm mailing list
>> Cascavel-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>
>>     
>
>
>   



Mais detalhes sobre a lista de discussão Cascavel-pm