В этом кейсе вы узнаете, как IT-рекрутеры могут автоматизировать поиск кандидатов по никнеймам в Telegram и перевести его из ручного процесса в почти промышленный.
Мы будем использовать информацию об участниках чата в Telegram в качестве базы никнеймов, но вы можете применить любой другой альтернативный источник данных и начинать с 4-го шага.
Шаг 1. Регистрация аккаунта в Telegram через виртуальный номер
Не будем вдаваться в подробности на этом этапе. Вы можете арендовать виртуальный номер через сервисы вроде sms-activate.io, 5sim.biz или onlinesim.io и зарегистрировать новый аккаунт, чтобы не использовать свой личный или рабочий номер. Если Telegram не присылает вам проверочный код при регистрации, просто купите готовый аккаунт на таких площадках, как Plati.Market, lzt.market или funpay.com.
Шаг 2. Регистрация нового приложения в Telegram
-
Перейдите на страницу Telegram для разработчиков:
-
Перейдите в браузере по следующей ссылке: my.telegram.org.
-
Войдите в свой Telegram аккаунт, используя номер телефона, который вы используете в приложении Telegram.
-
-
Создайте новое приложение:
-
После входа вы попадете на страницу "App Configuration".
-
Нажмите на кнопку "API Development Tools" или "Создать приложение".
-
Заполните форму с информацией о вашем новом приложении:
-
App title: Название вашего приложения (например,
MyParserApp
). -
Short name: Краткое имя для вашего приложения (например,
parser
). -
Platform: Выберите платформу, на которой будет работать приложение (например,
Desktop
). -
Description: Можете оставить описание (например,
Application for Telegram data parsing
).
-
-
Нажмите "Create" или "Создать".
-
-
Получите API ID и API Hash:
-
После создания приложения вы увидите свой
API ID
иAPI Hash
. -
Сохраните эти значения — они потребуются для работы с библиотекой Telethon.
Здесь сторонний гайд с картинками
Если при регистрации приложения у вас вылезет ошибка, то попробуйте обновить страницу, использовать латинские буквы и цифры без пробелов или поменятьвыключить VPN
-
Шаг 3. Парсинг участников Telegram чата
Для примера я буду использовать чат DevOps специалистов (или около того) "@kubernetes_ru". Ваш новый аккаунт должен состоять в данном чате.
Я запускаю код в PyCharm, а моя основная среда разработки - ChatGPT. Претензий к качеству кода не принимаю.
Установите библиотеку telethon -- pip instal thelethon
Скопируйте код ниже и укажите собственные значения в блоке с учетными данными**
from telethon import TelegramClient
from telethon.tl.types import User
# Учетные данные для авторизации
api_id = 'ЗАПОЛНИТЬ' # Ваш api_id
api_hash = 'ЗАПОЛНИТЬ' # Ваш api_hash
phone_number = 'ЗАПОЛНИТЬ' # Ваш номер телефона
channel = '@kubernetes_ru' # Название или ID канала/чата
# Автоматическое создание имени файла на основе имени канала
output_file = f"{channel.replace('@', '')}_users.txt"
# Создаем клиент Telegram с сохранением сессии
client = TelegramClient('session_name', api_id, api_hash)
async def main():
# Авторизация
await client.start(phone=phone_number)
if not await client.is_user_authorized():
print("Не удалось авторизоваться.")
return
print(f"Сбор участников из чата: {channel}")
# Получаем всех участников чата
participants = await client.get_participants(channel)
# Создаем список юзернеймов без @ в начале
usernames = [user.username for user in participants if isinstance(user, User) and user.username]
# Сохранение юзернеймов в файл
with open(output_file, 'w', encoding='utf-8') as f:
f.write('n'.join(usernames))
print(f"Сохранено {len(usernames)} юзернеймов в файл '{output_file}'.")
# Запуск программы
with client:
client.loop.run_until_complete(main())
В первый раз программа попросит вас ввести номер телефона и код авторизации в Telegram, который поступит через уведомления в приложении. В дальнейшем вводить его не потребуется.
По результатам работы скрипта данные будут сохранены в txt файл.
** Этот скрипт может собирать никнеймы только из чатов с видимыми участниками. Что делать, если участники чата скрыты, я напишу в следующих статьях на своем канале.
Шаг 4. Работа со Snoop
Snoop — это мощный OSINT-инструмент для поиска профилей по никнейму на более чем 4400 различных площадках. Это отечественный проект, который включает в себя поиск по популярным в СНГ ресурсам, а также предлагает удобные настройки, такие как управление регионом поиска. Snoop позволяет искать информацию как точечно по одному никнейму, так и по целым спискам.
Кроме того, Snoop предоставляет ряд опций для настройки поиска:
-
Вы можете управлять временем ожидания ответа от серверов, чтобы избегать ошибок, вызванных медленным интернет соединением.
-
Инструмент поддерживает исключение или включение регионов поиска. Можно выбрать поиск только по русскоязычным ресурсам.
-
Snoop также предлагает возможность поиска по конкретным сайтам из базы данных или использовать динамически обновляемую web-базу из более чем 4000 сайтов .
Будем исходить из того, что вы работаете на Windows.
Как все это делать на MacOS я без понятия :) Смотрите документацию в репрозитории.
Если вы работаете на Linux, то вы и так со всем разберетесь без моих советов.
Демонстрация работы программы выполнена в demo доступе, поиск в котором урезан до 290 площадок, но даже их вполне себе хватает для работы рекрутера. Годовая лицензия с полным доступом стоит 20$ и включает в себя >4400 площадок. Цена очень бюджетная.
Инструкция:
-
Скачайте архив с github по этой ссылке Snoop_for_Windows.rar
-
Распакуйте архив и откройте командную строку (Win+R ---> cmd)
-
Чтобы искать информацию по точечно по 1 никнейму перетащите exe-файл в командную строку и добавьте параметры -f ВАШ_ЮЗЕРНЕЙМ -t 9
Далее вы можете просто скопировать все ссылки в карточку с информацией о кандидате прямо из терминала программы. Открывшееся окно в браузере можете закрыть.
-
Если вы хотите обработать список никнеймов, то скопируйте путь к вашему файлу с никнеймами через left shift + right click
-
Перетащите exe файл в терминал как в пункте 3 и добавьте к нему параметры --userlist "ПУТЬ_К ВАШЕМУ_ФАЙЛУ_СО_СПИСКОМ" -t 9
-
Запустите программу и дождитесь ее выполнения.
В результате выполнения вы получите набор отдельных файлов в нескольких форматах: html, txt и csv.
Вы можете посмотреть их, скопировав путь из браузера в explorer.
Откроем какой-нибудь из них. Например в txt формате.
Видим, что такой формат данных не подходит для дальнейшей работы с ними, поэтому сделаем ряд процедур, чтобы сформировать более удобную базу данных в виде csv таблицы.
-
Откроем командную строку прямо из папки. Для этого введите cmd в адресную строку.
-
В открывшемся терминале напишем copy *.txt all_results.txt
-
В результате получим один общий файл с данными для всех наших никнеймов.
-
Скопируем в нашу IDE следующий код, который почистит данные и отформатирует их в более удобный вид.
import pandas as pd import re def parse_data(filename): data = [] current_username = None current_links = [] with open(filename, 'r', encoding='utf-8') as file: for line in file: line = line.strip() # Пропускаем пустые строки if not line: continue # Поиск юзернейма username_match = re.match(r"Запрашиваемый объект: <(.+?)>", line) if username_match: # Если есть предыдущие ссылки, сохраняем их с текущим юзернеймом if current_username and current_links: data.append({"Username": current_username, "Links": "n".join(current_links)}) # Обновляем текущий юзернейм и сбрасываем список ссылок current_username = username_match.group(1) current_links = [] continue # Пропускаем строки с "©2020-2024 «Snoop Project» (demo version).Адрес | ресурс" if line.startswith("©2020-2024"): continue # Поиск строк с URL и ресурсами (содержат " | ") if "|" in line: url, _ = line.split(" | ") current_links.append(url.strip()) # Добавляем последние накопленные данные if current_username and current_links: data.append({"Username": current_username, "Links": "n".join(current_links)}) return data # Имя вашего входного текстового файла input_filename = r'ПУТЬ_К_ВАШЕМУ ФАЙЛУ' # Укажите путь к вашему файлу # Парсинг данных из файла parsed_data = parse_data(input_filename) # Преобразование данных в DataFrame df = pd.DataFrame(parsed_data) # Сохранение данных в Excel output_filename = 'НАЗВАНИЕ_ТАБЛИЦЫ.xlsx' df.to_excel(output_filename, index=False) print(f"Данные успешно сохранены в {output_filename}!")
-
Копируем путь новому файлу со всеми никнеймами через left shift+right click. И вставляем его в новый код. Строчка №47.
-
Запускаем скрипт, получаем сообщение, что таблица успешно сформирована.
-
Открываем новую таблицу и видим, что теперь данные преобразовались в удобный для работы формат.
-
Если все получилось, то я вас поздравляю. Теперь вы профессиональный сорсер. Можете написать слово OSINT в резюме и просить прибавку к зарплате.
Примечание:
В данном примере я сократил список никнеймов с 8 тысяч до 20 штук для демонстрации. Можно проверить все 8 тысяч, но потребуется значительно больше времени.
Также, помните, что найденные вами ссыли на ресурсы не обязательно связаны с никнеймом целевого кандидата. Чем популярнее ник, тем чаще его используют разные люди.
Заключение
Как вы видите, даже минимальные навыки работы с Python и доступ к любой современной LLM открывает перед IT рекрутером довольно нетривиальные способы поиска кандидатов, а это значит, что вы можете собирать свои почти уникальные базы данных и работать с ними.
Если вас интересует продвинутый сорсинг, подписывайтесь на мою группу "Сорсинг для извращенцев". В ней мы разберем, как извлекать участников из чатов, даже если администратор скрыл их с помощью настроек приватности. Также, если вам нужен внутренний или внешний IT-рекрутер, вы всегда можете связаться со мной в Telegram: @rudenko_telegram.
Автор: rudix0