Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: sk1pp3r en 19 Octubre 2012, 18:27 pm



Título: Como leer código fuente de pagina web que requiera cookie activa o user y pass?
Publicado por: sk1pp3r en 19 Octubre 2012, 18:27 pm
Que tal, lo que busco hacer es que a través de una función PHP leer el código fuente de un sitio externo.

Esto lo hago en mi Win7 con WAMP 2.2

Hasta ahora lo puedo lograr en sitios que NO REQUIEREN TENER ACTIVAS LAS COOKIES.
Con este código:
Código:
<?php
$mi_url="http://www.yahoo.com";
$fo= fopen("$mi_url","r") or die ("No se ha encontrado la pagina.");
$mi_cadena = null;

while (!feof($fo)) {
$mi_cadena .= fgets($fo, 4096);
}
fclose ($fo);
print("<textarea name='mi_area' cols='100' rows='20'>$mi_cadena</textarea>");

?>

También en sitios QUE NO REQUIERAN TENER ACTIVAS LAS COOKIES Y QUE USEN SSL (https). Para esto tuve que instalar OpenSSL.

Ahora si lo intento en sitios QUE SI REQUIEREN TENER LAS COOKIES ACTIVAS, no lo puedo lograr. Me aparece algo como: Este sitio requiere las cookies del navegador activadas. Y el codigo fuente que me puede leer es solo el de la pantalla de LOGIN.

He intentado con este código pero no me resulta:
Código:
<?php

function source_extract($file, $cookie, $postdata = ''){
    $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9';
    $ch = curl_init($file);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
    curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
    if($postdata!='')   curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt ($ch, CURLOPT_POST, 1);
    $file_content = curl_exec ($ch);
    curl_close($ch);
    return $file_content;
}

$codigo = source_extract('http://www.misitio.com/sección/pag?5454etcetc', './cookie.txt');

$user = 'user';
$pass = 'password';
$post = 'log='.$user.'&pwd='.$pass;
$codigo = source_extract('http://www.misitio.com/sección/pag?5454etcetc', './cookie.txt', $post);
$codigo = source_extract('http://www.misitio.com/sección/pag?5454etcetc', './cookie.txt', $post);
?>

Este código lo encontré por allí pero no se si sea obsoleto, o esta mal implementado pero no me funciona.
Me manda este error:
Fatal error: Call to undefined function curl_init() in C:\wamp\www\Read\read_cookie.php on line 5
Call Stack
#   Time   Memory   Function   Location
1   0.0008   377240   {main}( )   ..\read_cookie.php:0
2   0.0008   377384   source_extract( )   ..\read_cookie.php:18


Título: Re: Como leer código fuente de pagina web que requiera cookie activa o user y pass?
Publicado por: jhonatanAsm en 19 Octubre 2012, 18:39 pm
mmm, pos curl_init() y curl_setopt() me parece que son metodos de la libreria curl de php.

de ser así tendrías que instalarte la librería curl en tu pc.

salu2.


Título: Re: Como leer código fuente de pagina web que requiera cookie activa o user y pass?
Publicado por: sk1pp3r en 19 Octubre 2012, 20:06 pm
Vientos, ya active el CURL desde php.ini. Solo era cuestión de activar esas librerías en mi WAMP.

Ahora el error que me manda es el siguiente: (En Gmail y en otra pagina provada)
Moved Temporarily

The document has moved here.

Según yo entiendo que primero tendría que dar la instrucción de activar cookies, luego meter datos de USER Y PASS, y ya después que este LOGEADO, leer el código fuente. Todo esto a traves del código que tengo...


Código:
<?php
$MiURL = "http://www.taringa.net";
//Función que hará la consulta de la página web.
function source_extract($file, $cookie, $postdata = ''){
//Le hacemos creer al server de dicha página que nos estamos conectando con este navegador y desde este OS.
    $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9';
//No se para que sea todo esto...
    $ch = curl_init($file);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
    curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
    if($postdata!='')   curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt ($ch, CURLOPT_POST, 1);
    $file_content = curl_exec ($ch);
    curl_close($ch);
    return $file_content;
}
//Función para LEER el código Fuente
function LeeCodigoFuente($MiURL) {
//Comprobamos existencia de URL
$fo= fopen("$$MiURL","r") or die ("No se ha encontrado la pagina.");
$mi_cadena = null;
//Mientras no lleguemos al final del código fuente, seguimos leyendo de ah 4096 bits??
while (!feof($fo)) {
$mi_cadena .= fgets($fo, 4096);
}
//Cerramos consulta...
fclose ($fo);
print("<textarea name='mi_area' cols='100' rows='20'>$mi_cadena</textarea>");
}

//Tampoco se que hace exactamente esta línea...
$codigo = source_extract('http://www.taringa.net', './cookie.txt');
//Definimos datos a ingresar en dicha web.
$user = 'sharepass12@yahoo.com.mx';
$pass = 'U2z4g98';
//Los unificamos...
$post = 'log='.$user.'&pwd='.$pass;
//Nos logueamos en la web con esto????
$codigo = source_extract('http://www.taringa.net', './cookie.txt', $post);
print_r($codigo);

//Ahora leemos código fuente ya estando logueados y con cookies activas ???
echo LeeCodigoFuente();
?>

En taringa me muestra este error:
( ! ) Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\Read\read_cookie.php on line 12
Call Stack
#   Time   Memory   Function   Location
1   0.0009   379912   {main}( )   ..\read_cookie.php:0
2   0.0009   380120   source_extract( )   ..\read_cookie.php:29



Como sabrán no tengo casi idea de PHP.
Espero una ayuda :D
Un saludo y gracias