ВведениеВ этой статье вы узнаете, как IT-рекрутеры (и не только) могут создавать свои уникальные базы кандидатов (лидов), используя базовые навыки работы с Python и специализированный софт "Snoop", который обычно используют специалисты по информационной безопасности.Если вы умеете запускать скрипты на Python, этот метод покажется вам элементарным. Достаточно просто выполнить все инструкции, и вы удивитесь, насколько легко и эффективно можно осуществить массовый поиск по никнеймам.Чтобы отправить кандидату приглашение на собеседование, рекрутеру нужно найти: 1) его контакты;2) подтверждение, что вакансия соответствует опыту кандидата.В данном примере в качестве первичной базы никнеймов мы будем использовать список участников чата разработчиков Golang, поэтому контакты (username в Telegram) у нас уже есть, и наша главная задача — определить, кто из участников действительно является Golang-разработчиком и субъективно оценить их уровень опыта в написании кода, насколько это возможно.Я очень надеюсь, что вы рекрутер, и дорожите как собственной репутацией, так и репутацией компании, для которой подбираете персонал, и поэтому не будете отправлять приглашения на интервью всем подряд. Если это так, то этот гайд вам поможет. Если вы используете сторонние решения для парсинга участников чатов в ТГ или у вас уже есть готовая база никнеймов, то вы можете пропустить шаги 1, 2, 3 и сразу перейти в работе со "Snoop" Шаг 1. Регистрация нового аккаунта и приложения в TelegramНа всякий случай создайте себе новый аккаунт и зарегистрируйте на него свое 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Шаг 2. Парсинг участников Telegram чатаДля примера я буду использовать популярный чат Golang разработчиков @gogolang. Ваш новый аккаунт должен состоять в данном чате. Вы можете собирать подписчиков любого чата, главное, чтобы участники в нем были открыты. Например, как на этом скринеВсе конфиденциальноМожно собирать участников и из закрытых чатов, но это более сложно и требует больше усилий, однако потенциально может быть более результативным. Как это сделать, я напишу в своем Telegram-канале позже. Оформление кейсов — это довольно скучное занятиеДля запуска скриптов я использую IDE Pycharm. Сначала импортируем telethon pip import telethonfrom 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())Запускаем этот скрипт, написанный ChatGPT.При первом запуске вводим номер телефона и код аутентификации для аккаунта. В дальнейшем это делать не потребуется.Видим результатОткрываем файл с собранными никнеймамиЯ их закрасил, чтобы не палить Шаг 3. Работаем со SnoopSnoop — это мощный OSINT-инструмент для поиска профилей по никнейму на более чем 4400 различных площадках. Это отечественный проект, который включает в себя поиск по популярным в СНГ ресурсам, а также предлагает удобные настройки, такие как управление регионом поиска. Snoop позволяет искать информацию как точечно по одному никнейму, так и по целым спискам.В Snoop есть поиск как по отдельным площадкам вроде GitHub, Habr, Stack Overflow и т. д., так и только по русскоязычным сайтам. Эта утилита — находка для любого рекрутера.Я работаю на Windows. Те, кто работают на Linux, разберутся сами, следуя документации. Для macOS эта программа пока не поддерживаетсяНачнем работуИнструкция:1. Скачайте архив с github по этой ссылке Snoop_for_Windows.rar2. Распакуйте архив и откройте командную строку (Win+R ---> cmd)3. Чтобы искать информацию по точечно по 1 никнейму перетащите exe-файл в командную строку и добавьте параметры -f ВАШ_ЮЗЕРНЕЙМ -t 9Запуск программыРезультаты поиска4. Просто выделите и скопируйте информацию из терминала в вашу карточку5. Если вы хотите быстро обработать ваш список на предмет совпадений по основным сайтам, скопируйте путь к вашему файлу с никнеймами, нажав Left Shift + Right Click 6. Перетащите exe файл в терминал как в пункте 3 и добавьте к нему параметры --userlist "ПУТЬ К ВАШЕМУ ФАЙЛУ" -f -t 3 --site twitter --site habr --site stackoverflow --site vk --site github --site dtfкоманда --site указывает на каком сайте производить поискВ моем примере поиск будет происходить на сайтах Твиттер, Хабр, SoF, ВК, Гитхаб и DTF.Замазал никнеймы. Хотя это и открытые данные, люди всё равно почему-то думают, что мы их воруем, и обижаются. Можно их понять 7. Выделите нужные данные и скопируйте их в код ниже, чтобы преобразовать в удобную для работы таблицу. Предварительно установите pandaspip install pandasimport pandas as pd # Ваша исходная строка данных data = """ ВАШИ ДАННЫЕ """ # Инициализация переменных для хранения данных nicknames = [] links = [] current_nickname = None # Обработка данных for line in data.splitlines(): line = line.strip() if not line: continue if "разыскиваем" in line: # Извлечение текущего никнейма current_nickname = line.split("<")[1].split(">")[0].strip() elif current_nickname and ": " in line: # Проверяем наличие ": " и извлекаем ссылку try: link = line.split(": ", 1)[1] nicknames.append(current_nickname) links.append(link) except IndexError: print(f"Не удалось обработать строку: {line}") # Создание DataFrame из списков df = pd.DataFrame({"Nickname": nicknames, "Link": links}) # Группировка данных по уникальным никнеймам и объединение ссылок с новой строки df_grouped = df.groupby('Nickname')['Link'].apply(lambda x: '\n'.join(x)).reset_index() # Сохранение DataFrame в файл Excel df_grouped.to_excel('nicknames_links_combined.xlsx', index=False) print("Данные успешно сохранены в файл nicknames_links_combined.xlsx")8. Откроем полученный файл и посмотрим, что у нас получилось. Данные опять замазал. Чтобы ваши данные стали красивыми, как у меня, выделите второй столбец и нажмите "Перенос текста"9. Проверим, есть ли в нашей новой базе удачные совпадения. Попробуем найти Golang-разработчика по ссылкам, полученным через Snoop. Посмотрим по ссылке на хабрНа первый взгляд, вроде бы Golang разработчик. Можно более подробно ознакомиться с этой и другими его статьями и ресурсами, но в данном материале мы этого делать не будем. Давайте посмотрим кого-нибудь ещеПосмотрим, что есть на ГитхабАга, нашли линкGolang указан в стеке технологий на последних двух местах работы. Возможно, это вторичный язык, используемый для написания мелкой автоматизации, но отнесем его тоже к разработчикам на Golang, пока не доказано обратное. Отлично, совпадения в таблице есть. Сколько их —дальше надо смотреть руками. 10. Если вы хотите искать по всем ресурсам, уберите все параметры --site ... из вашей команды и оставьте только: --userlist "ПУТЬ К ВАШЕМУ СПИСКУ" -f -t 3Все остальные действия выполняются так же, как в предыдущих трех шагах. Важное примечаниеПомните, что чем популярнее никнейм, тем чаще он будет давать ложноположительные совпадения.Вы можете использовать любую другую базу никнеймов, не обязательно брать из Telegram.Старайтесь собрать как можно больше информации о кандидате перед приглашением его на интервью и отправкой холодного письма с вакансией. Не занимайтесь массовыми холодными рассылками. Персонализируйте свои предложения.Этот метод также подойдет для ручного сбора базы для холодных продаж в B2C в премиальных сегментах.Если кто-то указал одинаковый никнейм на Pornhub и в Telegram, возможно, он сделал это специально ЗаключениеТаким образом, мы разобрались, как автоматизировать поиск по никнеймам. Доступ к любой современной LLM и знание Python могут существенно расширить ваши возможности как IT-рекрутера. Теперь вы можете формировать свои уникальные базы кандидатов или дополнять новой информацией существующие. А если вам интересно развиваться в теме технического рекрутинга и продвинутого сорсинга, приглашаю вас в мою группу Сорсинг для извращенцев. В ней я буду публиковать новые уникальные способы поиска персонала и не только.Также, если вам нужен внутренний или внешний IT и Digital рекрутер, вы всегда можете связаться со мной в Telegram: @rudenko_telegram