Ene1

Script para bajar imágenes 'hidden'

Javi Vicente programación
'; }?>

El otro día me pidieron descargar un número elevado de imágenes -unas 200- que aparecían en una página web de la universidad. No hubiese sido nada transcendental si las imágenes sólo se mostraran cuando se situara el puntero del ratón sobre el nombre de la imagen. Claro, al ir a situarse con el puntero sobre la imagen, ésta desaparecía porque tenía la propiedad visibility a *hidden*.

Mirar el código fuente era fundamental, pero tampoco pretendía estar buscando y copiando la ruta de cada imagen para acceder a ella por el navegador. Lo primero que pensé fue utilizar wget desde la consola del servidor, pero no era suficiente, ya que estaba deshabilitada la descarga (baneado) a través del comando en las políticas de Apache en el ficehro .htaccess, a lo que se llama Throttling Apache.

Me puse a buscar como loco y encontré la solución, utilizar la opción que oculta el tipo de navegador añadiendo -U NoSuchBrowser/1.0, por lo que ya tenía un paso. Claro, ir buscando por el código fuente las imágenes seguía siendo una tarea de chinos, por lo que decidí echar mano al código PHP. Mi idea era escribir en una variable todas las imágenes que había en el código fuente en la etiqueta , por lo que gracias a aNieto encontré el comando preg_match_all, que realiza una comparación global con una expresión regular, es decir, va buscando en el código fuente un patrón casino pa natet y si lo encuentra, guarda el contenido especificado en un array, que más tarde se muestra con un bucle. El código sería algo así:


$cad_buscar = '/ echo "wget -U NoSuchBrowser/1.0 ruta" . $val[1] . ".jpg
";
}

Ahora ya todo era diferente. Me hice un pequeño script en bash para que únicamente tuviera que leer las imágenes de un archivo, las comprimiera en otro archivo, cuyo nombre se le pasaba por parámetro y eliminara las imágenes del directorio. De esta manera lo que parecía un trabajo de chinos, lo deje en uno de *vagos*, con el consiguiente conocimiento de algunos comandos que no había utilizado.

zp8497586rq