Vilarejo PK2P
Bem-vindo ao fórum Vilarejo PK2P! O fórum oficial do canal Press Key to Play do Youtube!

Participe do fórum, é rápido e fácil

Vilarejo PK2P
Bem-vindo ao fórum Vilarejo PK2P! O fórum oficial do canal Press Key to Play do Youtube!
Vilarejo PK2P
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Grupo para reunir as pessoas que acompanham os vídeos no canal Press Key to Play e discutir os assuntos abrangidos pelo Blog PK2P.

Últimos assuntos

» RPG de Mesa: A fronteira Volume 4: O Castelo Owlrick. (D&D5e)
por Ariano 10/12/2020, 23:18

» [tutorial] hash em C/C++ com openssl
por kodo no kami 21/9/2020, 13:37

» ping lista grafico
por kodo no kami 24/7/2020, 07:53

» [Discord] Campanha de RPG D-cyber
por Jonatan15 17/7/2020, 11:11

» [tradução] 1869 (msdos)
por kodo no kami 26/6/2020, 13:43

» [source] exemplo filtro mediano
por kodo no kami 1/6/2020, 00:24

» [tutorial] criar filtro nas imagens (python)
por kodo no kami 22/5/2020, 19:29

» Wireless IDS Sagemcom
por kodo no kami 22/4/2020, 23:50

» [source] detectar dispositivos no wifi (sagemcom)
por kodo no kami 9/3/2020, 20:25

» [tutorial] wla assemblador (65xx, 68xx, z80, 8008, 8080 e huc6280)
por kodo no kami 2/2/2020, 16:42


Você não está conectado. Conecte-se ou registre-se

[tutorial] modulo WWW::Mechanize

Ir para baixo  Mensagem [Página 1 de 1]

kodo no kami

kodo no kami

E ae galera beleza? nesse tutorial vamos brincar com o modulo WWW::Mechanize do perl, esse modulo nos permite fazer determinadas requisições em sites, manipular parametros e metodos passados, manipular formularios daquela pagina, manipular os cookies e headers da requisição e etc. Com esse modulo é bastante simples o desenvolvimento de bots, scripts voltados a coleta ou dump de informações em sites, ou simplesmente automatizar um determinado envio de formulario pela web. Normalmente o modulo não vem instalado por padrão, uma das formas de instalar ele é utilizando o CPAN

Código:
sudo perl -MCPAN -e "install WWW::Mechanize"

com o modulo instalado basta a gente declarar ele no nosso script para começar

Código:
#!/usr/bin/perl

use WWW::Mechanize;

agora podemos instanciar um objeto desse modulo, no caso WWW::Mechanize

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;

com o objeto instanciado, é possivel fazer uma simples requisição GET em um determinado site usando o metodo get e passando a url como argumeto

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("http://eofclub.in/");

para exibir a resposta usamos o metodo content

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("http://eofclub.in/");
print $kodo->content;

[tutorial] modulo WWW::Mechanize Jj1CIxA

usando regex podemos recortar trechos especificos e montar a saida como a gente desejar

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("https://steamcommunity.com/id/$ARGV[0]");

my @mensagem = $kodo->content =~ /meta name="Description" content="(.*?)"/si;
my @amigos = $kodo->content =~ /friendBlockContent">(.*?)<br>/gis;
my @online = $kodo->content =~  />Last Online (.*?)</si;

print "[--- STEAM ---]\nsteam id: $ARGV[0]\n" .
   "online: $online[0]\n\n" .
   "[--- Mensagem Perfil ---] \n$mensagem[0]" .
   "\n\n[--- Amigos ---] \n";
foreach my $a(@amigos){
   $a =~ s/\n//gs;
   $a =~ s/\x09//gs;
   print $a . "\n";
}

[tutorial] modulo WWW::Mechanize UXatz0H

é possivel retornar o codigo de status usando o metodo status (passamos o autocheck para o objeto para continuar executando mesmo com o erro)

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize(autocheck=>0);
$kodo->get("http://google.com..br/");
print "codigo: " . $kodo->status . "\n";

if($kodo->status == 200){
   print "tudo sussa!!! \n";
}
else{
   print "vish deu ruim \n";
}

com o metodo uri retornamos a url atual

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize(autocheck=>0);
$kodo->get("https://dolarhoje.com/bitcoin-hoje/");
print $kodo->uri . "\n";

