Dies ist der erste Teil einer zweiteiligen Serie zur Verwendung sozialer Medien, um Augenzeugen bei wichtigen Ereignissen zu lokalisieren. In diesem Tutorial werde ich Sie durch die Instagram-API führen, um Mitglieder zu finden, die möglicherweise in der Nähe eines Macklemore-Videoshoots von 2013 und einer Unfallszene in Seattle waren, in der ich oft arbeite.
In Teil zwei werden wir die Twitter-API verwenden, um Mitglieder in der Nähe einer anderen Veranstaltung zu finden. Ich werde auch auf einige der Datenschutzprobleme eingehen, die sich auf Social Media beziehen und Ihre Standortbestimmung mitteilen. Sie können den Code für jede Episode herunterladen, indem Sie den GitHub-Repository-Link in der Seitenleiste verwenden. Vielleicht interessieren Sie sich auch für meine Tuts + -Serie, Erstellen mit der Twitter-API.
Ich nehme an den Diskussionen teil. Wenn Sie eine Frage oder ein Thema haben, schreiben Sie bitte einen Kommentar. Sie können mich auch auf Twitter @reifman erreichen oder mich direkt per E-Mail kontaktieren.
Die Handys, die wir in unseren Taschen tragen, dokumentieren jede unserer Bewegungen und teilen sie mit Mobilfunkanbietern und oft auch mit Drittanbieter-Softwareunternehmen, deren Motivation im Allgemeinen auf Gewinn ausgerichtet ist. Aber es sind nicht nur Telefone und GPS, die uns entlarven - ich kaufe fast immer mit Kreditkarten ein und entlarvte so ziemlich jeden Aspekt meines Lebens Kreditkartenanbietern, Hackern oder rechtlichen Anfragen.
Im Wirish-Wettbewerb Vanish 2009 half ich bei der Festnahme des Journalisten Evan Ratliff. Nachdem er über Menschen geschrieben hatte, die ihren Tod vorgetäuscht hatten, versuchte Ratliff im Rahmen eines Experiments 30 Tage lang zu verschwinden. Wenn jemand ihn vor Ablauf der Zeit persönlich finden könnte, würde er einen Preis von 5.000 Dollar erhalten. Mit einer Facebook-Anwendung als Honeypot konnte ich Ratliff dazu verleiten, seinen Standort wiederholt über eine IP-Adresse zu teilen, die ich dann mit einem Twitter-Account verifizieren konnte, den er entdeckt hatte. Mit Hilfe von anderen Vanish-Teilnehmern aus dem ganzen Land wurde in New Orleans Hilfe vor Ort angerufen, die in Form eines glutenfreien Pizza-Shops (Ratliff war bekannt als Zöliakie), der es gelang, ihn in der Stadt aufzuspüren. In dieser Geschichte wurde Geotagging nicht verwendet, um ihn zu finden, sondern um die IP-Adresse. Sie können hier auch die Geschichte von Ratliff lesen.
Bei Social-Media-Anwendungen auf unserem Telefon wird jedoch häufig Geotagging verwendet. Dies hinterlässt eine Spur, die Benutzer nicht immer vorhersehen.
Viele Menschen wissen nicht, dass sie das Geotagging in ihren Social-Media-Apps verlassen haben und ihren Standort mit jedem Social-Media-Beitrag vollständig bekannt machen. Dazu gehörte der GOP-Kongressabgeordnete Aaron Schock. Der AP nutzte die Geotags seines Instagram-Kontos, um seine Verwendung von Steuergeldern für extravagante Privatflüge und andere luxuriöse Aktivitäten aufzudecken. Siehe Instagram-Konto, das Kongressabgeordnete entlarvt, der öffentliche Gelder für private Flüge und Konzerte verwendet hat.
Hier ist ein Instagram-Beitrag von Schock aus Patagonien. Das Geotag-Symbol befindet sich neben "Perito-Moreno-Gletscher":
Die Untersuchung von Geotags kann also zum Guten genutzt werden. In diesem Tutorial werde ich untersuchen, wie Journalisten oder Strafverfolgungsbehörden potenzielle Augenzeugen zu wichtigen Ereignissen wie einem Verbrechen oder einer Unfallszene mithilfe von sozialen Medien auffinden können.
Geotagging kann jedoch auch für das Böse eingesetzt werden. Die Integration in unseren digitalen Lebensstil hat zweifellos wichtige Auswirkungen auf den Datenschutz.
Berkeley-Informatiker und Pädagogen bauten das Ready or Not? App, um zu zeigen, wie Geotagging in Twitter und Instagram jeden einzelnen Schritt aufzeichnet. Sehen Sie auch, ob Ihr Twitter-Konto zu viel sagt?
Hier ist Congresmmen Schocks Instagram-Konto in Ready oder Not? app:
Hier ist der Twitter-Account von Apple-Mitbegründer Steve Wozniak in der App. Interessanterweise ist die Reise des Kongressabgeordneten noch weiter verbreitet als dieser technische Tycoon.
Das Geotagging auf Instagram und Twitter ist so genau, dass jemand Ihren Wohnort, Ihren Arbeitsplatz und Ihre Reiseroutine leicht bestimmen kann.
Wenn Sie Ihren Standort nicht teilen möchten, damit die Öffentlichkeit ihn sehen kann, oder einen historischen Weg Ihrer Reisen hinterlassen, das Ready oder Not? Die App bietet Links und Anleitungen zum Deaktivieren dieser Funktionen (suchen Sie auf der Startseite nach dem Link). Ehrlich gesagt, ich habe meine ausgeschaltet und ich möchte Sie dazu ermutigen.
Für diejenigen, die dies nicht tun - und viele nicht -, können ihre Social-Media-Beiträge für Strafverfolgungsbehörden nützlich sein, die nach Zeugen eines Tatorts oder nach Journalisten suchen, die sich tiefer in eine Geschichte einarbeiten möchten. Ich werde Sie durch die Vorgehensweise führen.
In dieser Episode werde ich Sie durch die Instagram-API führen. Ich habe ein GitHub-Repository bereitgestellt (der Link befindet sich in der Seitenleiste), damit Sie es herunterladen können, um den Code auszuprobieren. Meine "Augenzeugen-App" ist im Yii-Framework für PHP geschrieben, über das Sie in meiner Serie "Programmieren mit Yii2" für Tuts mehr erfahren können+.
Für die Konfiguration müssen Sie ein Entwicklerkonto und eine Anwendung bei Instagram (und / oder Twitter) registrieren..
Wenn Sie eine Strafverfolgungsbehörde oder ein Medienunternehmen sind, die weitere Informationen wünschen, wenden Sie sich bitte direkt an mich. Ich würde mich auch für eine erfolgreiche Verwendung dieses Codes interessieren (für immer) - sie würden eine interessante Folgegeschichte machen.
Beginnen wir mit Instagram. Wenn Sie noch kein Instagram-Konto haben, laden Sie die Anwendung auf Ihr Telefon herunter und melden Sie sich an.
Die Geolocation-Suche auf Instagram ist ziemlich ausgereift und bietet eine sehr einfache Schnittstelle für unsere Zwecke. Wie Sie unten sehen können, müssen wir einen Standort angeben Breite und Längengrad, einen geografischen Radius (Entfernung) und einen Zeitbereich (min_zeitstempel und max_timestamp):
Besuchen Sie die Instagram-API-Seite für Entwickler und klicken Sie auf Registrieren Sie Ihre Bewerbung:
Sie müssen sich für ein Entwicklerkonto anmelden:
Dann können Sie eine neue Anwendung registrieren, um Ihre Kunden-ID zu erhalten:
Auf der Kunden verwalten Dashboard, sehen Sie Ihre Kunden ID und Kundengeheimnis, so notieren Sie sich diese:
Sie können das GitHub-Repository in der Seitenleiste klonen, um unseren Beispielcode auszuführen.
cd ~ / Sites / eyew https://github.com/link-in-sidebar/eyew.git
Sie müssen Ihre lokale Apache-Konfiguration konfigurieren. Ich benutze MAMP, also sieht es ungefähr so aus:
cd / Anwendungen / MAMP / htdocs ln -s ~ / Sites / eyew / web / Anwendungen / MAMP / htdocs / eyew
Sie müssen lokal eine Datenbank erstellen. Ich verwende PHPMyAdmin, um eine grafisch zu erstellen:
Dann erstelle ich eine Initialisierungsdatei in /var/secure/eyew.ini mit meinen Datenbankanmeldeinformationen und Instagram-IDs und Schlüsseln. Ich habe diesen Vorgang kürzlich in einem anderen Tuts + -Tutorial beschrieben: Schutz Ihrer Schlüssel vor GitHub. Humorvoll habe ich versehentlich meinen Instagram-Schlüssel während des Tests eingecheckt (seufzte) und musste danach meine Schlüssel zurücksetzen.
Meine Ini-Datei sieht folgendermaßen aus:
mysql_host = "localhost" mysql_db = "EyeW" mysql_un = "xxxxxxxxx" MYSQL_PWD = "xxxxxxxxxxxx" instagram_client_id = "4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7" instagram_client_secret = "1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4"
Aktualisieren Sie Ihren Composer und seine Herstellerbibliotheken:
Sudo Composer Update Sudo Composer selbst aktualisieren
Dann initialisieren Sie unsere Datenbank. Bei der ersten Migration werden Benutzertabellen für unseren Yii2-User nach Entwicklererweiterung Dmeroff installiert, und bei der zweiten werden unsere App-spezifischen Tabellen erstellt:
./ yii migrieren / up --migrationPath = @ vendor / dektrium / yii2-user / migrationen ./yii migrieren / up
Weitere Informationen zum Einrichten einer Yii Framework-Anwendung finden Sie in meiner Programmierserie Yii2 für Tuts+.
Hier sehen Sie, was Sie beim Besuch der Site in Ihrem Browser sehen sollten:
Ein Moment ist ein Ort und eine Zeit, für die wir nach Social Media-Plakaten suchen, die anwesend waren. Es besteht aus einer freundlichen Beschreibung, einem Ort (Breitengrad und Längengrad), einer Startzeit und einer Dauer (in Minuten). Für mein erstes Beispiel suche ich nach Instagram-Benutzern, die am Mittwochabend, dem 24. Juli 2013, bei Macklemores Video-Shooting in Dick's Drive In, einem Wahrzeichen von Seattle, anwesend waren. Die Videoproduktion und die darauffolgende Menschenmenge stellten die Gegend stundenlang still.
Mit Google Maps kann ich den GPS-Längen- und Breitengrad von Dick ermitteln. Es ist 47.6195 -122.321.
Aus dem Artikel erfuhr ich, dass die Produktion um 1 Uhr morgens eingestellt wurde. Ich werde eine Startzeit von 22 Uhr und eine Dauer von 3 Stunden wählen.
Instagram akzeptiert Startzeiten in GMT, daher habe ich eine achtstündige Zeitanpassung aus meiner Zeitzone (PST) fest codiert. Möglicherweise müssen Sie dies im Code ändern.
öffentliche Funktion actionCreate () $ model = new Moment (); if ($ model-> load (Yii :: $ app-> request-> post ())) // konvertiere Datum Uhrzeit in Zeitstempel $ model-> start_at = strtotime ($ model-> start_at); // für GMT $ model-> start_at + = (3600 * 8) anpassen; // das Formular anhand von Modellregeln validieren, wenn ($ model-> validate ()) // alle Eingaben gültig sind $ model-> save (); $ this-> redirect zurückgeben (['view', 'id' => $ model-> id]); else return $ this-> render ('create', ['model' => $ model,]); else return $ this-> render ('create', ['model' => $ model,]);
Um nach Instagram zu suchen, klicken wir unten auf das Kamerasymbol:
Um meine Mediensuche auf Instagram zu implementieren, verwende ich das Instagram PHP-Paket von Galen Grover. Die eigentliche Suche ist recht einfach: $ instagram-> searchMedia ($ this-> width, $ 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-> width, $ this-> longitude, $ params); foreach ($ media als $ m) if (isset ($ m-> caption-> text)) $ caption = $ m-> caption-> text; else $ caption = "; $ i = new Gram (); $ i-> add ($ this-> id, $ m-> Benutzer-> Benutzername, $ m-> Link, $ m-> Created_time, $ m-> images-> thumbnail-> url, $ caption);
Die Ergebnisse werden in meiner Gram-Tabelle gespeichert, die wir dann durchsuchen können:
public function add ($ moment_id, $ benutzername, $ link, $ created_time, $ image_url, $ text) if (! Gram :: find () -> where (['moment_id' => $ moment_id]) -> andWhere ( ['link' => $ link]) -> andWhere (['created_time' => $ created_time]) -> exists ()) $ i = new Gram (); $ i-> moment_id = $ moment_id; $ i -> Benutzername = $ Benutzername; $ i-> link = $ link; $ i-> created_time = $ created_time; $ i-> image_url = $ image_url; $ i-> text = $ text; $ i-> save ();
Hier ist die erste Ergebnisseite meiner Suche. Sie können die Massen und die Cadillac-Limousine von Macklemore sehen. Ich habe mit meiner Suche eindeutig den Jackpot gefunden.
Auf Seite drei zeigt ein Instagram-Benutzer namens Joshua Lewis, wie Macklemore den Cadillac verlässt:
Hier ist Macklemore:
Dieses Beispiel zeigt deutlich die Leistungsfähigkeit der Instagram-Such-API. In wenigen Augenblicken fanden wir verschiedene Augenzeugen zu einer Veranstaltung aus dem Sommer 2013. Erstaunlich.
Wenn Sie interessiert sind, hier ein YouTube-Video von diesem Macklemore-Shooting:
Für mein zweites Beispiel werde ich nach Instagram-Benutzern suchen, die sich in der Nähe eines tragischen Unfalls in der Nähe befanden, in der ich vor einigen Wochen mitgearbeitet habe. Der motorisierte Roller einer Frau hat möglicherweise eine Fehlfunktion gehabt und sie verlor die Kontrolle, als sie gegen das hintere Ende eines vorbeifahrenden Autos stieß (zum Glück überlebte sie). Es passierte vor dem "Roastery" von Starbuck, einer unglücklichen neuen Touristenfalle hier in Seattle (ich bin kein Fan).
Mit Google Maps können wir die GPS-Koordinaten des Roosters auf 47.614264, -122.328008 sehen:
Der Artikel sagt uns, dass der Unfall um 17 Uhr passiert ist. Also verwenden wir diese Informationen, um unseren Moment zu erstellen:
Hier können Sie beide Momente sehen, die wir hinzugefügt haben:
Falls Sie sich gefragt haben, löscht das Radiergummi-Symbol die Ergebnisse der Suche für diesen Moment.
Hier sind die Ergebnisse für unsere Starbucks Roastery-Unfallrecherche. Keiner hat Fotos der Unfallszenen-Höflichkeit gepostet. Alle diese Instagram-Benutzer waren jedoch zu diesem Zeitpunkt in der Gegend und es lohnt sich möglicherweise, sich als Zeugen zu kontaktieren.
Einige waren Touristen wie diese Russin. Ich habe die Google-Übersetzung ihres Instagram-Beitrags hier veröffentlicht:
Andere besuchten den Starbucks-Römer-Verkostungsraum oder eine nahe gelegene Bar mit Austernrestaurant.
Ich hoffe, dass Sie sowohl das dunkle als auch das Licht der Geotagging-Technologie sehen können. Es gibt offensichtlich legitime Verwendungen, die diese Technologien zum Guten bieten können, und sie können offensichtlich missbraucht werden.
In der nächsten Episode werden wir Suchmomente mithilfe der Twitter-API implementieren.
In der Zwischenzeit können Sie gerne Ihre Fragen und Kommentare posten. Sie können mich auch auf Twitter @reifman erreichen oder mich direkt per E-Mail kontaktieren. Ich würde es besonders schätzen, von Journalisten und Strafverfolgungsbehörden zu hören, die diese Beispiele verwenden.
Sie können auch meine Tuts + Instructor-Seite durchsuchen, um andere Tutorials zu sehen, die ich geschrieben habe.