Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ¨°o.O (ßa¢Kg|姧) O.o° en 5 Julio 2010, 20:40 pm



Título: Perl Regular Expressions (Regex)
Publicado por: ¨°o.O (ßa¢Kg|姧) O.o° en 5 Julio 2010, 20:40 pm
Hola :)

Estoy haciendo un script en Perl para que haga un HTTP Post en una url, y cuando me logeo quiero cojer un trozo de texto y retocarlo para que quede concorde y no salgan todas las etiquetas del html etc..

El código que quiero cojer es este:

Código
  1.     <td class="tm"><b>AQUI QUIERO COJER ESTO1</b><br>
  2. Welcome back to your members area.<br><br>
  3. Your username here is <b>AQUI QUIERO COJER ESTO2</b>.<br>
  4.  
  5. <script language="javascript" type="text/javascript">

Por supuesto que es un trozo de código del DOM de la página.
En todo caso quiero cojer lo que hay dentro del AQUI QUIERO COJER ESTO1 y del AQUI QUIERO COJER ESTO2

PD: Llevo aquí 2h y no lo consigo :S

Aquí pongo todo mi script:

Código
  1. #!/usr/bin/perl
  2. #=======================================================================
  3. #
  4. #
  5. #  DESCRIPCIÓN:
  6. #
  7. #      OPTIONS:  ---
  8. #         BUGS:  ---
  9. #        NOTAS:  ---
  10. #      VERSION:  1.0
  11. #     CREADO:  Lunes 5 de julio del 2010
  12. #    REVISIÓN:  1
  13. #=======================================================================
  14.  
  15. use warnings;
  16. use strict;
  17. use WWW::Mechanize;
  18.  
  19.  
  20.    my $Explorador = WWW::Mechanize->new( agent => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624' ); #Constructor del explorador con un UserAgent falso.
  21.    $Explorador->get("file://home/alejandro/enter.php.html"); #Se procede a acceder a la dirección url para hacer el HTTP Post
  22.    $Explorador->field('username','Miuser'); # Busca el campo username y pone el usuario
  23.    $Explorador->field('password','Mipass');  # Busca el campo password y pone la contraseña
  24.    $Explorador->submit(); # Hace el HTTP POST
  25.  
  26.    print $Explorador->content();
  27.  
  28.    if($Explorador->content() =~ m"\s/<td class=\"tm\"><b>")
  29.       {
  30.  
  31.       }
  32.    else
  33.    {
  34.      die "Error: No se puede encontrar el nombre.\n¿Ha provado que su usuario y contraseña sean correctos?";
  35.     }



Título: Re: Perl Regular Expressions (Regex)
Publicado por: ~ Yoya ~ en 5 Julio 2010, 21:43 pm
Bien, te doy una ayudita...

Código
  1. #!/usr/bin/perl -w
  2.  
  3. $cont = '     <td class="tm"><b>AQUI QUIERO COJER ESTO1</b><br>
  4. Welcome back to your members area.<br><br>
  5. Your username here is <b>AQUI QUIERO COJER ESTO2</b>.<br>
  6.  
  7. <script language="javascript" type="text/javascript">';
  8.  
  9. if($cont =~ m/m"><b>([\w\s]*?)<\//i){
  10. print $1, "\n";
  11. }
  12. if($cont =~ m/is\s<b>([\w\s]*?)</i){
  13. print $1, "\n";
  14. }
  15.  

Salida:
Código:
yoya@yoya-desktop:~/Escritorio$ perl a.pl
AQUI QUIERO COJER ESTO1
AQUI QUIERO COJER ESTO2

Osea, en vez de limpiar el texto, solo extraigo la parte que me interesa...

Si se lo adaptara, seria mas o meno asi:

Código
  1. #!/usr/bin/perl
  2. #=======================================================================
  3. #
  4. #
  5. #  DESCRIPCIÓN:
  6. #
  7. #      OPTIONS:  ---
  8. #         BUGS:  ---
  9. #        NOTAS:  ---
  10. #      VERSION:  1.0
  11. #     CREADO:  Lunes 5 de julio del 2010
  12. #    REVISIÓN:  1
  13. #=======================================================================
  14.  
  15. use warnings;
  16. use strict;
  17. use WWW::Mechanize;
  18.  
  19.  
  20.    my $Explorador = WWW::Mechanize->new( agent => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624' ); #Constructor del explorador con un UserAgent falso.
  21.    $Explorador->get("file://home/alejandro/enter.php.html"); #Se procede a acceder a la dirección url para hacer el HTTP Post
  22.    $Explorador->field('username','Miuser'); # Busca el campo username y pone el usuario
  23.    $Explorador->field('password','Mipass');  # Busca el campo password y pone la contraseña
  24.    $Explorador->submit(); # Hace el HTTP POST
  25.  
  26.  
  27.  
  28. if($Explorador =~ m/m"><b>([\w\s]*?)<\//i){
  29. print $1, "\n";
  30. }
  31. if($Explorador =~ m/is\s<b>([\w\s]*?)</i){
  32. print $1, "\n";
  33. }