Aceasta este prima dintr-o serie de două părți privind folosirea social media pentru a localiza martori oculari la evenimente importante. În acest tutorial vă voi îndruma folosind API-ul Instagram pentru a găsi membri care ar fi putut fi aproape de un film Macklemore 2013 și de o scenă de accident din Seattle lângă locul unde lucrez adesea.
În partea a doua, vom folosi API-ul Twitter pentru a găsi membri în apropierea unui eveniment recent. Voi aborda, de asemenea, unele probleme de confidențialitate legate de social media și schimbul de localizare. Puteți descărca codul pentru fiecare episod utilizând link-ul de depozit GitHub din bara laterală. Ați putea fi, de asemenea, interesat de seria Tuts +, construirea cu API-ul Twitter.
Particip la discuții. Dacă aveți o sugestie de întrebare sau subiect, vă rugăm să postați un comentariu de mai jos. Puteți să mă contactați și pe Twitter @reifman sau să mă trimiteți direct prin e-mail.
Telefoanele pe care le purtăm în buzunarele noastre înregistrează fiecare mișcare, împărtășind-o cu furnizorii de celule și, adesea, cu firmele de software terță parte ale căror motivații se concentrează în general pe profit. Dar nu doar telefoanele și GPS-ul ne expun - aproape că fac întotdeauna cumpărături cu cărți de credit, expunând aproape orice aspect al vieții mele furnizorilor de carduri de credit, hackerilor sau cererilor legale.
În concursul Wired 2009 Vanish, am ajutat la conducerea capturării jurnalistului Evan Ratliff. După ce a scris despre persoanele care le falsau moartea, Ratliff a încercat să dispară timp de 30 de zile ca parte a unui experiment. Dacă cineva l-ar fi putut găsi personal înainte de expirarea timpului, ar primi un premiu de 5.000 de dolari. Folosind o aplicație Facebook ca un honeypot, am reușit să-l atrag pe Ratliff să-și împărtășească în mod repetat locația prin adresa IP, pe care apoi l-am verificat împotriva unui cont Twitter pe care l-am descoperit că îl folosea. Cu ajutorul altor participanți Vanish la nivel național, am apelat la asistență la fața locului din New Orleans - care a venit sub forma unui magazin de pizza fără gluten (Ratliff era cunoscut ca fiind celiac), care a reușit să-l urmărească în oraș. În acea poveste, geotagging-ul nu a fost folosit pentru a-l găsi, ci o adresă IP geolocație. Puteți citi și povestea lui Ratliff aici.
Dar aplicațiile de social media de pe telefonul nostru utilizează în mod frecvent geotagging-ul, lăsând un traseu pe care utilizatorii nu îl anticipează întotdeauna.
Mulți oameni nu-și dau seama că au părăsit geotagging-ul pe aplicațiile lor de social media, publicând pe deplin locația lor cu fiecare post social media. Aceasta a inclus congresmanul GOP Aaron Schock. AP folosea geotagurile contului său Instagram pentru a-și expune utilizarea fondurilor contribuabililor pentru zboruri private extravagante și alte activități de lux. Consultați contul Instagram expune congresmanul care a bătut fonduri publice în zboruri și concerte private.
Iată un post Instagram al lui Schock din Patagonia - notați pictograma geografică lângă "Ghețarul Perito Moreno„:
Deci, investigarea geotagurilor poate fi folosită pentru totdeauna. În acest tutorial, voi explora modul în care jurnaliștii sau organele de drept ar putea localiza potențialii martori oculari la evenimente importante, cum ar fi o crimă sau o scenă de accidente folosind social media.
Cu toate acestea, geotagging-ul poate fi folosit și pentru rău. Există cu siguranță implicații importante legate de intimitatea integrării sale în stilul nostru de viață digital.
Berkeley oamenii de stiinta de calculator și educatori construit Gata sau nu? app pentru a arăta cum geotagging-ul în Twitter și Instagram înregistrează fiecare mișcare. A se vedea, de asemenea, este contul dvs. Twitter spunând prea mult?
Iată contul Instagram al Congresmmen Schock în Ready or Not? app:
Iată contul Twitter al co-fondatorului Apple, Steve Wozniak, din aplicație. Interesant că călătoria congresmanului este și mai răspândită decât acest magnat.
Geotagging-ul pe Instagram și Twitter este suficient de precis pentru a permite cineva să vă determine cu ușurință locul de reședință, locul de muncă și rutina de călătorie.
Dacă nu doriți să vă împărtășiți locația pentru a vedea publicul sau pentru a lăsa un traseu istoric al călătoriilor dvs., Ready or Not? aplicația oferă link-uri și ghiduri pentru a dezactiva aceste funcții (căutați link-ul de pe pagina de pornire). Sincer, m-am dezactivat și vă încurajez să faceți asta.
Pentru cei care nu - și mulți nu vor - posturile lor de social media pot fi utile pentru aplicarea legii în căutarea martorilor unei scene de crimă sau a jurnaliștilor care doresc să se implice mai adânc într-o poveste. Te voi îndruma cum să faci asta.
În acest episod, vă voi îndruma folosind API-ul Instagram. Am furnizat un depozit GitHub (link-ul este în bara laterală) pentru a descărca pentru a încerca codul. "Aplicația martor ocular" este scrisă în cadrul Yii pentru PHP, despre care puteți afla mai multe despre programul meu de programare cu seria Yii2 pentru Tuts+.
Procesul de configurare necesită înregistrarea unui cont de dezvoltator și a unei aplicații cu Instagram (și / sau Twitter).
Dacă sunteți o agenție de aplicare a legii sau o entitate media care ar dori mai multe informații, vă rugăm să nu ezitați să mă contactați direct. Aș fi, de asemenea, interesat de orice utilizare reușită a acestui cod (pentru bine) - ar face o poveste interesantă de urmărire.
Să începem cu Instagram. Dacă nu aveți încă un cont Instagram, descărcați aplicația de pe telefon și înregistrați-vă.
Căutarea geolocație pe Instagram este destul de sofisticată și oferă o interfață foarte simplă pentru scopurile noastre. După cum vedeți mai jos, trebuie să furnizăm o locație latitudine și longitudine, o rază geografică (distanţă) și un interval de timp (min_timestamp și max_timestamp):
Accesați pagina API Instagram pentru dezvoltatori și dați clic pe Înregistrați-vă cererea:
Va trebui să vă înscrieți pentru un cont de dezvoltator:
Apoi, puteți înregistra o nouă aplicație pentru a primi codul dvs. de client:
Pe Gestionați clienții tablou de bord, veți vedea dvs. ID-ul clientului și Secretul clientului, deci ia notă de acestea:
Puteți clona depozitul GitHub situat în bara laterală pentru a rula codul nostru de probă.
cd ~ / Sites / eyew https://github.com/link-in-sidebar/eyew.git
Va trebui să configurați configurația locală Apache. Eu folosesc MAMP, așa că arată cam așa:
cd / Aplicații / MAMP / htdocs ln -s ~ / Site-uri / eyew / web / Aplicații / MAMP / htdocs / eyew
Trebuie să creați o bază de date locală. Eu folosesc PHPMyAdmin pentru a crea unul grafic:
Apoi, creez un fișier de inițializare în /var/secure/eyew.ini cu acreditările mele de bază de date și ID-urile și cheile Instagram. Am descris acest proces recent într-un alt tutorial Tuts +: Protejarea cheilor de la GitHub. Cu umor, am verificat accidental cheia mea Instagram în timpul testării (oftat) și a trebuit să-mi resetez cheile ulterior.
Fișierul meu inițial arată astfel:
mysql_host = "localhost" mysql_db = "eyew" mysql_un = "xxxxxxxxx" mysql_pwd = "xxxxxxxxxxxx" instagram_client_id = "4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7" instagram_client_secret = "1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4"
Actualizați-vă Compozitorul și bibliotecile sale de furnizori:
sudo compozitor auto-actualizare sudo compozitor actualizare
Apoi inițializați baza noastră de date. Prima migrare instalează tabelele utilizatorilor pentru extensia Dmeroff a dezvoltatorului nostru Yii2-User, iar cea de-a doua creează tabelele specifice pentru aplicații:
./ yii migrații / up - migrarePath = @ vânzător / dektrium / yii2-utilizator / migrații ./yii migrați / up
Din nou, puteți afla mai multe despre configurarea unei aplicații Yii Framework în programul meu de programare cu Yii2 pentru Tuts+.
Iată o privire asupra a ceea ce ar trebui să vedeți atunci când vizitați site-ul în browser-ul dvs.:
Un moment este un loc și un timp pentru care căutăm postere de social media care erau prezente. Se compune dintr-un descriptor prietenos, o locație (latitudine și longitudine), un timp de pornire și o durată (în minute). Pentru primul meu exemplu, caut utilizatorii Instagram care au fost prezenți la filmarea lui Macklemore în seara zilei de miercuri, 24 iulie 2013, la reperul lui Dick's Drive din Seattle. Producția video și mulțimile care au urmat au închis zona de ore întregi.
Folosind Hărți Google, pot obține latitudinea și longitudinea GPS pentru Dick's. Este 47.6195 -122.321.
Din articol, am aflat că producția a fost oprită la ora 1 dimineața. Voi alege un timp de start de la ora 22 și o durată de 3 ore.
Instagram acceptă orele de pornire în GMT, așa că am codificat hardcode o ajustare a schimbării timpului de opt ore din zona mea de fus orar (PST). Este posibil să fie necesar să modificați acest lucru în cod.
funcția publică funcțiaCreate () $ model = Moment nou (); dacă ($ model-> încărcați (Yii :: $ app-> request-> post ())) // convertiți data de dată la marca de timp $ model-> start_at = strtotime ($ model-> start_at); // ajustați pentru GMT $ model-> start_at + = (3600 * 8); // validează formularul conform regulilor modelului dacă ($ model-> validate ()) // toate intrările sunt valide $ model-> save (); returnați $ this-> redirect (['view', 'id' => $ model-> id]); altceva return $ this-> render ('crea', ['model' => $ model,]); altceva return $ this-> render ('crea', ['model' => $ model,]);
Pentru a căuta Instagram, faceți clic pe pictograma camerei de mai jos:
Pentru a implementa căutarea mea media pe Instagram, folosesc pachetul PHP Instagram al lui Galen Grover. Căutarea reală este destul de simplă: $ instagram-> searchMedia ($ această-> latitudine, $ this-> longitude, $ params);
setClientID (\ Yii :: $ app-> params ['instagram'] ['client_id']); $ end_at = $ this-> start_at + ($ această-> durată * 60); $ params = array ('min_timestamp' => $ this-> start_at, 'max_timestamp' => $ end_at, 'distance' => $ this-> distance, 'count' => 50); $ media = $ instagram-> căutareMedia ($ this-> latitude, $ this-> longitude, $ params); foreach ($ media ca $ m) if (isset ($ m-> caption-> text)) $ caption = $ m-> caption-> text; altceva $ caption = "; $ i = new Gram (); $ i-> add ($ this-> id, $ m-> user-> username, $ m-> link, $ m-> imagini-> thumbnail-> url, $ caption);
Rezultatele sunt stocate în tabelul meu Gram, pe care apoi îl putem naviga:
funcția publică adăugă ($ moment_id, $ username, $ link, $ created_time, $ image_url, $ text) if (! Gram :: find () -> unde (['moment_id' => $ moment_id] ['link' => $ link]) -> și unde (['created_time' => $ created_time]) -> există ()) $ i = new Gram (); $ i-> moment_id = $ moment_id; $ i-> username = $ username; $ i-> link = $ link; $ i-> create_time = $ create_time; $ i-> image_url = $ imagine_url; $ i-> text = $ text; $ J-> Salvare ();
Iată prima pagină a rezultatelor căutării mele. Puteți vedea mulțimile și limuzina Cadillac a lui Macklemore care conduce. În mod evident, am lovit jackpot-ul cu căutarea mea.
Apoi, pe pagina trei, un utilizator Instagram numit Joshua Lewis are o șansă de Macklemore ieșind din Cadillac:
Iată Macklemore:
Acest exemplu arată în mod clar puterea furnizată de API-ul de căutare Instagram. În doar câteva momente, am găsit o varietate de martori oculari la un eveniment din vara anului 2013. Uimitor.
Dacă sunteți interesat, iată un videoclip YouTube despre acel film Macklemore:
Pentru cel de-al doilea exemplu, voi căuta utilizatori Instagram care se aflau în zonă în jurul unui accident tragic de lângă locul unde lucram acum câteva săptămâni. Scuterele motorizate ale unei femei ar fi putut funcționa defectuos și a pierdut controlul, coborând în capătul unei mașini care trecea (din fericire, a supraviețuit). Sa întâmplat în fața "Roșterii" Starbuck, o nouă capcană turistică nefericită aici, în Seattle (nu sunt un fan).
Folosind Google Maps, putem vedea coordonatele GPS ale mănăstirii 47.614264, -122.328008:
Articolul ne spune că accidentul sa produs în jurul orei 17:00. Prin urmare, vom folosi aceste informații pentru a crea Momentul nostru:
Aici puteți vedea ambele momente pe care le-am adăugat:
În cazul în care vă întrebați, pictograma radieră curăță rezultatele anterioare pentru căutarea momentului.
Iată rezultatele pentru căutarea Starbucks Roastery. Nimeni nu a postat fotografii ale scenei accidentului - curtoazia comună a predominat. Cu toate acestea, toți acești utilizatori ai Instagram erau în acel moment în zonă și ar fi meritat să contacteze ca martori.
Unii au fost turiști ca această femeie rusă - am postat traducerea Google a postului Instagram de mai jos:
Alții au vizitat sala de degustare a grădinilor Starbucks sau un bar din apropiere și restaurantul de stridii.
Sper că puteți vedea atât întunericul, cât și lumina tehnologiei de geotagging. Există utilizări legitime evidente pe care aceste tehnologii le pot furniza pentru binele și, evident, pot fi abuzate.
În următorul episod, vom implementa momentele de căutare folosind API-ul Twitter.
Între timp, vă rugăm să postați întrebările și comentariile de mai jos. Puteți să mă contactați și pe Twitter @reifman sau să mă trimiteți direct prin e-mail. Aș aprecia în special audierea de la jurnaliști și organele de drept care utilizează aceste exemple.
De asemenea, puteți să răsfoiți pagina instructorului Tuts + pentru a vedea alte tutoriale pe care le-am scris.