
Инструмент OSINT для Instagram, который собирает все геотегированные места, доступные в профиле Instagram, чтобы отобразить их на карте и выгрузить в JSON.
TL;DR : ascineema, видео проекта
Инструмент для сбора геотегированных местоположений из профилей Instagram. Вывод в формате JSON и интерактивная карта.
sudo apt install chromium-chromedriver && chmod a+x /usr/bin/chromedriver
git clone https://github.com/bernsteining/instaloctrack
cd instaloctrack
pip3 install .
Или используйте Docker:
sudo docker build -t instaloctrack -f Dockerfile .
instaloctrack -h
usage: instaloctrack [-h] [-t TARGET_ACCOUNT] [-l LOGIN] [-p PASSWORD] [-v]
Инструмент сбора данных о местоположении из Instagram. Использование: python3 instaloctrack.py -t <целевой_аккаунт>
необязательные аргументы:
-h, --help показать это справочное сообщение и выйти
-t TARGET_ACCOUNT, --target TARGET_ACCOUNT
Профиль Instagram для исследования
-l LOGIN, --login LOGIN
Профиль Instagram для подключения, чтобы получить доступ
к постам Instagram целевого аккаунта
-p PASSWORD, --password PASSWORD
Пароль от профиля Instagram для подключения
-v, --visual Запускает графический интерфейс Chromium, иначе Chromium работает в безголовом режиме
например
instaloctrack -t <target_account>
Если целевой профиль является закрытым и у вас есть аккаунт, подписанный на целевой профиль, вы можете собрать данные через авторизованную сессию:
instaloctrack -t <target_account> -l <your_account> -p <your_password>
или с помощью Docker:
sudo docker run -v /tmp/output:/tmp/output instaloctrack -t <target_account> -o /tmp/output
Сначала мы получаем все ссылки на изображения аккаунта, прокручивая весь профиль Instagram с помощью веб-драйвера Selenium.
Затем мы асинхронно (asyncio) обрабатываем каждую ссылку на изображение, проверяем, содержит ли описание изображения местоположение, и извлекаем данные о местоположении, если оно есть, а также временную метку.
Поскольку Instagram не предоставляет GPS-координаты, а мы получаем только названия мест, нам нужно их геокодировать (т.е. получить GPS-координаты по названию места).
Для этого я использовал отличный API Nominatim, который использует OpenStreetMap. Для нашего использования не требуется ключ API, и мы соблюдаем Политику использования Nominatim, запрашивая GPS-координаты один раз в секунду.
В конце концов, когда у нас есть все GPS-координаты, мы генерируем HTML-файл (с помощью шаблонизатора jinja2) со встроенным Javascript, который отображает Open Street Map (благодаря библиотеке Leaflet) со всеми нашими отмеченными местоположениями. И снова для этого шага не требуется ключ API.
Кроме того, данные, собранные скриптом (названия мест, временные метки, GPS-координаты, ошибки), сохраняются в JSON-файл для последующего использования.
В качестве примера приведен вывод для профиля бывшего президента Франции в Instagram @fhollande:

Тепловая карта:

Информация, доступная при нажатии на маркер:

Статистика по данным о местоположениях:

Дамп данных JSON (только часть, чтобы показать формат для конкретного местоположения):
{
"link": "https://www.instagram.com/p/-Q_9EvR9eu",
"place": {
"id": "290297",
"name": "Musée du quai Branly - Jacques Chirac",
"slug": "musee-du-quai-branly-jacques-chirac",
"street_address": " 37 quai Branly",
" zip_code": " 75007",
" city_name": " Paris",
" region_name": " ",
" country_code": " FR"
},
"timestamp": "2015-11-19",
"gps": {
"lat": "48.8566969",
"lon": "2.3514616"
}
}