SearchPhone собирает цифровой след по номеру телефона через открытые API
Недавно наткнулся на утилиту SearchPhone от исследователя Виктора Банкаяна (Victor Bancayan). Инструмент автоматизирует рутинный сбор открытых данных (OSINT) по телефонным номерам. Обычно для нормальной проверки приходится открывать пять вкладок в браузере, запускать поиск по доркам в Google, проверять утекшие базы и смотреть привязки в коде на GitHub. Здесь всю эту рутину запаковали в один Python-скрипт с параллельным опросом сервисов.

Что умеет утилита
Скрипт принимает номер телефона в международном формате и запускает асинхронные запросы к нескольким внешним источникам. На выходе формируется консольный отчет и файл с результатами.
Вот основные источники и функции, задействованные в проверке:
- Валидация и парсинг формата через библиотеку phonenumbers с определением страны и таймзоны
- Поиск упоминаний в поисковой выдаче Google через SerpAPI и прямые запросы к DuckDuckGo
- Проверка публичных репозиториев GitHub на случай, если номер забыли в конфигах или коммитах
- Поиск постов и комментариев на Reddit
- Определение сотового оператора и геолокации через Numverify API
- Проверка компрометации в логах стилеров через бесплатный API Hudson Rock Cavalier
Особенно интересен последний пункт. Интеграция с базой Hudson Rock помогает сразу увидеть, фигурировал ли номер телефона на зараженных инфостилерами машинах. При этом для Hudson Rock даже не требуется API-ключ.

Настройка и запуск
Для работы понадобится Python 3.8 или новее. Скрипт использует несколько внешних сервисов, поэтому перед запуском нужно получить бесплатные токены.
Клонируем репозиторий и устанавливаем зависимости:
git clone https://github.com/HackUnderway/SearchPhone.git
cd SearchPhone
pip install -r requirements.txt
Дальше создаем конфигурационный файл из шаблона:
cp example.env .env
В .env нужно прописать свои ключи:
NUMVERIFY_KEY=ваш_ключ_numverify
SERPAPI_KEY=ваш_ключ_serpapi
GITHUB_TOKEN=ваш_персональный_токен_github
У бесплатных тарифов есть лимиты, но для периодических проверок их хватает:
- Numverify дает 100 запросов в месяц.
- SerpAPI выделяет 250 поисковых запросов в месяц.
- GitHub Personal Access Token дает лимит до 5000 запросов в час.
- Hudson Rock работает без ключей и ограничений по подписке.
После настройки запускаем скрипт:
python3 search_phone.py
Программа выполнит поиск параллельно, выведет цветной лог в терминал и сохранит результаты в формате JSON и PDF.
Где это пригодится на практике
Инструмент создавался под задачи практической безопасности и расследований. В повседневной работе он закрывает сразу несколько сценариев.
Во-первых, это аудит собственных контактов или контактов сотрудников компании. Полезно вовремя обнаружить, что чей-то корпоративный или личный номер утек в публичный коммит на GitHub или засветился в логах вредоносного софта.
Во-вторых, утилита ускоряет первичный сбор данных при реагировании на инциденты и расследовании фишинговых атак, когда в распоряжении аналитика есть только входящий номер.
В-третьих, проект можно разобрать на части как пример работы с asyncio и асинхронными HTTP-клиентами для одновременного опроса разнородных API.
Итоги
SearchPhone не делает ничего сверхъестественного, чего нельзя было бы сделать руками в браузере. Но он берет на себя рутину: форматирует вывод, собирает данные за секунды и аккуратно складывает отчеты в PDF и JSON.
Если вам периодически приходится проверять номера в рамках OSINT или проверки безопасности, скрипт сбережет пару десятков минут в день. Забрать проект можно из репозитория HackUnderway/SearchPhone.
