Harvey v1.2 – Vigilancia y monitorización en Twitter [Parte II]

Buenos días de nuevo a todos. Hace unos días presentábamos Harvey, para los más despistados, aquí les dejo el enlace de la primera parte. Me siento hasta raro volviendo a escribir cuando tan solo han pasado unos días desde mi última publicación, pero me comprometí a hacerlo una semana después y aquí estoy. Estos dos días de retraso no me los tengáis en cuenta.

En la anterior entrada estuvimos viendo las funcionalidades de Harvey respectivas al análisis de un objetivo concreto de la red social Twitter. Esta semana nos centraremos en la vigilancia y monitorización de grandes cantidades de usuarios haciendo uso de la misma red social y a través de la API.

Con esto completaríamos el «Kit del Espía» en las redes sociales (aka Stalker) a gran escala.

Estoy seguro de que le daréis buen uso.

Les dejo una canción de fondo a la que me he vuelto a enganchar hasta quedarme sin oídos. Creo que el ritmo es el verano y bueno, el título viene perfecto para esta entrada. Siempre he pensado que a veces hay que mandarlo todo lejos y hacer como Paskalev, disfrutar de un buen baile en ropa interior.

Vigilancia y monitorización en Twitter

A estas alturas sobran definiciones de vigilancia y monitorización. Creo que más de uno es consciente del nivel de vigilancia y monitorización al que está sometido en el día a día. Es difícil escaparse del sistema. Os pongo dos ejemplos:

  • Londres es una de las ciudades más importantes del mundo y, probablemente, la más grande de Europa. Foco de turismo, comercio, finanzas y cultura; con más de 8 millones de habitantes. Es un punto de interés para todos, también para terroristas, por eso su sistema de vigilancia ha de estar a la altura. Etiquetada constantemente como «la ciudad más vigilada del mundo», cuenta con una inmensa red de cámaras que interceptan a sus transeúntes cada pocos segundos (unas trescientas veces al día) y mandan información a los operadores en caso de actuación sospechosa, para que éstos den zoom in, activen los micrófonos y llamen a Scotland Yard en caso de que fuera necesario.

    Al margen de las cámaras que vigilan las calles, están las que graban en los autobuses londinenses, en el metro, y en todo tipo de instalaciones. Además de las cámaras de los negocios privados. Las hay incluso en las escuelas.

    Aún con todo eso, seguimos encontrándonos con atentados como los que se produjeron en el centro de la ciudad el pasado 3 de Junio.

    Recomendada la lectura de Orwell en «1984».

  • Vuestro dispositivo móvil. Creo que es el ejemplo más claro para entender el estado de constante vigilancia al que estamos sometidos. Lo llevamos siempre encima, Wifi activado, bluetooth activado, Ubicación activada, redes sociales,…una fuente de información de dimensiones inimaginables.Y encima, lo queremos hasta en casa. Que alguien me diga si soy yo el loco o todo el que está a mi alrededor. Eso me recuerda la siguiente cita, les dejo el libro al que pertenece (tengo mucha confianza en los gustos de la persona que me lo recomendó, no os decepcionará), por si les apetece divertirse un rato en este caluroso verano.

    Los locos son una terrible equivocación de la Naturaleza; son las faltas de ortografía de Dios.
    Los renglones torcidos de Dios – Torcuato Luca de Tena

 

Prueba de concepto

En el siguiente ejemplo vamos a mostrar como realizar el proceso de vigilancia digital a través de redes sociales haciendo uso de la herramienta desarrollada Harvey. De nuevo y como hemos comentado en las funciones implementadas de Harvey, vamos a distinguir los casos de vigilancia nacional y de vigilancia mundial.

Para el caso de vigilancia nacional basta con elegir la opción correspondiente en el menú principal del programa y el programa comenzará a mostrar un stream de Tweets en vivo recogiendo así todos los mensajes que hayan sido mandados desde cuentas españolas o en caso de tener la geolocalización activa, dentro de las coordenadas del país.

Vigilancia digital en España utilizando Harvey.
Vigilancia digital en España utilizando Harvey.

Como se muestra en la imagen se pueden ver los diferentes Tweets, tanto el usuario que los ha escrito como el mensaje asociado. También recoge enlaces a fotos, vídeos o noticias que se publican.

Para el caso de vigilancia mundial he implementado una función que permite al usuario especificar una serie de palabras clave que filtrarán todos los Tweets que se escriben en vivo. De esta manera podemos ser más selectivos con nuestro análisis.

En el siguiente ejemplo se muestra el menú principal de Harvey, con la opción de vigilancia mundial marcada y con la palabra clave «policía». De esta manera, estaremos filtrando todos los mensajes que tengan en el cuerpo del mensaje o en los enlaces asociados la palabra policía incluida.

Menú principal de Harvey con la opción de vigilancia mundial.
Menú principal de Harvey con la opción de vigilancia mundial.

Y el resultado es el siguiente:

Stream de tweets a nivel mundial filtrados por palabra clave.
Stream de tweets a nivel mundial filtrados por palabra clave.

Este tipo de funciones nos permitirá hacernos una idea a tiempo real de las situaciones de peligro o casos de terrorismo que ocurran en todo el mundo. Aprovechar la rapidez de este tipo de redes sociales para hacerse eco de noticias y utilizarlas para un beneficio común.

