Página 1 de 2

Cargar página HTML

NotaPublicado: 2011-06-06 23:24 @016
por marcoamoncada
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

Re: Cargar página HTML

NotaPublicado: 2011-06-06 23:56 @039
por ileiva
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.

Re: Cargar página HTML

NotaPublicado: 2011-06-07 06:22 @307
por marcoamoncada
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.002 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

Re: Cargar página HTML

NotaPublicado: 2011-06-07 07:57 @372
por explorer
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...

Re: Cargar página HTML

NotaPublicado: 2011-06-07 22:20 @972
por marcoamoncada
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.

Re: Cargar página HTML

NotaPublicado: 2011-06-08 07:10 @340
por explorer
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.001 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.

Re: Cargar página HTML

NotaPublicado: 2011-06-08 23:27 @018
por marcoamoncada
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.001 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.

Re: Cargar página HTML

NotaPublicado: 2011-06-09 01:31 @105
por explorer
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.001 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.

Re: Cargar página HTML

NotaPublicado: 2011-06-09 10:24 @475
por panterozo
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.001 segundos, usando GeSHi 1.0.8.4


Haz la prueba con Wireshark ;)

Re: Cargar página HTML

NotaPublicado: 2011-06-11 01:48 @116
por marcoamoncada
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.001 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.003 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.001 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.002 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.001 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.