Monitorizando Pastebin (y otros) con Golang

A pesar de que hay muchas soluciones de monitorización de palabras clave en Pastebin y sitios similares, pero a nosotros nos gustan los restos y decidimos hacernos la nuestra. Y en Golang, que está muy de moda :)

Lo que queríamos era desarrollar una aplicación que monitorizara las entradas recientes de www.pastebin.com, buscando ciertas palabras clave, dando prioridad a las entradas de corta vida y aprovechando las goroutines para poder realizar el análisis de cada paste de forma concurrente. En el caso de encontrar dichas palabras en una de las entradas, la idea era guardarla en un fichero con su URL, tiempo de vida y título.

Tras dedicar un poco de tiempo a rebuscar entre las librerías de GO que podría utilizar y, teniendo en cuenta que no queríamos centrarnos solo en la web de Pastebin, decidimos utilizar como método de extracción de datos de las web, una librería que permite hacer scraping con Xpath, ya que con el navegador de Google (Chrome), si inspeccionas un elemento de cualquier web, te genera su ruta Xpath de forma automática y sencilla.

A partir de esto, tras desarrollar la función que obtenía los últimos pastes de Pastebin y la que los descargaba para inspeccionarlos a partir de las rutas Xpath de cada elemento (Contenido, TTL, Titulo…), añadir más Webs era solo cuestión de replicar estas funciones cambiando el link de la web y la ruta Xpath de dichos elementos.

Por último, de una forma muy simple, desarrollamos la función de búsqueda de palabras clave y un sistema de lectura de fichero de configuración para no tener que pasarle cada palabra clave por parámetro. Et voilà, con un doble click, en cualquier SO (incluido Android utilizando Termux) tienes un demonio revisando cada web que le pongas en busca de cualquier cosa que te interese y que creas que puede aparecer por ahí.


La verdad es que el sistema de cross compilation de Go y la simplicidad de las Goroutines para la multitarea hacen este lenguaje tremendamente potente y cómodo para cosas como estas.

La aplicación necesita un fichero de configuración a su lado, junto con el árbol de directorios “/pasteste/temp” (dejará los pastes sin tiempo de vida en la primera carpeta y los que caducan en /temp).

El código de la aplicación podéis encontrarlo en nuestro repositorio https://github.com/SecurityArtWork por si os interesa hacer uso de él o sugerir alguna mejora.