В этой статье описывается процесс создания парсера SEED-фраз в Telegram с использованием Python. Для этого применяются библиотеки Telethon для взаимодействия с Telegram API, Pytesseract для оптического распознавания текста (OCR) и Pillow для обработки изображений.
Установка необходимых библиотек:
Установка Tesseract OCR:
1. Скачайте установочный файл с официального репозитория.
2. Установите программу и добавьте путь к tesseract.exe в переменную окружения PATH.
Настройка Telegram API:
1. Зарегистрируйте приложение на my.telegram.org для получения API ID и API Hash.
2. Создайте файл config.py и сохраните в нем полученные значения:
Импорт необходимых библиотек:
Регулярное выражение для поиска SEED-фраз:
Инициализация клиента Telethon:
Функция для поиска SEED-фраз в тексте:
Функция для извлечения текста из изображений:
Функция для обработки чата и поиска SEED-фраз:
Запуск клиента и обработка чатов:
Этот скрипт подключается к указанному чату в Telegram, анализирует текстовые сообщения и изображения на наличие SEED-фраз, состоящих из 12 или 24 слов, и выводит найденные фразы в консоль.
UPD 25.12.24 14:03:
Что изменено:
1. Удаление дублей: Список SEED-фраз преобразуется в set внутри find_seed_phrases.
2. Проверка на валидность: Добавлена функция is_valid_seed. В ней вы можете уточнить правила, например, проверять только на соответствие стандартным словам SEED-фраз.
3. Логика обработки текста и изображений: SEED-фразы проверяются на валидность перед выводом.
Установка необходимых библиотек:
pip install telethon pytesseract pillow
Установка Tesseract OCR:
1. Скачайте установочный файл с официального репозитория.
2. Установите программу и добавьте путь к tesseract.exe в переменную окружения PATH.
Настройка Telegram API:
1. Зарегистрируйте приложение на my.telegram.org для получения API ID и API Hash.
2. Создайте файл config.py и сохраните в нем полученные значения:
API_ID = 'ВАШ_API_ID'
API_HASH = 'ВАШ_API_HASH'
SESSION_NAME = 'telegram_parser_session'
Импорт необходимых библиотек:
import os
import re
from telethon import TelegramClient, events
from telethon.tl.types import InputMessagesFilterPhotos, InputMessagesFilterDocument
from PIL import Image
import pytesseract
from io import BytesIO
Регулярное выражение для поиска SEED-фраз:
SEED_REGEX = r'\b(?:\w+\s){11,23}\w+\b'
Инициализация клиента Telethon:
client = TelegramClient(SESSION_NAME, API_ID, API_HASH)
Функция для поиска SEED-фраз в тексте:
def find_seed_phrases(text):[/UWSL][/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] matches = re.findall(SEED_REGEX, text)[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] return matches if matches else []
Функция для извлечения текста из изображений:
def extract_text_from_image(image_bytes):[/B][/UWSL][/B][/UWSL][/B][/UWSL]
[UWSL][B][UWSL][B][UWSL][B] image = Image.open(BytesIO(image_bytes))[/B][/UWSL][/B][/UWSL][/B][/UWSL]
[UWSL][B][UWSL][B][UWSL][B] return pytesseract.image_to_string(image)
Функция для обработки чата и поиска SEED-фраз:
async def process_chat(chat):[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] async for message in client.iter_messages(chat):[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] # Поиск SEED-фраз в тексте сообщения[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] if message.text:[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] seeds = find_seed_phrases(message.text)[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] if seeds:[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] print(f"[TEXT] Найдены SEED-фразы в чате {chat.title}: {seeds}")[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] # Проверка на наличие фото и документов (картинок)[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] if message.photo or message.document:[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] media = message.photo or message.document[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] image_bytes = await client.download_media(media, bytes)[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] text = extract_text_from_image(image_bytes)[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] seeds = find_seed_phrases(text)[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] if seeds:[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] print(f"[IMAGE] Найдены SEED-фразы в чате {chat.title}: {seeds}")
Запуск клиента и обработка чатов:
async def main():[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] await client.start()[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] # Замените 'chat_username' на имя пользователя или ID нужного чата[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] chat = await client.get_entity('chat_username')[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] await process_chat(chat)[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] await client.run_until_disconnected()[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL]with client:[/UWSL][/UWSL][/UWSL]
[UWSL][UWSL][UWSL] client.loop.run_until_complete(main())
Этот скрипт подключается к указанному чату в Telegram, анализирует текстовые сообщения и изображения на наличие SEED-фраз, состоящих из 12 или 24 слов, и выводит найденные фразы в консоль.
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
UPD 25.12.24 14:03:
Что изменено:
1. Удаление дублей: Список SEED-фраз преобразуется в set внутри find_seed_phrases.
2. Проверка на валидность: Добавлена функция is_valid_seed. В ней вы можете уточнить правила, например, проверять только на соответствие стандартным словам SEED-фраз.
3. Логика обработки текста и изображений: SEED-фразы проверяются на валидность перед выводом.
Последнее редактирование: