Dette er den første av en todelt serie om bruk av sosiale medier for å finne øyenvitner til viktige hendelser. I denne opplæringen veileder jeg deg gjennom Instagram API for å finne medlemmer som kunne ha vært nær en 2013 Macklemore videoskyting og en Seattle ulykkesscene i nærheten av hvor jeg ofte jobber.
I del to bruker vi Twitter API for å finne medlemmer nær en annen nybegynnelse. Jeg vil også ta opp noen av personvernproblemene knyttet til sosiale medier og dele din geografiske plassering. Du kan laste ned koden for hver episode ved å bruke GitHub-repository-lenken i sidefeltet. Du kan også være interessert i min Tuts + -serie, Bygg med Twitter-API.
Jeg deltar i diskusjonene. Hvis du har et spørsmål eller et emneforslag, vennligst legg inn en kommentar nedenfor. Du kan også nå meg på Twitter @ reifman eller email meg direkte.
Telefonene vi bærer i lommene, registrerer alle våre bevegelser, deler den med celleleverandører og ofte tredjepartsprogramvareforetak, hvis motivasjon generelt fokuserer på profitt. Men det er ikke bare telefoner og GPS som eksponerer oss. Jeg gjør nesten alltid kjøp med kredittkort, og eksponerer stort sett alle aspekter av livet mitt til kredittkortleverandører, hackere eller juridiske forespørsler.
I Wired's 2009 Vanish contest, hjalp jeg med å føre fangst av journalist Evan Ratliff. Etter å ha skrevet om folk som feiler deres død, prøvde Ratliff å forsvinne i 30 dager som en del av et forsøk. Hvis noen kunne finne ham personlig før tiden utløp, vil de få en $ 5000-premie. Ved hjelp av et Facebook-program som en honeypot, var jeg i stand til å lokke Ratliff til gjentatte ganger å dele sin plassering via IP-adresse, som jeg deretter bekreftet mot en Twitter-konto jeg hadde oppdaget han brukte. Med hjelp fra andre Vanish-deltagere landsomfattende, ringte vi inn hjelp på bakken i New Orleans - som kom i form av en glutenfri pizzabutikk (Ratliff var kjent for å være celiac) som klarte å spore ham i byen. I den historien ble ikke geotagging brukt til å finne ham, men IP-adresse geolokasjon. Du kan også lese Ratliffs historie her.
Men sosiale medier applikasjoner på telefonen bruker ofte geotagging, og lar en sti som brukerne ikke alltid forventer.
Mange mennesker skjønner ikke at de har forlatt geotagging på sine sosiale medier apps, fullt ut publisere sin plassering med alle sosiale medier innlegg. Dette inkluderte GOP-kongressen Aaron Schock. AP benyttet sin Instagram-kontoens geotags for å avsløre bruken av skattebetalers midler for ekstravagante private fly og andre luksuriøse aktiviteter. Se Instagram-kontoen avslører kongressmedlem som blåste offentlige midler på private fly og konserter.
Her er et Instagram-innlegg av Schock fra Patagonia. Legg merke til geotagikonet ved siden av "Perito Moreno isbreer":
Så, undersøkende geotags kan brukes til gode. I denne opplæringen skal jeg undersøke hvordan journalister eller rettshåndhevelse kan finne potensielle øyenvitner til viktige hendelser som en forbrytelse eller ulykkesscene ved hjelp av sosiale medier.
Men geotagging kan også brukes til ondskap. Det er definitivt viktige personvernimplikasjoner av integrasjonen i vår digitale livsstil.
Berkeley datavitenskapere og lærere bygget Klar eller Ikke? app for å demonstrere hvordan geotagging i Twitter og Instagram registrerer hvert eneste trekk. Se også Er din Twitter-konto å si for mye?
Her er Congresmmen Schocks Instagram-konto i Klar eller Ikke? app:
Her er Apple grunnlegger Steve Wozniaks Twitter-konto i appen. Interessant at kongressens reise er enda mer utbredt enn denne tech tycoon.
Geotagging på Instagram og Twitter er nøyaktig nok til å tillate noen å enkelt bestemme din bolig, arbeidssted og reise rutine.
Hvis du ikke ønsker å dele posisjonen din for at offentligheten skal se, eller å forlate en historisk sti av dine reiser, er du klar eller ikke? app tilbyr koblinger og guider for å slå disse funksjonene av (se etter linken på hjemmesiden). Oppriktig, jeg har slått av meg og jeg oppfordrer deg til å gjøre det også.
For de som ikke og mange vant ikke-deres sosiale medier innlegg kan være nyttig for rettshåndhevelse på jakt etter vitner til en kriminalitet scene eller journalister som ønsker å grave dypere inn i en historie. Jeg skal veilede deg gjennom hvordan du gjør det.
I denne episoden vil jeg veilede deg gjennom å bruke Instagram API. Jeg har gitt et GitHub-depot (lenken er i sidefeltet) for å laste ned for å prøve koden. Min "Eyewitness app" er skrevet i Yii Framework for PHP, som du kan lære mer om i min programmering med Yii2-serien for Tuts+.
Konfigurasjonsprosessen krever at du registrerer en utviklerkonto og et program med Instagram (og / eller Twitter).
Hvis du er et rettshåndhevingsbyrå eller en mediaenhet som ønsker mer informasjon, kan du gjerne kontakte meg direkte. Jeg ville også være interessert i noen vellykkede bruksområder av denne koden (for godt) - de ville lage en interessant oppfølgingshistorie.
La oss begynne med Instagram. Hvis du ennå ikke har en Instagram-konto, laster du ned programmet på telefonen og registrerer deg.
Geolocation-søk på Instagram er ganske sofistikert og gir et veldig greit grensesnitt for våre formål. Som du kan se nedenfor, må vi oppgi et sted breddegrad og lengdegrad, en geografisk radius (avstand) og et tidsintervall (min_timestamp og max_timestamp):
Gå til Instagram API-siden for utviklere og klikk Registrer din søknad:
Du må registrere deg for en utviklerkonto:
Deretter kan du registrere et nytt program for å motta klient-ID:
På Administrer klienter dashbordet, vil du se din klient-ID og Klientshemmelighet, så vær oppmerksom på disse:
Du kan klone GitHub-depotet i sidelinjen for å kjøre vår prøvekode.
cd ~ / Sites / eyew https://github.com/link-in-sidebar/eyew.git
Du må konfigurere din lokale Apache-konfigurasjon. Jeg bruker MAMP, så det ser ut som dette:
cd / programmer / MAMP / htdocs ln -s ~ / Nettsteder / eyew / web / Programmer / MAMP / htdocs / eyew
Du må opprette en database lokalt. Jeg bruker PHPMyAdmin til å lage en grafisk:
Deretter lager jeg en initialiseringsfil i /var/secure/eyew.ini med databasegodkjenningene og Instagram ID-ene og -tastene. Jeg beskrev denne prosessen nylig i en annen Tuts + opplæring: Beskytte tastene dine fra GitHub. Humoristisk, sjekket jeg ved et uhell i Instagram-tasten under testen (sukk) og måtte nullstille tastene mine etterpå.
Min ini-fil ser slik ut:
mysql_host = "localhost" mysql_db = "eyew" mysql_un = "xxxxxxxxx" mysql_pwd = "xxxxxxxxxxxx" instagram_client_id = "4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7" instagram_client_secret = "1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4"
Oppdater komposisjonen din og leverandørbiblioteker:
sudo komponist selvoppdatering sudo komponist oppdatering
Deretter initialiserer vår database. Den første overføringen installerer brukertabeller for vår Yii2-bruker av utvikler Dmeroff-utvidelse, og den andre oppretter våre appspesifikke tabeller:
./ yii migrere / opp -migrationPath = @ leverandør / dektrium / yii2-bruker / migreringer ./yii migrere / opp
Igjen kan du lære mer om å sette opp et Yii Framework-program i min programmering med Yii2-serien for Tuts+.
Her ser du hva du bør se når du besøker nettstedet i nettleseren din:
Et øyeblikk er et sted og tid som vi leter etter sosiale medier plakater som var til stede. Den består av en vennlig deskriptor, et sted (breddegrad og lengdegrad), en starttid og en varighet (i minutter). For mitt første eksempel, ser jeg etter Instagram-brukere som var til stede ved Macklemores videospill på kvelden onsdag 24. juli 2013 i Seattles landemerke Dick's Drive In. Videoproduksjonen og påfølgende folkemengder stanser området i flere timer.
Ved hjelp av Google Maps kan jeg få GPS-breddegraden og lengdegraden for Dick. Det er 47.6195 -122.321.
Fra artikkelen lærte jeg at produksjonen stoppet klokken 1. Jeg skal velge en starttid på 10 pm og en varighet på 3 timer.
Instagram aksepterer starttider i GMT, så jeg har hardkodet en åtte timers tidsendringsjustering fra min tidszone (PST). Du må kanskje endre dette i koden.
offentlig funksjon actionCreate () $ model = new Moment (); if ($ model-> load (Yii :: $ app-> request-> post ())) // konverter dato dato til tidsstempel $ model-> start_at = strtotime ($ model-> start_at); // juster for GMT $ modell-> start_at + = (3600 * 8); // validere skjemaet mot modellregler hvis ($ model-> validate ()) // alle innganger er gyldige $ model-> save (); returnere $ this-> omdirigering (['view', 'id' => $ model-> id]); ellers return $ this-> render ('create', ['model' => $ modell,]); ellers return $ this-> render ('create', ['model' => $ modell,]);
For å søke Instagram klikker du på kameraikonet nedenfor:
For å implementere mediesøk på Instagram bruker jeg Galen Grovers Instagram PHP-pakke. Selve søket er ganske enkelt: $ instagram-> searchMedia ($ this-> latitude, $ this-> lengdegrad, $ params);
setClientID (\ Yii :: $ app-> params ['instagram'] ['client_id']); $ end_at = $ this-> start_at + ($ this-> varighet * 60); $ params = array ('min_timestamp' => $ this-> start_at, 'max_timestamp' => $ end_at, 'avstand' => $ this-> avstand, 'count' => 50); $ media = $ instagram-> searchMedia ($ this-> latitude, $ this-> lengdegrad, $ params); foreach ($ media as $ m) hvis (isset ($ m-> bildetekst-> tekst)) $ caption = $ m-> bildetekst-> tekst; andre $ caption = "; $ i = nytt Gram (); $ i-> legg til ($ dette-> ID, $ m-> bruker-> brukernavn, $ m-> lenke, $ m-> created_time, $ m-> bilder-> miniatyr-> url, $ bildetekst);
Resultatene lagres i min Gram-tabell, som vi kan bla gjennom:
offentlig funksjon legg til ($ moment_id, $ brukernavn, $ link, $ created_time, $ image_url, $ tekst) if (! Gram :: find () -> where (['moment_id' => $ moment_id]) -> ogWhere ['link' => $ link]) -> ogWhere (['created_time' => $ created_time]) -> eksisterer ()) $ i = nytt Gram (); $ i-> moment_id = $ moment_id; $ i-> brukernavn = $ brukernavn; $ i-> link = $ link; $ i-> created_time = $ created_time; $ i-> image_url = $ image_url; $ i-> tekst = $ tekst; $ I-> Lagre ();
Her er den første siden med resultater fra søket mitt. Du kan se folkemengdene og Macklemores Cadillac limo kjører opp. Klart slo jeg jackpotten med søket mitt.
Så på side tre, har en Instagram-bruker, kalt Joshua Lewis, et skudd av Macklemore som forlater Cadillac:
Her er Macklemore:
Dette eksemplet viser tydelig kraften som Instagram-søke API gir. På bare noen få minutter fant vi en rekke øyenvitner til et arrangement fra sommeren 2013. Utrolig.
Hvis du er interessert, her er en YouTube-video av den Macklemore-skytingen:
For mitt andre eksempel skal jeg lete etter Instagram-brukere som var i området rundt tiden for en tragisk ulykke, nær hvor jeg jobbet sammen for noen uker siden. En kvinnes motoriserte scooter kan ha funksjonsfeil, og hun mistet kontrollen, krasjer inn i haleenden av en forbifarten bil (heldigvis overlevde hun). Det skjedde foran Starbucks "Roastery", en uheldig ny turistfelle her i Seattle (jeg er ikke en fan).
Ved hjelp av Google Maps kan vi se GPS-koordinatene til roasteren til å være 47.614264, -122.328008:
Artikkelen forteller oss at ulykken skjedde rundt klokken 17.00. Så vi bruker denne informasjonen til å skape vårt øyeblikk:
Her kan du se begge øyeblikkene vi har lagt til:
Hvis du lurte på, rydder viskelærikonet forbi resultatene for det øyeblikkssøket.
Her er resultatene for vår Starbucks Roastery ulykkesøk. Ingen postet bilder av ulykkesstedet - felles høflighet rådde. Imidlertid var alle disse Instagram-brukerne i området på den tiden og kan være verdt å kontakte som vitner.
Noen var turister som denne russiske kvinnen. Jeg har lagt inn Google-oversettelsen av Instagram-innlegget nedenfor:
Andre besøkte Starbucks-roastestuen eller en nærliggende bar og østersrestaurant.
Jeg håper at du kan se både mørket og lyset av geotagging teknologi. Det er åpenbare legitime bruksområder at disse teknologiene kan sørge for godt, og de kan åpenbart bli misbrukt.
I neste episode skal vi implementere søkemomenter ved hjelp av Twitter API.
I mellomtiden er du velkommen til å legge inn dine spørsmål og kommentarer nedenfor. Du kan også nå meg på Twitter @ reifman eller email meg direkte. Jeg vil spesielt sette pris på å høre fra journalister og rettshåndhevelse som benytter seg av disse eksemplene.
Du kan også bla gjennom min Tuts + instruktørside for å se andre opplæringsprogrammer jeg har skrevet.