Hacking para arrancar: Técnicas para web scrapping

¿Alguna vez quisiste aprender a hackear? Hoy te enseñamos algunos conceptos básicos de cómo hacerlo.

Las técnicas hack/hackers son aquellas que nos sirven para recolectar información, trabajar con arqueología y proceso de datos. Hoy es muy común escuchar Hack/hacker Madrid o Hack/hacker Buenos Aires; estos eventos son reuniones de hackers y periodistas, donde comparten técnicas y métodos de investigación.
Hoy vamos a ingresar a ese mundo y a conocer algunos de sus términos y por qué no algunas de sus técnicas más básicas.

La técnica más común es el web scraping. Básicamente nos estamos refiriendo a la utilización de software extractivo para obtener información de sitios web.
Esto se hace normalmente utilizando «bots», o sea programitas que simulan la navegación humana en la web. Clonan el cliqueo, la lectura y el copy-paste automatizando la tarea de búsqueda y recolección de datos, inclusive cuando nosotras dormimos.

«Web Scraping es el proceso de recopilar información de forma automática de la Web. Es un campo con desarrollos activos, compartiendo un propósito en común con la visión de la web semántica. Utiliza soluciones prácticas basadas en tecnologías existentes que son comúnmente ad hoc. Existen distintos niveles de automatización que las existentes tecnologías de Web Scraping pueden brindar:

Copiar-y-Pegar humano: Algunas veces incluso las mejores técnicas de Web Scraping no pueden reemplazar el examen manual de un humano, y a veces esta puede ser la única vía de solución cuando el sitio que tenemos en mente pone ciertas barreras para prevenir que se creen softwares para realizar tareas automáticas en este.

Uso de expresiones regulares: Una posible vía para extraer información de páginas webs pueden ser las expresiones regulares, aunque comúnmente no se recomienda utilizarlas para parsear el formatoHTML.

Protocolo HTTP: Páginas webs estáticas y dinámicas pueden ser obtenidas haciendo peticiones HTTP al servidor remoto utilizando sockets, etc.
Algoritmos de minería de datos: Muchos sitios webs tienen grandes colecciones de páginas generadas dinámicamente a partir de una base de datos. Datos de la misma categoría aparecen usualmente en páginas similares mediante un script o una plantilla. En la minería de datos, un programa detecta estas plantillas en un contexto específico y extrae su contenido.

Parsers de HTML: Algunos lenguajes, como XQuery y HTQL pueden ser utilizados para parsear documentos, recuperar y transformar el contenido de documentos HTML.

Aplicaciones para Web Scraping: Existen muchas aplicaciones disponibles que pueden ser utilizadas para personalizar soluciones de Web Scraping. Estas aplicaciones pudieran reconocer automáticamente la estructura de cierta página o brindar una interfaz a la usuaria donde este pudiera seleccionar los campos que son de interés dentro del documento. De esta forma no es necesario escribir manualmente código para realizar estas tareas.

Reconocimiento de información semántica: Las páginas que son analizadas podrían incluir metadatos o cierta información semántica como anotaciones o comentarios, los cuales pueden ser usados comúnmente. Si estas anotaciones están en las mismas páginas, como sucede con los Microformatos, estas podrían ser de utilidad cuando parseamos el DOM del documento. En otro caso, las anotaciones, organizadas en una capa semántica, son almacenadas y manejadas de forma separada desde otras páginas, por lo que las scrapers pueden recuperar estos esquemas y las instrucciones desde esta capa antes de analizar los documentos.» (Wikipedia)

WebHTTrack es una aplicación que nos permite la descarga a un directorio local de parte o de todo un sitio web (directorios, imágenes, pdfs, etc.) para poder estudiarlo posteriormente sin conexión a internet (offline).

El programa tiene la particularidad de distinguir entre los enlaces internos (dirigidos a contenidos en el mismo web) y los externos (dirigidos a otros sitios), traccionando los primeros y excluyendo los segundos, esto nos soluciona el gran problema de convertir nuestra búsqueda de datos en el cuento de la buena pipa, donde no se termine jamás.

Su operatividad es muy básica, consta de 4 pasos:
1) Seleccionar el idioma (está en español)
2) Poner el nombre del proyecto (nombre del sitio en nuestro disco)
3) Seleccionar la(s) url(s)
4) Comenzar el proceso de descarga

