Como leer código fuente de pagina web que requiera cookie activa o user y pass?

Iniciado por sk1pp3r, 19 Octubre 2012, 18:27 PM

0 Miembros y 1 Visitante están viendo este tema.

sk1pp3r

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:
<?php
$mi_url
="http://www.yahoo.com";
$fofopen("$mi_url","r") or die ("No se ha encontrado la pagina.");
$mi_cadena null;

while (!feof($fo)) {
$mi_cadena .= fgets($fo4096); 
}
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:
<?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 ($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt ($chCURLOPT_RETURNTRANSFER1);
    
curl_setopt ($chCURLOPT_COOKIEJAR$cookie);
    
curl_setopt ($chCURLOPT_COOKIEFILE$cookie);
    
curl_setopt ($chCURLOPT_USERAGENT$user_agent);
    if(
$postdata!='')   curl_setopt ($chCURLOPT_POSTFIELDS$postdata);
    
curl_setopt ($chCURLOPT_POST1);
    
$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

jhonatanAsm

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.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

sk1pp3r

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...


<?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 ($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt ($chCURLOPT_RETURNTRANSFER1);
    
curl_setopt ($chCURLOPT_COOKIEJAR$cookie);
    
curl_setopt ($chCURLOPT_COOKIEFILE$cookie);
    
curl_setopt ($chCURLOPT_USERAGENT$user_agent);
    if(
$postdata!='')   curl_setopt ($chCURLOPT_POSTFIELDS$postdata);
    
curl_setopt ($chCURLOPT_POST1);
    
$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
$fofopen("$$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($fo4096); 
}
//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