Un caso práctico de este tipo de aplicaciones sería mantener una vigilancia constante ante posibles actos de terrorismo, detectando indicios, sospechas o reacciones inmediatas en caso de ocurrir y actuar lo antes posible ante ello. Este tipo de herramientas tienen un caracter en su mayor parte reactivo puesto que se reacciona ante las noticias una vez que algo ya ha ocurrido, sin embargo, según vaya desarrollándose el objetivo será plantear un carácter proactivo al programa.

Estas dos opciones de vigilancia digital vienen acompañadas de un correspondiente mapa de las coordenadas de los mensajes cuyos usuarios tengan el geoposicionamiento activado, identificando rápidamente la posición exacta del mensaje. Como ya comentamos previamente, cada uno de los puntos o etiquetas que se encuentran en los mapas están relacionando un mensaje-usuario con las coordenadas desde las que se envió dicho mensaje. Esto es importante para identificar rápidamente a posibles sospechosos.

Además, cuanto más concreto sea el mapa mayor fiabilidad tendremos sobre las coordenadas de dichos usuarios. Este diseño fue motivado por el ejemplo de Kiev que presentamos en la introducción de este trabajo. Con este tipo de herramientas se podría controlar dichas masas tan solo mapeando a los diferentes usuarios que hiciesen uso de las redes sociales. Uno de los problemas que nos podemos encontrar es encontrarnos con usuarios como reporteros que simplemente estén cubriendo la noticia, sin embargo, es fácil de solucinar dicho problema a través del propio mensaje que envían.

Podemos ver esta situación tanto a nivel nacional como a nivel mundial. Para las siguientes imágenes apenas se recolectó información durante unos segundos, si esto mismo lo realizamos durante horas el resultado será mucho más amplio. De hecho, lo más normal es que las principales ciudades del país como Madrid, Barcelona o Valencia estén más pobladas a lo largo del tiempo.

Para ver el resultado, basta con elegir la opción correcta en el menú principal y después abrir:

http://localhost:5000/
Geoposicionamiento de los tweets a nivel nacional
Geoposicionamiento de los tweets a nivel nacional
Geoposicionamiento de los tweets a nivel mundial.
Geoposicionamiento de los tweets a nivel mundial.

Para saber más sobre el estado actual de Harvey se puede acceder al repositorio oficial de la herramienta en la plataforma Github. Actualmente se trata de una aplicación de código abierto bajo licencia GNU GENERAL PUBLIC LICENSE.

Como les comenté en la anterior entrada, estoy ya preparando una versión más «digna» de Harvey. Haciendo especial incapié en un buen diseño de clases (si mis profesores de la Universidad viesen este código…volvería a primero) y también en una estructuración del código que permita ser fácilmente ampliable. Entre unas cosas y otras me llevará el resto del verano. Espero que después pueda volver con buenas noticias por aquí para traerles la nueva versión (que por cierto, incluirá Facebook).

Estoy atento a sus comentarios, dudas y sugerencias. Alguno me preguntó si era correcto en la despedida y tenía toda la razón. Quedaba feo despedirse diciendo que podían encontrarme en bares. Es algo muy de invierno. Pido disculpas. Por mi parte, recordaros como siempre que podéis contactar conmigo vía twitter (@juanvelasc0) y si me queréis conocer algo más, podéis pillarme en los diferentes chiringuitos y restaurantes de «pescaito» de vuestra zona (a veces hasta altas horas de la mañana) y por las diferentes CON’s y eventos que se realizan por España.

Disfruten del café con hielo de por la mañana. Ese café siempre tiene un olor especial. Como el napalm.

¿Hueles eso? Es napalm. Nada en el mundo huele como eso.

Postdata: Por si no se han fijado, escuché a aquellos que me dijeron que la primera parte había sido muy larga. Aquí tienen la segunda en versión «light». Disfruten del verano y a bailar a ritmo de Paskalev.

Postdata 2: Respecto a la pregunta que les lancé en la primera parte, la frase «The world needs bad men. We keep the other bad men from the door.» pertenece a una de mis series favoritas. True Detective. Me quedo con la primera temporada, espero que al otro lado de la pantalla piensen lo mismo que yo.

Un comentario en «Harvey v1.2 – Vigilancia y monitorización en Twitter [Parte II]»

  1. Muy buenas, a que se debe este error:
    Generating map…
    [+] You will find it in Maps/MapsHTML…
    Traceback (most recent call last):
    File «main.py», line 79, in
    main()
    File «main.py», line 70, in main
    myMapWorld.StreamingMap(spain_coords)
    File «/Users/Jos/Desktop/harvey-master/Maps/myMapWorld.py», line 85, in StreamingMap
    maps.mapaLeaflet()
    File «/Users/Jos/Desktop/harvey-master/Maps/maps.py», line 7, in mapaLeaflet
    map=folium.Map(location=[df[‘LAT’].mean(),df[‘LON’].mean()],zoom_start=6,tiles=’Mapbox bright’)
    File «/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/folium/map.py», line 169, in __init__
    self.location = _validate_location(location)
    File «/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/folium/utilities.py», line 32, in _validate_location
    ‘got {!r}’.format(location))
    ValueError: Location values cannot contain NaNs, got [nan, nan]

    Un saludo

Los comentarios están cerrados.