Этот Python скрипт предназначен для автоматического сбора и обработки конфигурационных профилей из публичных Telegram каналов. Скрипт выполняет следующие ключевые задачи:
- Парсинг Telegram Каналов: Извлекает содержимое веб-версий указанных Telegram каналов, определенных в файле
telegram_channels.json
. - Извлечение VPN Профилей: Идентифицирует и извлекает конфигурационные строки VPN профилей протоколов
vless
,hy2
,tuic
иtrojan
из текстового содержимого сообщений каналов. - Скоринг Профилей: Присваивает каждому найденному профилю "скор" на основе ряда параметров конфигурации (безопасность, SNI, ALPN и другие), используя заданные весовые коэффициенты для оценки качества и предпочтительности профиля.
- Очистка и Дедупликация: Обрабатывает извлеченные профили для удаления мусора, артефактов кодирования, пробелов и дубликатов, приводя их к стандартизированному виду.
- Фильтрация и Приоритизация: Фильтрует профили, удаляя потенциально неполные или поврежденные, и приоритизирует их, сохраняя только самые "скоринговые" профили.
- Сохранение в Файл: Сохраняет заданное количество лучших профилей (в пределах установленного диапазона) в текстовый файл
config-tg.txt
, готовый к импорту в VPN клиенты, поддерживающие данные протоколы. - Логирование и Статистика: Ведет подробное логирование процесса работы и предоставляет итоговую статистику по завершении, включая время выполнения, количество обработанных каналов, найденных и сохраненных профилей.
- Периодическое Выполнение: Скрипт предназначен для запуска в определенный период месяца (настраивается константами), что позволяет контролировать частоту обновления профилей.
Ключевая особенность: Скрипт не просто извлекает профили, но и пытается оценить их качество и отбирает лучшие на основе настраиваемой системы скоринга, что повышает вероятность получения рабочих и производительных конфигураций.
- Поддержка Протоколов: Извлечение профилей для
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
-
telegram_channels.json
:- Файл в формате JSON, содержащий список имен Telegram каналов, из которых будут извлекаться профили.
- Каждый элемент списка должен быть строкой, представляющей имя канала (без
@
илиhttps://t.me/
). - Пример содержимого
telegram_channels.json
:[ "channel_name_1", "channel_name_2", "another_channel" ]
- Убедитесь, что файл существует в той же директории, что и скрипт. Если файл отсутствует, скрипт создаст пустой файл, но вам нужно будет заполнить его именами каналов.
-
config-tg.txt
:- Файл, в который будут сохранены отфильтрованные и отсортированные VPN профили.
- Файл будет создан или перезаписан при каждом запуске скрипта.
- Содержимое файла предназначено для прямого импорта в VPN клиенты, поддерживающие протоколы
vless
,hy2
,tuic
иtrojan
.
-
Константы в скрипте:
- В начале скрипта определены глобальные константы, которые можно настроить под свои нужды:
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
: Диапазон дней месяца, в течение которого скрипт будет активен.
- В начале скрипта определены глобальные константы, которые можно настроить под свои нужды:
- Установите необходимые библиотеки:
pip install requests beautifulsoup4
- Настройте
telegram_channels.json
: Добавьте имена Telegram каналов, которые вы хотите парсить, в файлtelegram_channels.json
. - Опционально: Настройте константы в скрипте: Отредактируйте значения констант в начале Python скрипта, если необходимо изменить параметры работы (количество потоков, таймауты, веса скоринга, период работы скрипта и т.д.).
- Запустите скрипт:
Замените
python your_script_name.py
your_script_name.py
на фактическое имя файла вашего скрипта. - Проверьте результаты: После завершения работы скрипта, проверите файл
config-tg.txt
. Он будет содержать список VPN профилей, готовых к импорту. Логи работы скрипта будут выведены в консоль и помогут отследить процесс и выявить возможные проблемы.
- Telegram API и Веб-версия: Скрипт использует веб-версию Telegram (
t.me/s/
) для парсинга каналов. Изменения в структуре веб-версии Telegram могут повлиять на работоспособность скрипта. - Блокировки и Ограничения: Интенсивный парсинг может привести к временным ограничениям или блокировкам со стороны Telegram. Используйте скрипт разумно и не запускайте его слишком часто.
- Качество Профилей: Скрипт автоматически извлекает и фильтрует профили, но не гарантирует их работоспособность или безопасность. Всегда проверяйте полученные профили перед использованием.
- Период Выполнения: Скрипт проверяет текущий день месяца и выполняет парсинг только в заданный период. В остальное время скрипт завершит работу без выполнения основных действий.
- Обработка Ошибок: Скрипт включает обработку некоторых ошибок (таймауты, ошибки HTTP), но могут возникнуть и другие непредвиденные ситуации. Следите за логами работы скрипта.
- Безопасность: Скрипт отключает верификацию SSL сертификатов (
requests.verify=False
) для обхода возможных проблем с сертификатами у Telegram. В production среде рекомендуется использовать более безопасные подходы к обработке SSL сертификатов. - Зависимости: Убедитесь, что все необходимые библиотеки установлены перед запуском скрипта.
Данный скрипт предоставляется "как есть" для образовательных и исследовательских целей. Автор не несет ответственности за любое использование или последствия использования данного скрипта. Используйте скрипт на свой страх и риск.