• Publicidad

Cargar página HTML

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Cargar página HTML

Notapor marcoamoncada » 2011-06-06 23:24 @016

Estoy queriendo ver la página de HTML, y uso esta instrucción.

use URI::Url;

Cuando ejecuto el Perl me manda esto:

Can't locate URI/Url.pm in @INC (@INC contains:

Yo sé que está indicando que no está instalado, más he buscado muchas páginas, he instalado muchas cosas y no encuentro cómo instalarlo.

Me pueden decir dónde debo de buscar, en la página de CPAN, no hallo la respuesta.

Gracias
marcoamoncada
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 36
Registrado: 2011-06-06 22:41 @986

Publicidad

Re: Cargar página HTML

Notapor ileiva » 2011-06-06 23:56 @039

Hola marcoamoncada.

No entiendo qué quieres hacer. Lo que si sé es que el módulo no es URI::Url, sino que es URI::URL (con mayúsculas). Cambiando eso debería funcionar.

Saludos.
Avatar de Usuario
ileiva
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 30
Registrado: 2011-04-23 03:25 @184
Ubicación: Santiago, Chile

Re: Cargar página HTML

Notapor marcoamoncada » 2011-06-07 06:22 @307

Es que en la página que lo había visto estaba así.

Lo que quiero hacer es mandar unos parámetros por post, pero el problema es que la dirección está también con parámetros get, para la URL.

¿Cómo puedo resolver el problema?

Y la respuesta que manda en:
HTTP/1.1 302 Found

Cuando tecleo la dirección con parámetros para utilizarlos en get.

El código es este:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. # GET method form
  3. use LWP::Simple;
  4. use URI::URL;
  5.  
  6. $var1="hello there";
  7. $button="Send";
  8.  
  9. $url=url("http://www.loquesea.com/index.pnp");
  10. $url->query_form(var2=>'variable2');
  11. print $url,"\n";
  12.  
  13. # POST method form
  14. use HTTP::Request::Common qw(POST);
  15. use LWP::UserAgent;
  16.  
  17. $ua=LWP::UserAgent->new();
  18. my $req= POST $url, [var1=>$var1,button=>$button];
  19. $content=$ua->request($req)->as_string;
  20. print $content;
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4


Veo que sí funciona de un lado y del otro, pero con los dos no he logrado hacerlo. ¿Cómo me podrán ayudar, para este problema?

Gracias
marcoamoncada
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 36
Registrado: 2011-06-06 22:41 @986

Re: Cargar página HTML

Notapor explorer » 2011-06-07 07:57 @372

Aún no entiendo lo que quieres hacer.

¿Quieres mandar unos parámetros por POST, pero resulta que la página solo admite el método GET?

Falta información...
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12812
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cargar página HTML

Notapor marcoamoncada » 2011-06-07 22:20 @972

Te platicaré: entro a una página la cual, es en PHP.

Esta recibe los parámetros de dos formas al mismo tiempo (get, post).

Yo sé que al enviarlas por medio de get, es unicamente modificar la URL. Como sigue:

http://www.loquesea.com?var1='variable1'&texto='Hola, como estas'

Los comandos que mande lo hacen, porque, mandé a imprimir el primer texto.

Cuando ejecuto el segundo, también funciona, siempre y cuando no tenga los parámetros de get, porque, si los tiene manda el mensaje que ya comenté.

HTTP/1.1 302 Found

Yo quiero enviar los parámetros de get y post en un Perl, al mismo tiempo.
marcoamoncada
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 36
Registrado: 2011-06-06 22:41 @986

Re: Cargar página HTML

Notapor explorer » 2011-06-08 07:10 @340

A ver... no importa que la página esté en PHP o cualquier otro lenguaje. Todo de lo que hablamos es usando el protocolo HTTP.

Para realizar el POST, y el GET a la vez, te vale con hacer un POST, pero modificando la URL para que incluya a los parámetros pasados por GET.

Mira los ejemplos que hay en el documento perldoc lwpcook. Por ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use HTTP::Request::Common qw(POST);
  2. use LWP::UserAgent;
  3. my $ua = LWP::UserAgent->new;
  4.  
  5. my $req = POST 'http://www.perl.com/cgi-bin/BugGlimpse',
  6.           [ search => 'www', errors => 0 ];
  7.  
  8. print $ua->request($req)->as_string;
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4

Ahí solo tienes que modificar el URL que se envía a POST para agregar los otros parámetros.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12812
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cargar página HTML

Notapor marcoamoncada » 2011-06-08 23:27 @018

