Статьи

Использование социальных сетей для поиска свидетелей важных событий

Конечный продукт
Что вы будете создавать

Это первая из двух частей серии об использовании социальных сетей для поиска свидетелей важных событий. В этом руководстве я познакомлю вас с использованием API Instagram, чтобы найти участников, которые могли быть рядом с видеосъемкой в ​​Маклморе в 2013 году и местом происшествия в Сиэтле, где я часто работаю.

Во второй части мы будем использовать Twitter API, чтобы найти участников рядом с другим недавним событием. Я также расскажу о некоторых вопросах конфиденциальности, связанных с социальными сетями и информацией о вашем местоположении. Вы можете скачать код для каждого эпизода, используя ссылку на репозиторий GitHub на боковой панели. Вы также можете быть заинтересованы в моей серии Tuts +, Создание с помощью API Twitter .

Я участвую в обсуждениях. Если у вас есть вопрос или предложение по теме, пожалуйста, оставьте комментарий ниже. Вы также можете связаться со мной в Twitter @reifman или написать мне напрямую.

Телефоны, которые мы носим в наших карманах, записывают каждый наш шаг, делясь им с сотовыми провайдерами и часто сторонними софтверными компаниями, чьи мотивы обычно фокусируются на прибыли. Но это не только телефоны и GPS, которые выставляют нас — я почти всегда делаю покупки с помощью кредитных карт, выставляя практически все аспекты моей жизни поставщикам кредитных карт, хакерам или юридическим запросам.

В 2009 году на конкурсе Wired в Ванише я участвовал в захвате журналиста Эвана Ратлиффа. После того, как он написал о людях, которые подделывают свои смерти, Ратлифф попытался исчезнуть на 30 дней в рамках эксперимента. Если кто-нибудь сможет найти его лично до истечения времени, он получит приз в размере 5000 долларов. Используя приложение Facebook в качестве приманки, я смог заманить Рэтлиффа к тому, чтобы он постоянно делился своим местоположением по IP-адресу , который я затем проверил по учетной записи в Твиттере, которую обнаружил, что он использовал. С помощью других участников Vanish по всей стране, мы вызвали помощь на местах в Новом Орлеане, который представлял собой магазин безглютеновой пиццы (Ратлифф, как известно, был целиакией), которому удалось выследить его в городе. В этой истории геотеггинг использовался не для того, чтобы найти его, а для геолокации IP-адреса. Вы также можете прочитать историю Ратлифа здесь .

Но приложения социальных сетей на нашем телефоне часто используют геотеггинг, оставляя след, который пользователи не всегда ожидают.

Многие люди не понимают, что они оставили геотеги в своих приложениях для социальных сетей, полностью публикуя информацию о своем местоположении в каждой публикации в социальных сетях. Это включало конгрессмена Республиканской партии Аарона Шока. AP использовал геотеги своего аккаунта в Instagram, чтобы разоблачить использование средств налогоплательщиков для экстравагантных частных перелетов и других роскошных мероприятий. См. Instagram аккаунт разоблачает конгрессмена, который взорвал государственные средства на частных рейсах и концертах .

Вот пост в инстаграме Шока из Патагонии — обратите внимание на значок геотега рядом с « Ледник Перито Морено »:

Конгрессмен Аарон Шок на леднике Перито Морено

Таким образом, исследующие геотеги могут быть использованы навсегда. В этом уроке я собираюсь изучить, как журналисты или правоохранительные органы могут найти потенциальных свидетелей важных событий, таких как место преступления или происшествия, с помощью социальных сетей.

Тем не менее, геотеггинг также может быть использован для зла. Его интеграция в наш цифровой образ жизни определенно имеет важные последствия для конфиденциальности.

Компьютерные ученые и преподаватели из Беркли построили Готово или Нет? приложение, чтобы продемонстрировать, как геотеггинг в Twitter и Instagram записывают каждый наш шаг. См. Также Ваш аккаунт в Twitter слишком много говорит?

Вот аккаунт Instagram Congresmmen Schock в разделе Готов или нет? приложение:

Конгрессмен Аарон Шок в мире путешествий - готов или нет

Вот аккаунт соучредителя Apple Стива Возняка в Твиттере в приложении. Интересно, что путешествия конгрессмена еще более распространены, чем этот технический магнат.

Стив Вознякс путешествует по Твиттеру - готов или нет

Географические метки в Instagram и Twitter достаточно точны, чтобы кто-то мог легко определить ваше место жительства, место работы и рутину путешествия.

Если вы не хотите делиться своим местоположением с общественностью, чтобы увидеть или оставить исторический след ваших путешествий, готов или нет? Приложение предлагает ссылки и руководства по отключению этих функций (ищите ссылку на своей домашней странице). Честно говоря, я выключил свою, и я призываю вас сделать это тоже.

