Ник «ivanpetrov» есть на тысячах сайтов, и почти везде за ним разные люди. Сканер честно отвечает: аккаунт существует. Но вопрос аналитика другой — это тот самый человек или нет? Если сложить всё найденное в один профиль, получится персонаж с тремя городами, пятью работами и чужими фотографиями. Такой профиль хуже, чем никакого: он уверенно врёт.
Шаг 1. Баллы уверенности для каждого аккаунта
Каждому найденному аккаунту Oracul ставит баллы. Совпадение имени даёт больше всего, несовпадение — сильный минус: «Igor Varga» при цели «Андрей Соколов» — это другой человек, даже если ник тот же. Плюс дают подтверждение несколькими движками, заполненный профиль и сильная площадка вроде GitHub или Keybase, где аккаунты чаще настоящие. Минус — каждый шаг рекурсии: аккаунт, найденный по перестановке имени, слабее найденного по самому нику.
- 3 балла и больше — высокая уверенность
- 1–2 — средняя
- от −2 до 0 — низкая, в профиль не идёт
- −3 и ниже — другой человек
Шаг 2. Имена с транслитерацией
Один человек подписывается «Андрей», «Andrey», «Andrei» и «André». Фамилия «Соколов» встречается как «Sokolov» и «Sokoloff». Oracul приводит написания к одной форме и только потом сравнивает. Бренды и заголовки сайтов («ВКонтакте | ВКонтакте», «Acme GmbH») именем не считаются.
Совпало только имя, а фамилия чужая — это другой человек. Ник, который сам по себе просто имя («andrei», «alex»), ничего не доказывает: его может держать кто угодно. Такие аккаунты попадают в профиль, только если на них полное имя цели.
Шаг 3. Общие ники
Если под одним ником Oracul видит двух и больше людей с разными именами, ник помечается как общий. Его аккаунты без имени цели перестают что-либо доказывать — иначе в профиль утекут данные соседей по нику.
Шаг 4. Лица на аватарах
Имя может совпасть случайно, лицо — почти нет. Oracul находит лица на аватарах и сравнивает их между собой локальными моделями (OpenCV YuNet и SFace). Фото не уходят с сервера. Аккаунты с одним лицом собираются в группу «человек».
- Лицо как у эталона — аккаунт принят, даже если имени на нём нет.
- Другое лицо в дальнем круге поиска — аккаунт отклонён.
- Если эталона нет, а в дальних кругах разные лица — их нельзя приписать цели, они отклоняются.
Шаг 5. Граф и отметки аналитика
Каждая связь хранит, откуда пришла: этот email найден в коммитах GitHub того ника, этот ник — в описании Telegram-канала. Аналитик видит граф и может отметить аккаунт «не он». Тогда уходит не только сам аккаунт, но и всё, что найдено только через него, — ветка графа отрезается целиком. Отметка «это он» делает аккаунт эталоном, и его лицо начинает работать как образец.
Что получается в итоге
В профиль идут только принятые аккаунты. Паспорт, хронология и портрет собираются из них. Отклонённые остаются в отчёте отдельным списком с причиной: «однофамилец», «имя чужое», «другое лицо», «общий ник». Решение всегда видно и всегда можно пересмотреть — исходный результат скана не меняется.