Skip to content

Этот Python скрипт предназначен для автоматического сбора и обработки конфигурационных профилей из публичных Telegram каналов.

Notifications You must be signed in to change notification settings

LexterS999/TG-Proxy-Parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telegram Channel Profile Parser and Extractor

Python

Описание

Этот Python скрипт предназначен для автоматического сбора и обработки конфигурационных профилей из публичных Telegram каналов. Скрипт выполняет следующие ключевые задачи:

  1. Парсинг Telegram Каналов: Извлекает содержимое веб-версий указанных Telegram каналов, определенных в файле telegram_channels.json.
  2. Извлечение VPN Профилей: Идентифицирует и извлекает конфигурационные строки VPN профилей протоколов vless, hy2, tuic и trojan из текстового содержимого сообщений каналов.
  3. Скоринг Профилей: Присваивает каждому найденному профилю "скор" на основе ряда параметров конфигурации (безопасность, SNI, ALPN и другие), используя заданные весовые коэффициенты для оценки качества и предпочтительности профиля.
  4. Очистка и Дедупликация: Обрабатывает извлеченные профили для удаления мусора, артефактов кодирования, пробелов и дубликатов, приводя их к стандартизированному виду.
  5. Фильтрация и Приоритизация: Фильтрует профили, удаляя потенциально неполные или поврежденные, и приоритизирует их, сохраняя только самые "скоринговые" профили.
  6. Сохранение в Файл: Сохраняет заданное количество лучших профилей (в пределах установленного диапазона) в текстовый файл config-tg.txt, готовый к импорту в VPN клиенты, поддерживающие данные протоколы.
  7. Логирование и Статистика: Ведет подробное логирование процесса работы и предоставляет итоговую статистику по завершении, включая время выполнения, количество обработанных каналов, найденных и сохраненных профилей.
  8. Периодическое Выполнение: Скрипт предназначен для запуска в определенный период месяца (настраивается константами), что позволяет контролировать частоту обновления профилей.

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

Возможности

  • Поддержка Протоколов: Извлечение профилей для vless, hy2, tuic и trojan.
  • Интеллектуальный Скоринг Профилей: Ранжирование профилей на основе настраиваемых весов параметров, позволяющее отбирать более качественные конфигурации.
  • Настраиваемое Количество Потоков: Использование многопоточности для ускорения парсинга каналов (параметр MAX_THREADS_PARSING).
  • Таймауты Запросов: Настройка времени ожидания ответа от Telegram серверов для повышения стабильности (параметр REQUEST_TIMEOUT).
  • Контроль Периода Скачивания: Ограничение работы скрипта определенным диапазоном дней месяца (параметры START_DAY_PROFILE_DOWNLOAD и END_DAY_PROFILE_DOWNLOAD).
  • Автоматическая Очистка Профилей: Удаление нежелательных символов, пробелов и URL-кодирования для обеспечения корректности профилей.
  • Удаление Дубликатов и Подстрок: Эффективное удаление дубликатов профилей и избыточных подстрок, оставляя наиболее полные конфигурации.
  • Логирование Работы: Подробное логирование всех этапов работы скрипта для отслеживания процесса и выявления ошибок.
  • Статистика Выполнения: Предоставление итоговой статистики по завершении работы, включая ключевые показатели.

Требования

Для работы скрипта необходим Python 3.7 или выше и установленные Python библиотеки:

pip install requests beautifulsoup4