Для тех, кто этого не делает — и многие этого не делают — их посты в социальных сетях могут быть полезны для правоохранительных органов, которые ищут свидетелей на месте преступления или журналистов, желающих углубиться в историю. Я собираюсь рассказать вам, как это сделать.

В этом эпизоде ​​я проведу вас через API Instagram. Я предоставил вам GitHub-репозиторий (ссылка находится на боковой панели), чтобы вы могли загрузить его, чтобы опробовать код. Мое «приложение для свидетелей» написано в Yii Framework для PHP , о котором вы можете узнать больше в моей серии «Программирование с Yii2 для Tuts +» .

Процесс настройки требует, чтобы вы зарегистрировали учетную запись разработчика и приложение в Instagram (и / или Twitter).

Если вы являетесь сотрудником правоохранительных органов или СМИ, и вам нужна дополнительная информация, свяжитесь со мной напрямую . Я также был бы заинтересован в любом успешном использовании этого кода (навсегда) — они сделали бы интересную последующую историю.

Начнем с Instagram. Если у вас еще нет учетной записи Instagram, загрузите приложение на свой телефон и зарегистрируйтесь.

Поиск геолокации в Instagram довольно сложен и предлагает очень простой интерфейс для наших целей. Как вы можете видеть ниже, нам нужно указать широту и долготу местоположения, географический радиус ( расстояние ) и временной диапазон ( min_timestamp и max_timestamp ):

Instagram Media Search

Посетите страницу Instagram API для разработчиков и нажмите « Зарегистрировать приложение» :

Instagram Привет Разработчики

Вам нужно зарегистрировать аккаунт разработчика:

Регистрация разработчика в Instagram

Затем вы можете зарегистрировать новое приложение, чтобы получить свой идентификатор клиента:

Instagram Регистрация нового клиента

На панели управления клиентами вы увидите свой идентификатор клиента и секрет клиента , поэтому запишите их:

Instagram Управление клиентами

Вы можете клонировать репозиторий GitHub, расположенный на боковой панели, чтобы запустить наш пример кода.

1
2
cd ~/Sites/eyew
https://github.com/link-in-sidebar/eyew.git

Вам нужно будет настроить локальную конфигурацию Apache. Я использую MAMP, так что это выглядит примерно так:

1
2
cd /Applications/MAMP/htdocs
ln -s ~/Sites/eyew/web /Applications/MAMP/htdocs/eyew

Вам нужно создать базу данных локально. Я использую PHPMyAdmin для создания одного графически:

Создайте свою базу данных очевидцев

Затем я создаю файл инициализации в /var/secure/eyew.ini со своими учетными данными базы данных, идентификаторами и ключами Instagram. Я описал этот процесс недавно в другом уроке Tuts +: Защита ваших ключей от GitHub . Забавно, но я случайно зарегистрировал свой ключ в Instagram во время тестирования (вздох) и впоследствии мне пришлось сбросить ключи.

Мой INI-файл выглядит так:

1
2
3
4
5
6
mysql_host=»localhost»
mysql_db=»eyew»
mysql_un=»xxxxxxxxx»
mysql_pwd=»xxxxxxxxxxxx»
instagram_client_id = «4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7»
instagram_client_secret = «1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4»

Обновите ваш Composer и его библиотеки поставщиков:

1
2
sudo composer self-update
sudo composer update

Затем инициализируйте нашу базу данных. Первая миграция устанавливает пользовательские таблицы для нашего расширения Ymer2-User от разработчика Dmeroff , а вторая создает наши таблицы для конкретных приложений:

1
2
./yii migrate/up —migrationPath=@vendor/dektrium/yii2-user/migrations
./yii migrate/up

Опять же, вы можете узнать больше о настройке приложения Yii Framework из серии «Программирование с Yii2 для Tuts +» .

Вот посмотрите, что вы должны увидеть, когда вы посещаете сайт в браузере:

Домашняя страница очевидца

Момент — это место и время, для которого мы ищем постеры в социальных сетях. Он состоит из понятного дескриптора, местоположения (широта и долгота), времени начала и продолжительности (в минутах). В качестве моего первого примера я ищу пользователей Instagram, которые присутствовали на съемках видео Маклмора вечером в среду, 24 июля 2013 года, в ориентире Сиэтла Dick’s Drive In . Видеопроизводство и последовавшие за ним толпы на несколько часов остановили район.

Используя Google Maps, я могу получить широту и долготу GPS для Дика. Это 47,6195 -122,321.

Дикс Драйв в Бродвее Сиэтл GPS в Google Maps

