source_extract(), extrae el código fuente aun que tengan verificación por cookie
Casi todos los foros, webs 2.0 y demás paginas actuales tienen registros. Y muchas de estas webs solo permiten el acceso o lectura de los datos a partir de estos registros, por esto hoy os dejo esta función.
La función source_extract() es una encapsulación de la función curl, la cual permite enviar y recibir contenido por http, ftp.... en nuestro caso solo tendremos que indicarle 3 parámetros.
El primero es la dirección de la web a extraer, el siguiente es una dirección en el servidor con un nombre de archivo en el que se puedan guardar las cookies necesarias para almacenar los datos recibidos de la web consultada, y el tercero son datos en POST a enviar.
Utilizando esta función podremos mantener una cookie a lo largo de varias consultas como si de un navegador se tratara, de echo la función envía datos emulando ser un navegador firefox en un windows NT (algunas web detectan si es un navegador o no el que accede para permitir el envío de datos). De esta manera podemos acceder a una web, ingresar nuestros datos y realizar tareas en su interior de manera natural y automatizada.
un ejemplo rápido:
-
$codigo = source_extract('http://www.ejemplo.com/wp-admin', './cookie.txt');
-
-
//codigo ahora mostraría el panel para introducir los datos
-
$user = 'paquito84';
-
$pass = 'sEcReTo_123';
-
$post = 'log='.$user.'&pwd='.$pass;
-
$codigo = source_extract('http://www.ejemplo.com/wp-admin', './cookie.txt', $pos);
-
//en esta consulta en $codigo nos mostrará el panel de administración
-
-
$codigo = source_extract('http://www.ejemplo.com/wp-admin/post-new.php', './cookie.txt', $pos);
-
//y ahora si q podríamos inclusive ver la pagina de nuevo post
y el código completo..
-
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;
-
}
El ejemplo anterior es un código para ver como se podría componer una consulta con datos ficticios, pero prometido que para el próximo post traigo algo más interesante y real...
[...] retos se amplían y source_extract() necesitaba un nuevo enfoque para madurar y ser mas versátil, de manera que, frente a la anterior [...]
Esto me va a ser muy útil… gracias tito antares