com o metodo links é possivel retornar todos os links daquela pagina como uma array, podemos utilizar o parametro url para especificar as urls dos links e o parametro text para os textos naqueles links

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("https://pt.wikipedia.org/wiki/Perl");

my @links = $kodo->links;

foreach my $l(@links){
   print $l->text . "\n";
   print $l->url . "\n";
   print "=========================\n";
}

[tutorial] modulo WWW::Mechanize KpCsFlT

o metodo images retornamos as imagens da pagina

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("https://www.facebook.com/forumeof");

my @img = $kodo->images;

foreach my $i(@img){
   print $i->url . "\n\n";
}

para retornar informações dos formularios naquela pagina usamos o metodo forms, podemos usar alguns parametros como o action para onde sera redirecionado aquele formulario, o method sendo o metodo usado

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("https://youtube.com");

my @formulario = $kodo->forms;

foreach my $f(@formulario){
   print $f->action . "\n";
   print $f->method . "\n";
   print "------------------\n";
}

podemos usar o metodo inputs no exemplo anterior para retornar todos os inputs de cada formulario, com o paremetro type retornamos o tipo de input (text, password, hidden, button e etc), com o parametro name retornamos o name que sera passado, com o parametro text o texto no input, com o parametro value o valor pre-definido dele

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("https://youtube.com");

my @formulario = $kodo->forms;
my @inputs;
my $i;

foreach my $f(@formulario){
   print $f->method . ": " . $f->action . "\n";
   print  . "\n\n";
   @inputs = $f->inputs;
   
   foreach $i(@inputs){
      print "----------\n";
      print "type: " . $i->type . "\n";
      print "name: " . $i->name . "\n";
      print "text: " . $i->name . "\n";
      print "value: " . $i->value . "\n";
      print "----------\n";
   }
   print "\n===========================\n";
}

[tutorial] modulo WWW::Mechanize QZPV4KH

o submit_form é um dos metodos para preencher o formulario e depois enviar ele, para a gente usar esse metodo fazemos o request na pagina que tem esse formulario e depois usamos o metodo passando os parametros, sendo o form_number seguido da ordem daquele formulario e fields com os campos do formulario (no caso os inputs)

Código:

#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("https://youtube.com");

$kodo->submit_form(
   form_number => 2,
   fields => {
      search_query => "kodo no kami"
   }
);

print $kodo->uri . "\n";

o exemplo anterior tambem seria possivel via get direto pela propria url

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("https://www.youtube.com/results?search_query=kodo+no+kami");

tambem podemos usar o submit_form para enviar via POST ou usar o proprio metodo post (o metodo post é bem interessante a gente aprender a fazer ja que boa parte dos logins são feitos por ele)

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;

#autentica no meu roteador
$kodo->post("http://192.168.1.254/login.cgi",[username=>"admin",password=>"minhawaifu","submit.htm?login.htm"=>"send"]);

#pula para pagina principal depois de logado
$kodo->get("index.htm")
print $kodo->content;

podemos salvar a pagina normalmente abrindo um arquivo e escrevendo a requisição nele (podemos salvar qualquer tipo de arquivo não apenas as pagias html)

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("https://eofclub.in/download/EOFbookAsm.pdf");

open(KARQ,">asm.pdf");
print KARQ $kodo->content;
close(KARQ);

uma forma mais simples de salvar é usando o metodo save_content

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->get("https://eofclub.in/download/EOFbookAsm.pdf");
$kodo->save_content("asm.pdf");

usando o metodo agent podemos especificar um User-Agent

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->agent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36");
$kodo->get("https://google.com.br");

é possivel utilizar proxy bastando atribuir ele ao metodo proxy

Código:
#!/usr/bin/perl

use WWW::Mechanize;

my $kodo = new WWW::Mechanize;
$kodo->proxy(["http","https"],"http://108.61.186.207:8080");
$kodo->get("http://ip-api.com/json/");
print $kodo->content . "\n";

[tutorial] modulo WWW::Mechanize KwYgYQK

bom galera isso é apenas um pequeno tutorial desse grande modulo, existem muitas outras funcionalidade que podem ser feitas com esse modulo \o

by kodo no kami

https://eofclub.in/forum

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos