OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop

в 11:15, , рубрики: OSINT, recruiting, snoop, sourcing, telegram, парсинг, рекрутинг, рекрутинг в it, сорсинг

В этом кейсе вы узнаете, как 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.

      OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 1

    Здесь сторонний гайд с картинками

    Если при регистрации приложения у вас вылезет ошибка, то попробуйте обновить страницу, использовать латинские буквы и цифры без пробелов или поменятьвыключить 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, который поступит через уведомления в приложении. В дальнейшем вводить его не потребуется.

OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 2

По результатам работы скрипта данные будут сохранены в txt файл.

Наша база никнеймов

Наша база никнеймов

** Этот скрипт может собирать никнеймы только из чатов с видимыми участниками. Что делать, если участники чата скрыты, я напишу в следующих статьях на своем канале.

участники в чате видимы

участники в чате видимы

Шаг 4. Работа со Snoop

Snoop — это мощный OSINT-инструмент для поиска профилей по никнейму на более чем 4400 различных площадках. Это отечественный проект, который включает в себя поиск по популярным в СНГ ресурсам, а также предлагает удобные настройки, такие как управление регионом поиска. Snoop позволяет искать информацию как точечно по одному никнейму, так и по целым спискам.

Кроме того, Snoop предоставляет ряд опций для настройки поиска:

  • Вы можете управлять временем ожидания ответа от серверов, чтобы избегать ошибок, вызванных медленным интернет соединением.

  • Инструмент поддерживает исключение или включение регионов поиска. Можно выбрать поиск только по русскоязычным ресурсам.

  • Snoop также предлагает возможность поиска по конкретным сайтам из базы данных или использовать динамически обновляемую web-базу из более чем 4000 сайтов .

Будем исходить из того, что вы работаете на Windows.
Как все это делать на MacOS я без понятия :) Смотрите документацию в репрозитории.
Если вы работаете на Linux, то вы и так со всем разберетесь без моих советов.

Демонстрация работы программы выполнена в demo доступе, поиск в котором урезан до 290 площадок, но даже их вполне себе хватает для работы рекрутера. Годовая лицензия с полным доступом стоит 20$ и включает в себя >4400 площадок. Цена очень бюджетная.

Инструкция:

  1. Скачайте архив с github по этой ссылке Snoop_for_Windows.rar

  2. Распакуйте архив и откройте командную строку (Win+R ---> cmd)

  3. Чтобы искать информацию по точечно по 1 никнейму перетащите exe-файл в командную строку и добавьте параметры -f ВАШ_ЮЗЕРНЕЙМ -t 9

    Запуск программы

    Запуск программы
    Результаты поиска

    Результаты поиска

    Далее вы можете просто скопировать все ссылки в карточку с информацией о кандидате прямо из терминала программы. Открывшееся окно в браузере можете закрыть.

  4. Если вы хотите обработать список никнеймов, то скопируйте путь к вашему файлу с никнеймами через left shift + right click

    Он будет как-то так "C:UsersПользовательPycharmProjectspythonProject1kubernetes_ru_users.txt"

    Он будет как-то так "C:UsersПользовательPycharmProjectspythonProject1kubernetes_ru_users.txt"
  5. Перетащите exe файл в терминал как в пункте 3 и добавьте к нему параметры --userlist "ПУТЬ_К ВАШЕМУ_ФАЙЛУ_СО_СПИСКОМ" -t 9

    Вы увидите что-то подобное

    Вы увидите что-то подобное
  6. Запустите программу и дождитесь ее выполнения.

    Закрасил некоторые запрещенные и нежелательные ссылки. Уменьшил базу до 20 значений (см. примечание)

    Закрасил некоторые запрещенные и нежелательные ссылки. Уменьшил базу до 20 значений (см. примечание)

    В результате выполнения вы получите набор отдельных файлов в нескольких форматах: html, txt и csv.

    Вы можете посмотреть их, скопировав путь из браузера в explorer.

    намекает, что надо бы купить лицензию

    намекает, что надо бы купить лицензию
    OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 11
    OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 12

    Откроем какой-нибудь из них. Например в txt формате.

    OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 13

    Видим, что такой формат данных не подходит для дальнейшей работы с ними, поэтому сделаем ряд процедур, чтобы сформировать более удобную базу данных в виде csv таблицы.

  7. Откроем командную строку прямо из папки. Для этого введите cmd в адресную строку.

    OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 14
  8. В открывшемся терминале напишем copy *.txt all_results.txt

    OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 15
  9. В результате получим один общий файл с данными для всех наших никнеймов.

    С таким документом по прежнему нельзя работать

    С таким документом по прежнему нельзя работать
  10. Скопируем в нашу 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}!")
  11. Копируем путь новому файлу со всеми никнеймами через left shift+right click. И вставляем его в новый код. Строчка №47.

    OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 17

  12. Запускаем скрипт, получаем сообщение, что таблица успешно сформирована.

    OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 18
  13. Открываем новую таблицу и видим, что теперь данные преобразовались в удобный для работы формат.

    OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 19
  14. Если все получилось, то я вас поздравляю. Теперь вы профессиональный сорсер. Можете написать слово OSINT в резюме и просить прибавку к зарплате.

Примечание:
В данном примере я сократил список никнеймов с 8 тысяч до 20 штук для демонстрации. Можно проверить все 8 тысяч, но потребуется значительно больше времени.

Также, помните, что найденные вами ссыли на ресурсы не обязательно связаны с никнеймом целевого кандидата. Чем популярнее ник, тем чаще его используют разные люди.

Заключение

Как вы видите, даже минимальные навыки работы с Python и доступ к любой современной LLM открывает перед IT рекрутером довольно нетривиальные способы поиска кандидатов, а это значит, что вы можете собирать свои почти уникальные базы данных и работать с ними.

Если вас интересует продвинутый сорсинг, подписывайтесь на мою группу "Сорсинг для извращенцев". В ней мы разберем, как извлекать участников из чатов, даже если администратор скрыл их с помощью настроек приватности. Также, если вам нужен внутренний или внешний IT-рекрутер, вы всегда можете связаться со мной в Telegram: @rudenko_telegram.

OSINT в работе IT-рекрутера: Достаем кандидатов из Telegram чата с помощью Telethon и Snoop - 20

Автор: rudix0

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js