Página 1 de 1

Hacer login en páginas HTTPS con PHP

NotaPublicado: 2010-10-26 12:00 @542
por adrolmar
Hola,
si me valido introduciendo usuario y contraseña en una página web se me muestra la página de usuario registrado, donde encuentro ciertos campos de interés (crédito, último acceso, etc). La cuestión es que trato de acceder a la página y obtener esos campos para tratarlos posteriormente en un script en PHP.

He probado mirando el URL que aparece en el campo 'action' en el formulario del código fuente y los campos que son enviados para la validación, para luego intentarlo con wget:
1) wget --save-cookies cookie --post-data ’user=usuario&password=contrasenya’ <url>
2) wget --load-cookies cookie -p <url/fichero/descargar>

o incluso con:
wget --save-cookies cookie --http-user=usuario --http-password=contrasenya <url/fichero/descargar>

Lo que me descarga el index.html.

También he estado mirando la documentación de PHP al respecto, incluso alguna vez tuve que montar una URL con diferentes campos GET para envío de SMS y cosas del estilo, pero esta vez me pierdo con el tema de la validación.

¿Alguna sugerencia?

Gracias por adelantado.

Re: Hacer login en páginas HTTPS con PHP

NotaPublicado: 2010-10-26 12:48 @575
por danimera
No entiendo bien lo que deseas hacer, pero ¿ya probaste con
file_get_contents()?

Es una función con la cual se obtiene el contenido que regresa el archivo, puede ser
Sintáxis: [ Descargar ] [ Ocultar ]
Using php Syntax Highlighting
  1. <?php
  2. $homepage = file_get_contents('http://www.example.com/file.php?action=algo');
  3. echo $homepage;
  4. ?>
  5.  
Coloreado en 0.032 segundos, usando GeSHi 1.0.8.4

Re: Hacer login en páginas HTTPS con PHP

NotaPublicado: 2010-10-26 15:01 @667
por adrolmar
Hola de nuevo. Sí probé pero obtengo lo mismo que con el wget antes mencionado.

Básicamente necesitas validarte para poder entrar en la página de usuario registrado o, incluso en otro tipo de páginas (como las de proveedores de servicios), para obtener ficheros con tarifas y cosas del estilo.

¡Gracias de todas formas!

Re: Hacer login en páginas HTTPS con PHP

NotaPublicado: 2010-10-26 17:52 @786
por danimera
Eso me parece a los WS (webservice)... bueno ni modos.

Una vez hice una función así en PHP para obtener información de un webservice en Perl que desarrollé, recuerdo que la función es :
con ella podía hasta pasar ficheros, xml, etc..

Sintáxis: [ Descargar ] [ Ocultar ]
Using php Syntax Highlighting
  1. public function sendData($direccion,$variables, $referido="") {
  2.                    global $_SERVER;
  3.                 //Desarmamos la URL definida en $dirección
  4.                    $infodeurl=parse_url($direccion);
  5.                 //En caso de que el parametro $referido no este definido, que coloque el documento actual
  6.                    if($referido=="") $referido=$_SERVER["SCRIPT_URI"];
  7.                 //Desglosamos las variables que se van a enviar
  8.                    foreach($variables as $key=>$valor)
  9.                         $valores[]=$key."=".urlencode($valor);
  10.                 //Convertimos las Variables desglosadas en una cadena de consulta
  11.                    $datos=implode("&",$valores);
  12.                 //En caso de que el puerto no esté definido en la url, utilizaremos por defecto el puerto 80
  13.                    if(!isset($infodeurl["port"]))  $infodeurl["port"]=80;
  14.                 //Creamos la Data que se enviara por medio del socket
  15.                    $retorno.="POST ".$infodeurl["path"]." HTTP/1.1\n";
  16.                    $retorno.="Host: ".$infodeurl["host"]."\n";
  17.                    $retorno.="Referer: $referer\n";
  18.                    $retorno.="Content-type: application/x-www-form-urlencoded\n";
  19.                    $retorno.="Content-length: ".strlen($datos)."\n";
  20.                    $retorno.="Connection: close\n";
  21.                    $retorno.="\n";
  22.                 //incluimos las variables en la data
  23.                    $retorno.=$datos."\n";
  24.                 //Conectamos al dominio especificado en la URL
  25.                    $fp = fsockopen($infodeurl["host"],$infodeurl["port"]);
  26.                 //le enviamos los datos
  27.                    fputs($fp, $retorno);
  28.                 //Sacamos el resultado linea a linea
  29.                    while(!feof($fp))
  30.                    {
  31.                           $resultado .= fgets($fp, 128);
  32.                    }
  33.                 //Cerramos la conexión con el servidor
  34.                    fclose($fp);
  35.                 //Y retornamos los datos.
  36.    return $resultado;
  37. }
Coloreado en 0.019 segundos, usando GeSHi 1.0.8.4

Re: Hacer login en páginas HTTPS con PHP

NotaPublicado: 2010-10-29 06:09 @298
por adrolmar
Hola de nuevo.

La cosa tiene que ser más sencilla... yo sólo quiero hacer login en una página pero en lugar de hacerlo con el navegador con la terminal de Linux o con PHP.

He continuado con el wget y de momento sólo consigo obtener la siguiente página a la validación si modifico fraudulenta y manualmente la cookie y le introduzco 'TRACKERID xxxxxxxxxx' (copiado desde la cookie generada al hacer la conexión mediante navegador). No sé el motivo por el que con el proceso:

1) wget --keep-session-cookies --save-cookies cookie.txt --post-data='user=usuario&pass=contrasenya' https://www.url.com/index.php?part=tplogin

2) wget --keep-session-cookies --save-cookies cookie.txt --load-cookies cookie.txt https://www.url.com/salida.php?form=profile

falla a menos que haga 'la trampa'.