Pueden profundizar esta introducción leyendo el manual de httrack (http://manualinux.heliohost.org/httrack.html)

Es muy importante prestar atención para elegir un proyecto y sus opciones por si se interrumpe;por ejemplo, porque apagamos el PC o hubo un corte de luz ahora que las empresas distribuidoras empiezan a demostrar su déficit de inversión; dado que si no prestáramos atención podría borrarnos toda la información bajada hasta el momento. Para esto lo mejor es anotar las señas en el stick (notas) del escritorio y dejarlo guardado hasta finalizar.

Si hay un percance, corroboramos la nota y elegimos la opción verificando el sitio web antes de marcar la opción “Continuar con proyecto interrumpido“.

Esta verificación es muy importante porque si algo fue borrado o cambiado esta opción NO es correcta y al reanudar podríamos perder información importante que queremos conservar.

La otra herramienta es GNU Wget se usa desde consola y es software libre 100% que permite la descarga de contenidos desde servidores web de una forma simple. Su nombre esta compuesto por W de World Wide Web, y el «get» que significa obtener y estamos tan acostumbradas a leer en los sitios del software libre o las usuarias de GNU/Linux Debian en el famoso apt-get,o sea Wget quiere decir: obtener desde la WWW.

Actualmente soporta descargas mediante los protocolos HTTP, HTTPS y FTP.

Con wget tenemos la posibilidad de bajar espejos enteros que son sitios complejos de forma recursiva (con todos sus directorios y subdirectoros), «conversión de enlaces para la visualización de contenidos HTML localmente, soporte para proxies, etc.»

Para bajar una página entramos a la consola:
$ wget http://www.tribunahacker.com.ar/2015/03/heladeras-y-electrodomesticos-que-corren-gnulinux/

enter y listo. Veremos como aparece una linea que se va llenando entre parentesis y la página estara en nuestro directorio.

Si lo que queremos es bajar un sitio completo;
$ wget http://www.tribunahacker.com.ar/

y veremos un funcionamiento similar pero de mayor consumo de tiempo. A veces puede suceder que la administradora de la página o del sitio ha impuesto restricciones al scrapeo.

Es acá cuando vemos la magia de wget y lo poderosa que puede ser una herramienta como esta:
$ wget -r -p -U Mozilla http://www.tribunahacker.com.ar/

Una técnica muy usada es la de pausa entre páginas por varios motivos uno y tal vez el más importante; no ser detectadas por la administradora eficiente y la otra ver si ya obtuvimos la información deseada.

wget --wait=20 --limit-rate=20K -r -p -U Firefox http://www.tribunahacker.com.ar

Estas son técnicas básicas; pero muy eficientes en el trabajo de búsqueda y recolección de datos. También sirve para analizar y aprender, leyendo el código de un sitio complejo o para tener el espejo de nuestra distribución a resguardo por si vamos a estar en un sitio sin red.

Muchos sitios no aceptan el scrapeo y en algunos países es considerado ilegal.

«El cumplimiento de estos términos no está totalmente claro. Mientras que la duplicación de expresiones originales puede ser en muchos casos ilegal, en Estados Unidos la corte dictó en Feist Publications v. Rural Telephone Service que la duplicación de hechos es permitida. Las cortes de Estados Unidos en ciertas ocasiones han reconocido que ciertos usos de las scrapers no deberían estar permitidos. Podría considerarse una computadora como una propiedad personal, y de esta forma la scraper estaría entrando sin autorización en esta propiedad. En el caso más conocido, eBay vs Bidder’s Edge, la segunda empresa tuvo que parar de realizar peticiones automáticas al sitio de eBay. En este caso, Bidder’s Edge pujaba automáticamente por ciertos productos en este sitio.» (wikipedia)

En el Blog PERIODISMO EN LAS AMERICAS publican una Guía para periodistas que quieren aprender programación web y aconseja:
«Puede empezar a explorar el web scraping sin tener conocimientos avanzados de programación. El web scraping le permite obtener información de sitios web con un cierto grado de automatización (en otras palabras, no tiene que copiar y pegar cada pequeña cosa que esté buscando). ProPublica cuenta con ScraperWiki que tiene grandes recursos para principiantes y bases de datos para obtener información de sus historias. Una aplicación web gratuita para Chrome llamado Table Capture le permite copiar rápidamente las tablas de las páginas web y pegarlas en otra hoja de cálculo. El Centro Knight también recopiló una serie de herramientas para extraer datos de archivos PDF protegidos».

Lo que se persigue es la transparencia de datos, o sea la posibilidad de obtener esos datos, que se nos oculta para llegar a la verdad y no quedarnos solo con el velo pintado que nos exponen.

Bueno eso es todo por hoy, hasta la lección 2.

¡Happy hacking!

-Share this page-
submit to reddit Hire a Professional Programmer
Walter

Defensora del software libre y el No a las patentes desde 1995. Usuaria de MUSIX-UTUTO-DRAGORA. Miembro de LUNAR (movimiento de software libre argentino disidente de SOLAR). Haklab Barracas. Creadora del Proyecto Hackuelas. Escritora de Ciencia Ficción y de Historias Sociales. http://galleguindioramirez.es/

compartí, discutí, comentá

Deja un comentario

Loading Facebook Comments ...