Esta es la primera de una serie de dos partes sobre el uso de las redes sociales para localizar testigos oculares de eventos importantes. En este tutorial, lo guiaré a través del uso de la API de Instagram para encontrar miembros que podrían haber estado cerca de una sesión de video de Macklemore 2013 y una escena del accidente de Seattle cerca de donde trabajo a menudo..
En la segunda parte, usaremos la API de Twitter para encontrar miembros cerca de otro evento reciente. También abordaré algunos de los problemas de privacidad relacionados con las redes sociales y compartir su geolocalización. Puede descargar el código para cada episodio usando el enlace del repositorio de GitHub en la barra lateral. También te puede interesar mi serie Tuts +, Creación con la API de Twitter.
Yo participo en las discusiones. Si tiene alguna pregunta o sugerencia sobre un tema, por favor envíe un comentario a continuación. También puedes contactarme en Twitter @reifman o enviarme un correo electrónico directamente.
Los teléfonos que llevamos en nuestros bolsillos registran cada uno de nuestros movimientos, compartiéndolos con proveedores celulares y, a menudo, con compañías de software de terceros cuyas motivaciones generalmente se centran en las ganancias. Pero no son solo los teléfonos y el GPS los que nos exponen, casi siempre hago compras con tarjetas de crédito, exponiendo prácticamente todos los aspectos de mi vida a proveedores de tarjetas de crédito, piratas informáticos o solicitudes legales..
En el concurso Vanish 2009 de Wired, ayudé a dirigir la captura del periodista Evan Ratliff. Después de escribir sobre personas que fingen su muerte, Ratliff intentó desaparecer durante 30 días como parte de un experimento. Si alguien pudiera encontrarlo en persona antes de que expirara el tiempo, recibirían un premio de $ 5,000. Usando una aplicación de Facebook como un honeypot, pude atraer a Ratliff para que compartiera su ubicación varias veces a través de una dirección IP, que luego verifiqué contra una cuenta de Twitter que descubrí que estaba usando. Con la ayuda de otros participantes de Vanish en todo el país, pedimos ayuda en el terreno en Nueva Orleans, que llegó en forma de una pizzería sin gluten (se sabía que Ratliff era celíaca) que logró localizarlo en la ciudad. En esa historia, el etiquetado geográfico no se utilizó para encontrarlo, pero la geolocalización de la dirección IP. Puedes leer la historia de Ratliff aquí también.
Pero las aplicaciones de redes sociales en nuestro teléfono a menudo utilizan el etiquetado geográfico, dejando un camino que los usuarios no siempre anticipan.
Muchas personas no se dan cuenta de que han dejado el etiquetado geográfico en sus aplicaciones de redes sociales, publicando completamente su ubicación con cada publicación en las redes sociales. Esto incluía al congresista republicano Aaron Schock. El AP usó las etiquetas geográficas de su cuenta de Instagram para exponer su uso de los fondos de los contribuyentes para vuelos privados extravagantes y otras actividades de lujo. Ver la cuenta de Instagram expone al congresista que invirtió fondos públicos en vuelos privados y conciertos.
Aquí hay una publicación en Instagram por Schock de Patagonia. Observe el ícono de la etiqueta geográfica al lado de "Glaciar Perito Moreno":
Por lo tanto, la investigación de geotags se puede utilizar para siempre. En este tutorial, voy a explorar cómo los periodistas o las fuerzas del orden público pueden localizar a testigos oculares de eventos importantes, como un crimen o una escena de un accidente, en las redes sociales..
Sin embargo, el etiquetado geográfico también se puede utilizar para el mal. Definitivamente, hay implicaciones de privacidad importantes de su integración en nuestro estilo de vida digital.
Los informáticos y educadores de Berkeley construyeron el ¿Listo o no? Aplicación para mostrar cómo las etiquetas geográficas en Twitter e Instagram registran cada uno de nuestros movimientos. Vea también ¿Está su cuenta de Twitter diciendo demasiado??
¿Aquí está la cuenta de Instagram de Congresmmen Schock en Ready or Not? aplicación:
Aquí está la cuenta de Twitter del cofundador de Apple, Steve Wozniak, en la aplicación. Es interesante que el viaje del congresista esté aún más extendido que este magnate tecnológico..
El etiquetado geográfico en Instagram y Twitter es lo suficientemente preciso para permitir que alguien determine fácilmente su residencia, lugar de trabajo y rutina de viaje..
Si no desea compartir su ubicación para que la vea el público, o dejar un rastro histórico de sus viajes, ¿Listo o No? La aplicación ofrece enlaces y guías para desactivar estas funciones (busque el enlace en su página de inicio). Francamente, he apagado el mío y te animo a que lo hagas también.
Para aquellos que no lo hacen, y muchos no lo hacen, sus publicaciones en las redes sociales pueden ser útiles para los agentes de la ley en busca de testigos de una escena del crimen o periodistas que deseen profundizar en una historia. Te voy a guiar a través de cómo hacer eso.
En este episodio, te guiaré a través del uso de la API de Instagram. He proporcionado un repositorio de GitHub (el enlace se encuentra en la barra lateral) para que lo descargues y pruebes el código. Mi "aplicación Eyewitness" está escrita en Yii Framework for PHP, sobre la que puede obtener más información en mi serie Programming With Yii2 para Tuts+.
El proceso de configuración requiere que registres una cuenta de desarrollador y una aplicación en Instagram (y / o Twitter).
Si usted es una agencia de cumplimiento de la ley o una entidad de medios de comunicación que desea obtener más información, no dude en comunicarse conmigo directamente. También me interesaría cualquier uso exitoso de este código (para bien); harían una interesante historia de seguimiento.
Vamos a empezar con Instagram. Si aún no tiene una cuenta de Instagram, descargue la aplicación en su teléfono y regístrese..
La búsqueda de geolocalización en Instagram es bastante sofisticada y ofrece una interfaz muy sencilla para nuestros propósitos. Como puede ver a continuación, necesitamos proporcionar una ubicación latitud y longitud, un radio geográfico (distancia) y un rango de tiempo (min_timestamp y max_timestamp):
Visite la página de la API de Instagram para desarrolladores y haga clic en Registre su aplicación:
Deberá registrarse para obtener una cuenta de desarrollador:
Luego puede registrar una nueva aplicación para recibir su ID de cliente:
Sobre el Administrar clientes salpicadero, verás tu Identificación del cliente y Secreto del cliente, así que toma nota de estos:
Puede clonar el repositorio de GitHub ubicado en la barra lateral para ejecutar nuestro código de muestra.
cd ~ / Sites / eyew https://github.com/link-in-sidebar/eyew.git
Tendrá que configurar su configuración local de Apache. Yo uso MAMP, por lo que se ve algo como esto:
cd / Applications / MAMP / htdocs ln -s ~ / Sites / eyew / web / Applications / MAMP / htdocs / eyew
Necesitas crear una base de datos localmente. Utilizo PHPMyAdmin para crear uno gráficamente:
Luego creo un archivo de inicialización en /var/secure/eyew.ini con las credenciales de mi base de datos y los identificadores y claves de Instagram. Describí este proceso recientemente en otro tutorial de Tuts +: Cómo proteger sus claves de GitHub. Con humor, accidentalmente revisé mi clave de Instagram durante las pruebas (suspiro) y luego tuve que restablecer mis claves.
Mi archivo ini se ve así:
mysql_host = "localhost" mysql_db = "eyew" mysql_un = "xxxxxxxxx" mysql_pwd = "xxxxxxxxxxxx" instagram_client_id__es_es_es_es_es_es_es_es_supestado_superfiestro_sop.proseas_supuesto
Actualice su Compositor y sus bibliotecas de proveedores:
sudo composer auto-actualización sudo composer update
Luego inicialice nuestra base de datos. La primera migración instala las tablas de usuario para nuestra extensión Dmeroff del desarrollador Yii2-User, y la segunda crea nuestras tablas específicas de la aplicación:
./ yii migrate / up --migrationPath = @ vendor / dektrium / yii2-user / migrations ./yii migrate / up
Nuevamente, puede aprender más acerca de cómo configurar una aplicación Yii Framework en mi serie Programming With Yii2 para Tuts+.
A continuación, le ofrecemos un vistazo a lo que debería ver cuando visite el sitio en su navegador:
Un momento es un lugar y un momento en el que estamos buscando afiches de redes sociales que estuvieran presentes. Consiste en un descriptor amigable, una ubicación (latitud y longitud), una hora de inicio y una duración (en minutos). Para mi primer ejemplo, estoy buscando usuarios de Instagram que estuvieran presentes en la filmación del video de Macklemore en la tarde del miércoles 24 de julio de 2013 en el histórico Dick's Drive In de Seattle. La producción de video y las multitudes subsiguientes cerraron el área por horas..
Usando Google Maps, puedo obtener la latitud y longitud del GPS para Dick's. Son las 47.6195 -122.321..
Del artículo, me enteré de que la producción se cerró a la 1 am. Voy a elegir una hora de inicio de 10 pm y una duración de 3 horas.
Instagram acepta las horas de inicio en GMT, por lo que codifiqué un ajuste de cambio de hora de ocho horas desde mi zona horaria (PST). Es posible que tengas que cambiar esto en el código..
función pública actionCreate () $ model = new Moment (); if ($ model-> load (Yii :: $ app-> request-> post ())) // convertir la hora de la fecha en la marca de tiempo $ model-> start_at = strtotime ($ model-> start_at); // ajustar para GMT $ model-> start_at + = (3600 * 8); // validar el formulario con las reglas del modelo si ($ model-> validate ()) // todas las entradas son válidas $ model-> save (); devuelve $ this-> redirect (['view', 'id' => $ model-> id]); else return $ this-> render ('create', ['model' => $ model,]); else else return $ this-> render ('create', ['model' => $ model,]);
Para buscar en Instagram, hacemos clic en el ícono de la cámara a continuación:
Para implementar mi búsqueda de medios en Instagram, estoy usando el paquete PHP de Galen Grover en Instagram. La búsqueda real es bastante sencilla: $ instagram-> searchMedia ($ this-> latitude, $ this-> longitude, $ params);
setClientID (\ Yii :: $ app-> params ['instagram'] ['client_id']); $ end_at = $ this-> start_at + ($ this-> duration * 60); $ params = array ('min_timestamp' => $ this-> start_at, 'max_timestamp' => $ end_at, 'distance' => $ this-> distance, 'count' => 50); $ media = $ instagram-> searchMedia ($ this-> latitude, $ this-> longitude, $ params); foreach ($ media as $ m) if (isset ($ m-> caption-> text)) $ caption = $ m-> caption-> text; else $ caption = "; $ i = new Gram (); $ i-> add ($ this-> id, $ m-> user-> username, $ m-> link, $ m-> created_time, $ m-> images-> thumbnail-> url, $ caption);
Los resultados se almacenan en mi tabla de gram, que luego podemos examinar:
función pública add ($ moment_id, $ username, $ link, $ created_time, $ image_url, $ text) if (! Gram :: find () -> where (['moment_id' => $ moment_id]) -> andWhere ( ['link' => $ link]) -> andWhere (['created_time' => $ created_time]) -> existe ()) $ i = new Gram (); $ i-> moment_id = $ moment_id; $ i-> username = $ username; $ i-> link = $ link; $ i-> created_time = $ created_time; $ i-> image_url = $ image_url; $ i-> text = $ text; $ i-> guardar ();
Aquí está la primera página de resultados de mi búsqueda. Puedes ver a las multitudes y la limusina Cadillac de Macklemore subiendo. Claramente, llego al jackpot con mi búsqueda.
Luego, en la página tres, un usuario de Instagram llamado Joshua Lewis tiene una foto de Macklemore saliendo del Cadillac:
Aquí está Macklemore:
Este ejemplo muestra claramente el poder que proporciona la API de búsqueda de Instagram. En solo unos momentos, encontramos una variedad de testigos presenciales de un evento del verano de 2013. Increíble.
Si estás interesado, aquí hay un video de YouTube de la sesión de Macklemore:
Para mi segundo ejemplo, voy a buscar usuarios de Instagram que se encontraban en el área alrededor del momento de un trágico accidente cerca del lugar donde trabajaba en conjunto hace unas semanas. El scooter motorizado de una mujer puede haber funcionado mal y ella perdió el control y se estrelló en el extremo de la cola de un automóvil que pasa (afortunadamente, sobrevivió). Sucedió frente al "Roastery" de Starbuck, una nueva y desafortunada trampa para turistas aquí en Seattle (no soy fanático).
Usando Google Maps, podemos ver que las coordenadas GPS del asador son 47.614264, -122.328008:
El artículo nos dice que el accidente ocurrió alrededor de las 5 de la tarde. Así que usaremos esta información para crear nuestro momento:
Aquí puedes ver los dos momentos que hemos añadido:
En caso de que se esté preguntando, el ícono del borrador borra los resultados pasados para ese momento.
Aquí están los resultados de nuestra búsqueda de accidentes en Starbucks Roastery. Nadie publicó fotos de la escena del accidente: prevaleció la cortesía. Sin embargo, todos estos usuarios de Instagram se encontraban en el área en ese momento y podría valer la pena contactarlos como testigos..
Algunos eran turistas como esta mujer rusa. He publicado la traducción de Google de su publicación de Instagram a continuación:
Otros visitaron la sala de degustación de Starbucks o un bar cercano y un restaurante de ostras..
Espero que puedan ver tanto la oscuridad como la luz de la tecnología de etiquetado geográfico. Existen usos legítimos obvios que estas tecnologías pueden proporcionar para el bien y, obviamente, pueden ser objeto de abuso.
En el próximo episodio, vamos a implementar los momentos de búsqueda utilizando la API de Twitter..
Mientras tanto, siéntase libre de publicar sus preguntas y comentarios a continuación. También puedes contactarme en Twitter @reifman o enviarme un correo electrónico directamente. Apreciaría especialmente escuchar de periodistas y agentes de la ley que hacen uso de estos ejemplos..
También puede navegar por la página de mi instructor Tuts + para ver otros tutoriales que he escrito.