Lo que no se ha entendido es que, yo quiero hacer lo siguiente, lo cual no acepta Perl, es esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. use strict;
  4. use HTML::TreeBuilder;
  5. use HTML::FormatText;
  6. use LWP;
  7.  
  8. my $browser=LWP::UserAgent->new(agent=>'Perly v1');
  9. my $recult=$browser->post('http://www.loquesea.com/index.php?var='variable1'',
  10. [
  11.         'var1'=>'variable1',
  12.         'var2'=>'variable2',
  13.         'var3'=>'variable3'
  14. ]);
  15. exit;
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4


Aquí no se firma porque dice que la dirección no existe. Eso es lo que me refería cuando decía los parámetros get.
marcoamoncada
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 36
Registrado: 2011-06-06 22:41 @986

Re: Cargar página HTML

Notapor explorer » 2011-06-09 01:31 @105

Prueba con esta combinación de comillas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $recult=$browser->post("http://www.loquesea.com/index.php?var=variable1",
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Tenías puesto unas comillas simples dentro de otras comillas simples, y eso daba problemas.

Con las comillas dobles, puedes colocar las comillas simples. O sustituir 'variable1' por $variable1, que sería lo normal.

Con eso, ya estás creando un URL correcto.

Otra cosa es que el index.php sea capaz de leer los parámetros por GET y POST al mismo tiempo.

Yo hubiera incluido el var=variable1 del GET como una variable más en la parte del POST.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12812
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cargar página HTML

Notapor panterozo » 2011-06-09 10:24 @475

Para estas cosas, yo utilizo Wireshark para ver qué es lo que realmente estoy enviando. A veces hay sitios que envían un montón de cosas, que uno a simple vista no ve, pero Wireshark lo ve todo xD...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $ua = LWP::UserAgent->new;
  2. $ua->timeout(300);
  3. $ua->agent("Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100402 Fedora/2.0.4-1.fc12 SeaMonkey/2.0.4");
  4.  
  5. # Esto es para modificar el header, y enviar lo mismo que envia el navegador
  6. my $req = HTTP::Request->new(GET => 'la-url-que-buscas.php?datos=datos');
  7. $req->content_type('application/x-www-form-urlencoded');
  8. $req->header("User-Agent"=> "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Gecko/20100915 Ubuntu/9.10 FireFox/3.6.10");
  9. $req->header("Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
  10. $req->header("Accept-Language" => "es-cl,es;q=0.8,en-us;q=0.5,en;q=0.3");
  11. $req->header("Accept-Encoding" => "gzip,deflate");
  12. $req->header("Accept-Charset" => "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
  13. $req->header("Keep-Alive" => "115");
  14. $req->header("Connection" => "keep-alive");
  15. $req->header("Accept-Charset" => "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
  16. my $res = $ua->request($req);
  17.  
  18. print $res->content;
  19.  
Coloreado en 0.008 segundos, usando GeSHi 1.0.8.4


Haz la prueba con Wireshark ;)
panterozo
Perlero Frecuente
Perlero Frecuente
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Re: Cargar página HTML

Notapor marcoamoncada » 2011-06-11 01:48 @116

Tengo tres problemas que no puedo resolver. Platicaré la historia.

Mando éste a correr en terminal perl xxxxxxx.pl. Este es el fuente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. # GET method form
  3. use HTML::TreeBuilder;
  4. use HTML::FormatText;
  5. use LWP::Simple;
  6. use URI::URL;
  7.  
  8. $url=url("http://www.loquesea.com/index.php");
  9. $url->query_form(acciones='agdrfe');
  10. #$content=get($url);
  11. #print $content;
  12.  
  13. print "Url        :",$url,"\n";
  14.  
  15. # POST method form
  16. use HTTP::Request::Common qw(POST);
  17. use LWP::UserAgent;
  18.  
  19. $ua=LWP::UserAgent->new();
  20. my $req= POST $url, [user=>'xxxxxx',password=>'xxxxxxxx'];
  21. $content=$ua->request($req)->as_string;
  22. print $content;
  23.  
  24. my $inicio=index($content, 'Location') + 10;
  25. my $fin=index($content, 'amover_si_fuerz=2') - $inicio + 17;
  26. print "inicio: $inicio fin: $fin \n";
  27. my $fragmento = substr $content, $inicio, $fin;
  28. $fragment=get($fragmento);
  29. print "fragment: <$fragmento>\n";
  30. print $fragment;
Coloreado en 0.008 segundos, usando GeSHi 1.0.8.4


Me da este resultado
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ perl xxxxxxxx.pl
  2. Url        :http://www.loquesea.com/index.php?variable=variable1
  3.  
  4. HTTP/1.1 302 Found
  5. Connection: close
  6. Date: Sat, 11 Jun 2011 06:00:56 GMT
  7. Location: http://subdominio.loquesea.com/login.php?sid=ffdd45ac34ef&secret=2&amover_si_fuerz=2
  8. Server: lighttpd/1.4.28
  9. Content-Length: 0
  10. Content-Type: text/html; charset=utf-8
  11. Client-Date: Sat, 11 Jun 2011 06:00:55 GMT
  12. Client-Peer: 212.48.106.167:80
  13. Client-Response-Num: 1
  14. Set-Cookie: server_id=es10; expires=Mon, 11-Jul-2011 06:00:54 GMT; httponly
  15. X-Powered-By: PHP/5.3.3-7
  16.  
  17. inicio: 83 fin: 84
  18. fragment: <http://subdominio.loquesea.com/login.php?sid=ffdd45ac34ef&secret=2&amover_si_fuerz=2>
  19.         <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  20.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  21. <html xmlns="http://www.w3.org/1999/xhtml">
  22. <head>
  23.         <title></title>
  24.         <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  25.  
  26.         </head>
  27.  
  28. <body id="ds_body" class="header" >
  29. <table class="content-border" style="margin:auto; margin-top: 25px; border-collapse: collapse; width: 100%">
  30.         <h2>Sesi�n caducada</h2>
  31.  
  32.  
Coloreado en 0.010 segundos, usando GeSHi 1.0.8.4


Cuando ejecuto desde la terminal la dirección que me presenta puedo entrar, ya está firmado, pero cuando obtengo la dirección de la forma que busca, desde el resultado por programa, la sesión dice que ya expiró.

Cuando mando a ejecutar este fuente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use HTTP::Request::Common qw(POST);
  3. use LWP::UserAgent;
  4. my $ua = LWP::UserAgent->new;
  5. my $req = POST "http://www.loquesea.com/index.php&acciones='agdrfe'",
  6.         [
  7.                 user=>'xxxxxxx',
  8.                 password=>'xxxxxxx'
  9.         ];
  10. print $ua->request($req)->as_string;
  11.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


Con los comentario de que la dirección la pusiera en comillas me responde esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ perl xxxxxx.pl
  2. HTTP/1.1 404 Not Found
  3. Connection: close
  4. Date: Sat, 11 Jun 2011 06:27:30 GMT
  5. Server: lighttpd/1.4.28
  6. Content-Length: 345
  7. Content-Type: text/html
  8. Client-Date: Sat, 11 Jun 2011 06:27:29 GMT
  9. Client-Peer: 212.48.106.167:80
  10. Client-Response-Num: 1
  11. Title: 404 - Not Found
  12.  
  13. <?xml version="1.0" encoding="iso-8859-1"?>
  14. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  15.          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  16. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  17.  <head>
  18.   <title>404 - Not Found</title>
  19.  </head>
  20.  <body>
  21.   <h1>404 - Not Found</h1>
  22.  </body>
  23. </html>
  24.  
  25.  
Coloreado en 0.008 segundos, usando GeSHi 1.0.8.4


O sea, bien claro, dice que la dirección no existe.

Cuando mando a ejecución este otro
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use HTML::TreeBuilder;
  4. use HTML::FormatText;
  5. use LWP;
  6. my $browser=LWP::UserAgent->new(agent=>'Perly v1');
  7. my $recult=$browser->post("http://www.loquesea.com/index.php&acciones='agdrfe'",
  8.         [
  9.                 user=>'xxxxxxxx',
  10.                 password=>'xxxxxxxx'
  11.         ]);
  12. $recult->header("Connection" => "keep-alive");
  13. use LWP::Simple;
  14. print getstore("http://subdominio.loquesea.com/garbon.php?hotelws=1240685","/tmp/pantalla");
  15.  
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4


Yo estoy asumiendo que se firmó, pero cuando entro a alguna de la dirección me dice que la sesión caducó.

¿Cómo puedo obtener el resultado en HTML, de cuando se firmó, y cómo puedo mantener la sesión activa?

¿Habrá quien me ayude a solucionar y poder efectuar cambio tanto en batch como en línea, sobre las mismas páginas? Están en un servidor que no puedo cambiar, pero el trabajo de llenar datos, se encuentra casi resuelto.

Gracias por proporcionar su ayuda. Lo que hasta estos momentos se ha logrado, y de lo que se puede lograr.
marcoamoncada
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 36
Registrado: 2011-06-06 22:41 @986

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados