Загрузка...

Script
Python - you need to bypass captcha in a telegram bot, how to implement it?

Thread in Python created by F1arLesss Mar 26, 2026. 176 views

  1. F1arLesss
    F1arLesss Topic starter Mar 26, 2026 0 Aug 17, 2024
    [IMG]
    Переодически в боте всплывает такая капча,
    1) Задачи всегда со смайликами еды
    2) Все используемые эмодзи в этой капче:
    3) Ответ надо выбрать из 6 вариантов
     
  2. matBast0s
    matBast0s Mar 26, 2026 №1 Криптообменник —> https://lolz.live/threads/9756616/ 10,793 Sep 10, 2023
    парси слово из сообщения, перед этим сопоставив все названия еды с эмодзи
     
    1. F1arLesss Topic starter
      avatarmatBast0s , так а как сделать чтобы он потом понял на какой кнопке находится арбуз и нажимал на нее, тк когда капча вылазит, там всегда разные фрукты
    2. BotsCoder
      avatarF1arLesss, inline keyboard клавиатуры получай и проверяй циклом
  3. MisterBeast
    MisterBeast Mar 26, 2026 Сливы милф - https://lolz.live/threads/7835660/ 3,527 Mar 15, 2024
    А в чем проблема? Делаешь словарик с фруктами Название - Фрукт и нажимаешь куда надо.
     
  4. n1s_01
    Словарь и нажатие на кнопку по тексту или каллбеку
     
  5. PyroSpy
    там, где
    ⁡"": ["яблок", "яблоко"],
    ⁡ в "" вставь внутри эмодзи соответствующее, пример:
    ⁡"<ЭМОДЗИ_ЯБЛОКА>": ["яблок", "яблоко"],
    ⁡ тут почему то эмодзи нельзя вставить, я вставляю, но при публикации комента все эмодзи очищаются
    Python
    import asyncio
    from telethon import TelegramClient, events
    from telethon.tl.types import ReplyInlineMarkup

    # Словарь эмодзи еды -> названия (русский)
    FOOD_EMOJI_MAP = {
    "": ["яблок", "яблоко"],
    "": ["клубник", "клубника"],
    "": ["виноград"],
    "": ["арбуз"],
    "": ["****"],
    "": ["персик"],
    "": ["вишн", "черешн"],
    "": ["лимон"],
    "": ["мандарин", "апельсин"],
    "": ["ананас"],
    "": ["манго"],
    "": ["банан"],
    "": ["груш"],
    "": ["дын"],
    "": ["голубик", "черник"],
    "": ["томат", "помидор"],
    "": ["кокос"],
    "": ["авокадо"],
    }

    def find_target_emoji(caption: str) -> str | None:
    """Находит нужный эмодзи по тексту капчи."""
    caption_lower = caption.lower()
    for emoji, keywords in FOOD_EMOJI_MAP.items():
    if any(kw in caption_lower for kw in keywords):
    return emoji
    return None

    def solve_captcha(message) -> int | None:
    """
    Возвращает индекс кнопки для нажатия.
    Кнопки идут в 2 ряда по 3.
    """
    text = message.text or message.message or ""
    target_emoji = find_target_emoji(text)
    if not target_emoji:
    return None

    markup = message.reply_markup
    if not isinstance(markup, ReplyInlineMarkup):
    return None

    idx = 0
    for row in markup.rows:
    for button in row.buttons:
    btn_text = button.text.strip()
    if target_emoji in btn_text:
    return idx
    idx += 1
    return None


    async def handle_captcha(event):
    msg = event.message
    button_index = solve_captcha(msg)

    if button_index is not None:
    print(f"Капча найдена! Нажимаю кнопку #{button_index}")
    await asyncio.sleep(1.5) # Небольшая задержка — выглядит естественнее
    await msg.click(button_index)
    else:
    print("Не удалось распознать капчу:", msg.text)


    async def main():
    client = TelegramClient("session", API_ID, API_HASH)
    await client.start(phone=PHONE)

    BOT_USERNAME = "@your_bot" # username бота

    @client.on(events.NewMessage(from_users=BOT_USERNAME))
    async def on_message(event):
    msg = event.message
    text = (msg.text or "").lower()

    # Проверяем что это капча
    if "капч" in text or "активировать" in text or "нажми" in text:
    await handle_captcha(event)

    print("Слушаю сообщения...")
    await client.run_until_disconnected()


    API_ID = 123456 # my.telegram.org
    API_HASH = "your_hash"
    PHONE = "+79001234567"

    asyncio.run(main())

    Ключевые моменты

    ⁡message.reply_markup
    ⁡ — содержит все кнопки инлайн-клавиатуры
    ⁡msg.click(index)
    ⁡ — нажимает кнопку по порядковому индексу (0–5)
    Задержка
    ⁡asyncio.sleep(1.5)
    ⁡ снижает риск блокировки за слишком быстрый ответ
    Словарь
    ⁡FOOD_EMOJI_MAP
    ⁡ можно расширять под другие эмодзи капчи
     
Loading...