Конфигурация

  1. telegram_channels.json:

    • Файл в формате JSON, содержащий список имен Telegram каналов, из которых будут извлекаться профили.
    • Каждый элемент списка должен быть строкой, представляющей имя канала (без @ или https://t.me/).
    • Пример содержимого telegram_channels.json:
      [
        "channel_name_1",
        "channel_name_2",
        "another_channel"
      ]
    • Убедитесь, что файл существует в той же директории, что и скрипт. Если файл отсутствует, скрипт создаст пустой файл, но вам нужно будет заполнить его именами каналов.
  2. config-tg.txt:

    • Файл, в который будут сохранены отфильтрованные и отсортированные VPN профили.
    • Файл будет создан или перезаписан при каждом запуске скрипта.
    • Содержимое файла предназначено для прямого импорта в VPN клиенты, поддерживающие протоколы vless, hy2, tuic и trojan.
  3. Константы в скрипте:

    • В начале скрипта определены глобальные константы, которые можно настроить под свои нужды:
      • MAX_THREADS_PARSING: Максимальное количество потоков для парсинга (оптимальное значение зависит от ресурсов вашей системы и стабильности соединения).
      • REQUEST_TIMEOUT: Время ожидания ответа от Telegram серверов в секундах.
      • MIN_PROFILES_TO_DOWNLOAD, MAX_PROFILES_TO_DOWNLOAD: Минимальное и максимальное количество профилей для сохранения в файл config-tg.txt. Скрипт сохранит количество профилей в этом диапазоне, выбрав лучше скорингрованные, но не выходя за пределы доступных.
      • ALLOWED_PROTOCOLS: Список поддерживаемых протоколов VPN.
      • PROFILE_SCORE_WEIGHTS: Словарь весов для расчета скора профиля. Вы можете настроить веса различных параметров протоколов, чтобы влиять на приоритезацию профилей.
      • START_DAY_PROFILE_DOWNLOAD, END_DAY_PROFILE_DOWNLOAD: Диапазон дней месяца, в течение которого скрипт будет активен.

Использование

  1. Установите необходимые библиотеки:
    pip install requests beautifulsoup4
  2. Настройте telegram_channels.json: Добавьте имена Telegram каналов, которые вы хотите парсить, в файл telegram_channels.json.
  3. Опционально: Настройте константы в скрипте: Отредактируйте значения констант в начале Python скрипта, если необходимо изменить параметры работы (количество потоков, таймауты, веса скоринга, период работы скрипта и т.д.).
  4. Запустите скрипт:
    python your_script_name.py
    Замените your_script_name.py на фактическое имя файла вашего скрипта.
  5. Проверьте результаты: После завершения работы скрипта, проверите файл config-tg.txt. Он будет содержать список VPN профилей, готовых к импорту. Логи работы скрипта будут выведены в консоль и помогут отследить процесс и выявить возможные проблемы.

Важные Замечания

  • Telegram API и Веб-версия: Скрипт использует веб-версию Telegram (t.me/s/) для парсинга каналов. Изменения в структуре веб-версии Telegram могут повлиять на работоспособность скрипта.
  • Блокировки и Ограничения: Интенсивный парсинг может привести к временным ограничениям или блокировкам со стороны Telegram. Используйте скрипт разумно и не запускайте его слишком часто.
  • Качество Профилей: Скрипт автоматически извлекает и фильтрует профили, но не гарантирует их работоспособность или безопасность. Всегда проверяйте полученные профили перед использованием.
  • Период Выполнения: Скрипт проверяет текущий день месяца и выполняет парсинг только в заданный период. В остальное время скрипт завершит работу без выполнения основных действий.
  • Обработка Ошибок: Скрипт включает обработку некоторых ошибок (таймауты, ошибки HTTP), но могут возникнуть и другие непредвиденные ситуации. Следите за логами работы скрипта.
  • Безопасность: Скрипт отключает верификацию SSL сертификатов (requests.verify=False) для обхода возможных проблем с сертификатами у Telegram. В production среде рекомендуется использовать более безопасные подходы к обработке SSL сертификатов.
  • Зависимости: Убедитесь, что все необходимые библиотеки установлены перед запуском скрипта.

Отказ от Ответственности

Данный скрипт предоставляется "как есть" для образовательных и исследовательских целей. Автор не несет ответственности за любое использование или последствия использования данного скрипта. Используйте скрипт на свой страх и риск.

MIT License

About

Этот Python скрипт предназначен для автоматического сбора и обработки конфигурационных профилей из публичных Telegram каналов.

Resources

Stars

Watchers

Forks

Languages