Из статьи я узнал, что производство закрыли в 1 час ночи. Я собираюсь выбрать время начала 10 вечера и продолжительность 3 часа.

Создать момент

Instagram принимает время начала по Гринвичу, поэтому я жестко запрограммировал восьмичасовую корректировку изменения времени из своего часового пояса (PST). Возможно, вам придется изменить это в коде.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function actionCreate()
   {
       $model = new Moment();
        if ($model->load(Yii::$app->request->post())) {
           // convert date time to timestamp
           $model->start_at = strtotime($model->start_at);
           // adjust for GMT
           $model->start_at+=(3600*8);
           // validate the form against model rules
           if ($model->validate()) {
               // all inputs are valid
               $model->save();
               return $this->redirect([‘view’, ‘id’ => $model->id]);
           } else {
             return $this->render(‘create’, [
                 ‘model’ => $model,
             ]);
           }
       } else {
           return $this->render(‘create’, [
               ‘model’ => $model,
           ]);
       }
   }

Для поиска в Instagram мы нажимаем значок камеры ниже:

Сетка индекса моментов

Для реализации поиска по медиа в Instagram я использую PHP-пакет от Galen Grover . Фактический поиск довольно прост: $instagram->searchMedia( $this->latitude, $this->longitude,$params );

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
 
namespace app\models;
 
use Yii;
use yii\db\ActiveRecord;
use app\models\Gram;
use Instagram;
 
 
public function searchInstagram() {
       $instagram = new Instagram\Instagram;
       $instagram->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();
       }
     }

Результаты сохраняются в моей таблице Грамма, которую мы затем можем просмотреть:

01
02
03
04
05
06
07
08
09
10
11
12
public function 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])->exists()) {
       $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->save();
     }
   }

Вот первая страница результатов моего поиска. Вы можете видеть, как толпы и лимузин Маклмора подъезжают. Ясно, что я сорвала куш с поиском.

Результаты поиска Macklemore

Затем на третьей странице пользователь Instagram по имени Джошуа Льюис делает снимок Маклмора, выходящего из «Кадиллака»:

Больше результатов поиска Macklemore

Вот Маклмор :

Маклмор прибывает в Instagram

Этот пример ясно демонстрирует всю мощь API поиска в Instagram. Всего за несколько минут мы нашли множество очевидцев события лета 2013 года. Удивительно.

Если вам интересно, вот видео на YouTube, в котором снимается Маклмор:

В качестве второго примера я собираюсь найти пользователей Instagram, которые находились в этом районе во время трагической аварии рядом с тем местом, где я сотрудничал несколько недель назад. Моторизованный самокат женщины, возможно, неисправен, и она потеряла управление , врезавшись в хвостовую часть проезжающей машины (к счастью, она выжила). Это произошло перед «Roastery» в Старбаке, несчастной новой туристической ловушкой здесь, в Сиэтле (я не фанат).

Используя Google Maps, мы можем видеть GPS координаты монастыря 47.614264, -122.328008:

Starbucks Roastery в Сиэтле GPS в Google Maps

В статье говорится, что авария произошла около 5 часов вечера. Поэтому мы будем использовать эту информацию для создания нашего Момента:

Создать второй момент

Здесь вы можете увидеть оба добавленных нами момента:

Список ваших моментов

Если вам интересно, значок ластика удаляет прошлые результаты поиска в данный момент.

Вот результаты нашего поиска аварии в Starbucks Roastery. Никто не опубликовал фотографии места происшествия — преобладало обычное вежливость Тем не менее, все эти пользователи Instagram были в то время, и, возможно, стоит обратиться в качестве свидетелей.

Инстаграм медиа поиск для аварии Starbucks Roastery

Некоторые были туристами, как эта русская женщина — я разместил перевод Google ее поста в Instagram ниже:

Инстаграм медиа поиск для Starbucks Roastery Авария российского туриста

Другие посетили дегустационный зал Starbucks или близлежащий бар и устричный ресторан .

Я надеюсь, что вы можете увидеть и тьму и свет технологии геотеггинга. Существуют очевидные законные применения, которые эти технологии могут обеспечить навсегда, и, очевидно, ими можно злоупотреблять.

В следующем эпизоде ​​мы собираемся реализовать моменты поиска с помощью API Twitter.

А пока, пожалуйста, не стесняйтесь оставлять свои вопросы и комментарии ниже. Вы также можете связаться со мной в Twitter @reifman или написать мне напрямую. Я был бы особенно признателен журналистам и правоохранительным органам, которые используют эти примеры.

Вы также можете просмотреть мою страницу инструктора Tuts +, чтобы увидеть другие уроки, которые я написал.