Usando PHP/CURL

Es una librería que proporciona la interfaz para utilizar CURL. CURL permite la comunicación en diferentes protocolos como TTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET o FILE.

El uso principal que le doy es para descargar el código fuente de una web para poder analizar su contenido y procesar la información que me interesa. Por ejemplo se puede utilizar como escaner de links y direcciones de correo de un sitio web.

El código más básico para obtener el código fuente de una URL es:

<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,
    'http://www.unaweb.com/paginaaescanear.htm');
curl_setopt($curl, CURLOPT_HEADER, 0); //no mostrar cabeceras
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //no mostrar en pantalla
$data = curl_exec($curl); //descargar página
curl_close($curl);
?>

Donde en la variable $data almacenamos el código fuente de la página que le decimos.

Si hay un login para entrar y necesitamos especificar usuario y contraseña, mandamos las variables por el método que utilice el formulario.
El script de validación tomará las variables que le pasamos y nos redirecciona a la página restringida igual que si hubiésemos escrito los valores en el formulario.
Mediante la opción curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1) conseguimos que se redireccione y no se quede parado en el script de login.

<?php
$curl = curl_init();
$user = "usuario";
$pass = "clave";
$action = "Entrar";
$postfields = "user=".$user."&pass=".$pass."&action=".$action;
curl_setopt($curl, CURLOPT_URL,
	'http://www.unaweb.com/login.php');
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1); //por metodo post
//establece variables post
curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
 //sigue los header("Location:")
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($curl);
curl_close($curl);
?>

Este código no muestra como escanear un website completo. Eso lo haré en otro post pero dejo una introducción.
Se necesita utilizar una base de datos que guarde las urls a escanear y si estas han sido visitadas ya.
En cada página escaneada, se extraen los enlaces y se almacenan en la base de datos si no están previamente especificando que todavía no han sido visitadas mediante un booleano por ejemplo.
Tomar la primera página sin visitar y leerla. Tomar sus enlaces y guardarlos en la base de datos.
Así hasta que no queden enlaces sin visitar.

Sin categoría

Deja una respuesta