Ceci est la première d'une série en deux parties sur l'utilisation des médias sociaux pour localiser les témoins oculaires d'événements importants. Dans ce tutoriel, je vais vous guider dans l'utilisation de l'API Instagram pour trouver des membres qui auraient pu être proches d'une session vidéo de Macklemore en 2013 et d'une scène d'accident à Seattle près de l'endroit où je travaille souvent..
Dans la deuxième partie, nous utiliserons l'API Twitter pour trouver des membres à proximité d'un autre événement récent. Je vais également aborder certaines des questions de confidentialité liées aux médias sociaux et au partage de votre géolocalisation. Vous pouvez télécharger le code de chaque épisode en utilisant le lien du référentiel GitHub dans la barre latérale. Vous pouvez également être intéressé par ma série Tuts +, Building With the Twitter API.
Je participe aux discussions. Si vous avez une question ou une suggestion de sujet, veuillez poster un commentaire ci-dessous. Vous pouvez également me joindre sur Twitter @reifman ou m'envoyer un email directement.
Les téléphones que nous portons dans nos poches enregistrent chacun de nos mouvements et les partagent avec des fournisseurs de cellulaires et souvent avec des éditeurs de logiciels tiers dont les motivations sont généralement centrées sur le profit. Mais ce ne sont pas seulement les téléphones et le GPS qui nous exposent: je fais presque toujours des achats avec des cartes de crédit, exposant à peu près tous les aspects de ma vie aux fournisseurs de cartes de crédit, aux pirates informatiques ou aux requêtes légales..
Lors du concours Vanish 2009 de Wired, j'ai contribué à la capture du journaliste Evan Ratliff. Après avoir écrit sur des personnes qui simulent leur mort, Ratliff a tenté de disparaître pendant 30 jours dans le cadre d'une expérience. Si quelqu'un pouvait le trouver en personne avant la fin du temps imparti, il recevrait un prix de 5 000 $. En utilisant une application Facebook comme pot de miel, j'ai pu attirer Ratliff à partager à plusieurs reprises son emplacement via une adresse IP, que j'ai ensuite vérifiée par rapport à un compte Twitter que j'avais découvert qu'il utilisait. Avec l'aide d'autres participants de Vanish dans tout le pays, nous avons demandé de l'aide sur le terrain à La Nouvelle-Orléans, sous la forme d'un magasin de pizzas sans gluten (Ratliff était connu pour être coeliaque), qui a réussi à le retrouver en ville. Dans cette histoire, la géolocalisation ne servait pas à le trouver mais à la géolocalisation d'adresses IP. Vous pouvez lire l'histoire de Ratliff ici aussi.
Mais les applications de médias sociaux sur notre téléphone utilisent fréquemment la géolocalisation, laissant une trace que les utilisateurs ne prévoient pas toujours.
Beaucoup de gens ne réalisent pas qu'ils ont laissé la géolocalisation sur leurs applications de médias sociaux, publiant pleinement leur emplacement avec chaque message publié sur les médias sociaux. Cela comprenait Aaron Schock, membre du Congrès du GOP. L'AP a utilisé les balises géographiques de son compte Instagram pour exposer son utilisation des fonds des contribuables pour des vols privés extravagants et d'autres activités de luxe. Voir le compte Instagram expose un membre du Congrès qui a gaspillé des fonds publics sur des vols privés et des concerts.
Voici un message Instagram de Schock de Patagonia - remarquez l'icône de géolocalisation à côté de "Glacier Perito Moreno":
Ainsi, les balises géographiques peuvent être utilisées pour de bon. Dans ce tutoriel, je vais explorer comment les journalistes ou les forces de l'ordre peuvent localiser des témoins oculaires potentiels d'événements importants tels qu'un crime ou une scène d'accident à l'aide des médias sociaux..
Cependant, la géolocalisation peut également être utilisée pour le mal. Son intégration à notre mode de vie numérique a certainement des conséquences importantes pour la vie privée..
Les informaticiens et les éducateurs de Berkeley ont construit le projet Ready or Not? application pour montrer comment la géolocalisation dans Twitter et Instagram enregistre chacun de nos mouvements. Voir aussi Est-ce que votre compte Twitter en dit trop??
Voici le compte Instagram de Congresmmen Schock dans le Ready ou pas? app:
Voici le compte Twitter de Steve Wozniak, cofondateur d'Apple, dans l'application. Intéressant que le voyage du membre du Congrès est encore plus répandu que ce magnat de la technologie.
La géolocalisation sur Instagram et Twitter est suffisamment précise pour permettre à une personne de déterminer facilement votre lieu de résidence, votre lieu de travail et votre routine de voyage..
Si vous ne souhaitez pas partager votre position pour que le public voie, ou pour laisser une trace historique de vos voyages, le Ready ou pas? L'application propose des liens et des guides pour désactiver ces fonctionnalités (recherchez le lien sur sa page d'accueil). Franchement, j'ai désactivé le mien et je vous encourage à le faire aussi.
Pour ceux qui ne le font pas - et beaucoup ne le feront pas -, leurs publications sur les réseaux sociaux peuvent être utiles aux forces de l'ordre à la recherche de témoins d'une scène de crime ou à des journalistes souhaitant approfondir une histoire. Je vais vous guider à travers comment faire ça.
Dans cet épisode, je vais vous guider à l'aide de l'API Instagram. J'ai fourni un référentiel GitHub (le lien est dans la barre latérale) que vous pouvez télécharger pour essayer le code. Mon "application Eyewitness" est écrite dans le framework Yii pour PHP, sur lequel vous pouvez en apprendre davantage sur ma série de programmation avec Yii2 pour Tuts+.
Le processus de configuration nécessite que vous enregistriez un compte de développeur et une application avec Instagram (et / ou Twitter)..
Si vous êtes un organisme chargé de l'application de la loi ou une entité média qui souhaite obtenir plus d'informations, n'hésitez pas à me contacter directement. Je serais également intéressé par toute utilisation réussie de ce code (pour de bon) - ils feraient une histoire intéressante de suivi.
Commençons par Instagram. Si vous n'avez pas encore de compte Instagram, téléchargez l'application sur votre téléphone et inscrivez-vous.
La recherche de géolocalisation sur Instagram est assez sophistiquée et offre une interface très simple pour nos besoins. Comme vous pouvez le voir ci-dessous, nous devons fournir un emplacement latitude et longitude, un rayon géographique (distance) et une plage de temps (min_timestamp et max_timestamp):
Visitez la page API Instagram pour les développeurs et cliquez sur Enregistrez votre application:
Vous devrez créer un compte développeur:
Ensuite, vous pouvez enregistrer une nouvelle application pour recevoir votre identifiant client:
Sur le Gérer les clients tableau de bord, vous verrez votre identité du client et Secret du client, alors prenez note de ceux-ci:
Vous pouvez cloner le référentiel GitHub situé dans la barre latérale pour exécuter notre exemple de code..
cd ~ / Sites / eyew https://github.com/link-in-sidebar/eyew.git
Vous devrez configurer votre configuration Apache locale. J'utilise MAMP, donc ça ressemble à quelque chose comme ça:
cd / Applications / MAMP / htdocs ln -s ~ / Sites / eyew / web / Applications / MAMP / htdocs / eyew
Vous devez créer une base de données localement. J'utilise PHPMyAdmin pour en créer un graphiquement:
Ensuite, je crée un fichier d'initialisation dans /var/secure/eyew.ini avec mes informations d'identification de base de données et mes identifiants et clés Instagram. J'ai récemment décrit ce processus dans un autre tutoriel de Tuts +: Protéger vos clés de GitHub. De façon humoristique, j'ai accidentellement enregistré ma clé Instagram lors des tests (soupir) et j'ai dû réinitialiser mes clés par la suite..
Mon fichier ini ressemble à ceci:
mysxloukoukoukou
Mettez à jour votre compositeur et ses bibliothèques de fournisseurs:
compositeur sudo mise à jour automatique compositeur sudo
Puis initialisez notre base de données. La première migration installe des tables utilisateur pour notre extension Dmeroff Yii2-User par développeur, et la seconde crée nos tables spécifiques à l'application:
./ yii migrate / up --migrationPath = @ vendor / dektrium / yii2-user / migrations ./yii migrate / up
Encore une fois, vous pouvez en apprendre plus sur la configuration d’une application Yii Framework dans la série Programmation avec Yii2 pour Tuts.+.
Voici un aperçu de ce que vous devriez voir lorsque vous visitez le site dans votre navigateur:
Un moment est un lieu et une heure pour lesquels nous recherchons des affiches de médias sociaux présentes. Il se compose d'un descripteur convivial, d'un emplacement (latitude et longitude), d'une heure de début et d'une durée (en minutes). Pour mon premier exemple, je recherche des utilisateurs d'Instagram qui étaient présents lors du tournage vidéo de Macklemore dans la soirée du mercredi 24 juillet 2013 au Dick's Drive In de Seattle. La production vidéo et les foules qui ont suivi ont fermé la zone pendant des heures.
En utilisant Google Maps, je peux obtenir la latitude et la longitude GPS de Dick. C'est 47.6195 -122.321.
De l'article, j'ai appris que la production a cessé à 1 heure du matin. Je vais choisir une heure de départ de 22 heures et une durée de 3 heures.
Instagram accepte les heures de début à l’heure GMT, donc j’ai codé en dur un ajustement de changement d’heure de huit heures à partir de mon fuseau horaire (PST). Vous devrez peut-être changer cela dans le code.
fonction publique actionCreate () $ model = new Moment (); if ($ model-> load (Yii :: $ app-> request-> post ())) // convertit l'heure en timestamp $ model-> start_at = strtotime ($ model-> start_at); // ajuster pour GMT $ model-> start_at + = (3600 * 8); // valide le formulaire par rapport aux règles du modèle if ($ model-> validate ()) // toutes les entrées sont valides $ model-> save (); return $ this-> redirect (['view', 'id' => $ model-> id]); else return $ this-> render ('create', ['model' => $ model,]); else return $ this-> render ('create', ['model' => $ model,]);
Pour rechercher Instagram, nous cliquons sur l'icône de caméra ci-dessous:
Pour mettre en œuvre ma recherche multimédia sur Instagram, j'utilise le package PHP Instagram de Galen Grover. La recherche actuelle est assez simple: $ 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, 'compte' => 50); $ media = $ instagram-> searchMedia ($ this-> latitude, $ this-> longitude, $ params); foreach ($ media as $ m) if (isset ($ m-> légende-> texte)) $ légende = $ m-> légende-> texte; else $ caption = "; $ i = new Gram (); $ i-> add ($ this-> id, $ m-> user-> nom d'utilisateur, $ m-> link, $ m-> created_time, $ m-> images-> vignette-> url, $ légende);
Les résultats sont stockés dans ma table Gram, que nous pouvons ensuite parcourir:
fonction publique add ($ moment_id, $ utilisateur, $ lien, $ heure_créée, $ image_url, $ texte) if (! Gram :: find () -> où (['moment_id' => $ moment_id]) -> andWhere ( ['link' => $ link]) -> andWhere (['created_time' => $ created_time]) -> existe ()) $ i = new Gram (); $ i-> moment_id = $ moment_id; $ i-> nom d'utilisateur = $ nom d'utilisateur; $ i-> link = $ link; $ i-> created_time = $ created_time; $ i-> image_url = $ image_url; $ i-> text = $ text; $ i-> save ();
Voici la première page de résultats de ma recherche. Vous pouvez voir la foule et la limousine Cadillac de Macklemore qui monte. Clairement, j'ai touché le jackpot avec ma recherche.
Ensuite, à la page trois, un utilisateur Instagram nommé Joshua Lewis a une photo de Macklemore sortant de la Cadillac:
Voici Macklemore:
Cet exemple montre clairement la puissance fournie par l'API de recherche Instagram. En quelques instants, nous avons trouvé une variété de témoins oculaires lors d'un événement de l'été 2013. Incroyable.
Si cela vous intéresse, voici une vidéo YouTube de ce tournage de Macklemore:
Pour mon deuxième exemple, je vais rechercher des utilisateurs d’Instagram qui se trouvaient dans la région à l’époque d’un tragique accident survenu près de mon lieu de travail, il ya quelques semaines. Le scooter motorisé d'une femme a peut-être mal fonctionné et elle a perdu le contrôle de son véhicule et s'est écrasée contre l'arrière de la voiture (heureusement, elle a survécu). C'est arrivé devant le "Roastery" de Starbuck, un nouveau piège de touristes malheureux à Seattle (je ne suis pas un fan).
En utilisant Google Maps, nous pouvons voir que les coordonnées GPS du roastaster sont 47.614264, -122.328008:
L'article nous dit que l'accident s'est produit vers 17 heures. Nous allons donc utiliser cette information pour créer notre moment:
Ici vous pouvez voir les deux moments que nous avons ajoutés:
Au cas où vous vous le demanderiez, l’icône gomme efface les résultats passés pour la recherche de ce moment..
Voici les résultats de notre recherche d'accident Starbucks Roastery. Personne n'a posté de photos de la scène de l'accident - la courtoisie a prévalu. Cependant, tous ces utilisateurs d’Instagram se trouvaient dans la région à l’époque et mériteraient d’être contactés en tant que témoins..
Certains étaient des touristes comme cette femme russe. J'ai posté la traduction de son post Instagram ci-dessous:
D'autres ont visité la salle de dégustation du torréfacteur Starbucks ou un bar à proximité et un restaurant d'huîtres.
J'espère que vous pourrez voir à la fois l'obscurité et la lumière de la technologie de géolocalisation. Il existe des utilisations légitimes évidentes que ces technologies peuvent fournir pour de bon, et ils peuvent évidemment être maltraités.
Dans le prochain épisode, nous allons implémenter les moments de recherche à l'aide de l'API Twitter.
En attendant, n'hésitez pas à poster vos questions et commentaires ci-dessous. Vous pouvez également me joindre sur Twitter @reifman ou m'envoyer un courriel directement. J'apprécierais tout particulièrement les journalistes et les forces de l'ordre qui utilisent ces exemples.
Vous pouvez également parcourir ma page d’instructeur Tuts + pour voir les autres tutoriels que j’ai écrits..