Загрузка...

Скрипт Вылетает сессия или банятся аккаунты pyrogram/telethon

Тема в разделе Python создана пользователем MK_Shop 7 май 2025. 397 просмотров

Загрузка...
  1. MK_Shop
    MK_Shop Автор темы 7 май 2025 0 15 авг 2020
    Всем привет, с сентября прошлого года пытаюсь организовать полностью автоматическую систему которая настраивает аккаунты, подписывается на каналы, пишет комментарии под посты, пишет посты в новостном канале с пересылкой и прогонкой через нейронку с подбором подходящего медиа под пост.

    И у меня такая проблема - аккаунты или банятся или вылетают сессии с ошибкой [401 AUTH_KEY_UNREGISTERED] (caused by "updates.GetState") Pyrogram 2.2.10 thinks: The specified authorization key is not registered in the system (for example, a PFS temporary key has expired).

    Или же при блокировке аккаунта [401 USER_DEACTIVATED_BAN] (caused by "updates.GetState") Pyrogram 2.2.10 thinks: The current account was deleted and banned by Telegram's antispam system.←[0m

    Суть в том, что аккаунты отлетают даже после входа через апи, т.е. единственное что было сделано с аккаунтом, это вход через API, и в этот же момент может прилететь ошибка 1 или 2. Прилетают они случайно - могут через час, могут через 5 секунд. Но это происходит с каждым аккаунтом. Видел похожие темы на лолзе, но ни один вариант мне не помог.

    Т.е. я пробовал: разные ****** разных стран, подмена system_version например 4.16.30-vxYOUR_TEXT и тд, подмена device_model например на "iPhone 13 Pro Max" и другие что писали на форумах, запускать код с дедика/виртуальной машины. Пробовал и telethon и pyrogram, пробовал ставить APP ID и APP HASH свои новые которые регал на мутелеграморг и пробовал официальные от тг десктоп тг веб тг андроид.
    Пробовал разные способы авторизации, использовал готовые session telethon/pyrogram с маркета, пробовал делать свои, делал их из Tdata, пробовал брать старые session которым по несколько лет(у меня лежал пак акков тг с 18 года).

    Каждый раз был один результат: или бан антиспам системой или же вылет сессии. ****** если что использовал с разных сайтов, - резидентские, общие, мобильные, мобильные где свитч айпи происходит.

    Лучший результат показывали аккаунты индонезии, они живут дольше других но тоже отлетают. пробовал номера: Мьянма, индонезия, США, Канада, Россия

    Кто в теме - помогите пожалуйста, скоро будет год как вожусь с этим и решения так и не нашёл.

    пример кода который используется для чека спам/гео блока на pyrogram:
    Python
    import asyncio
    import json
    import logging
    import os
    from datetime import datetime
    from pyrogram import Client, filters

    # === НАСТРОЙКИ ===
    ACCOUNT_FILE = "1.json"
    SESSION_DIR = os.path.basename(os.path.dirname(os.path.abspath(__file__)))

    # Логирование
    logging.basicConfig(level=logging.INFO, format="%(message)s")
    logger = logging.getLogger()

    class Color:
    INFO = '\033[96m'
    SUCCESS = '\033[92m'
    WARNING = '\033[93m'
    ERROR = '\033[91m'
    RESET = '\033[0m'
    DATE = '\033[91m'
    NUMERIC = '\033[93m'

    def read_json(filename):
    with open(filename, 'r', encoding='utf-8') as f:
    return json.load(f)

    def format_time_left(time_left):
    days = time_left.days
    hours, remainder = divmod(time_left.seconds, 3600)
    minutes, seconds = divmod(remainder, 60)
    parts = []
    if days > 0:
    parts.append(f"{Color.NUMERIC}{days} день{'а' if days > 1 else ''}{Color.RESET}")
    if hours > 0:
    parts.append(f"{Color.NUMERIC}{hours} час{'а' if hours > 1 else ''}{Color.RESET}")
    if minutes > 0:
    parts.append(f"{Color.NUMERIC}{minutes} минут{'ы' if minutes > 1 else ''}{Color.RESET}")
    if seconds > 0:
    parts.append(f"{Color.NUMERIC}{seconds} секунд{'ы' if seconds > 1 else ''}{Color.RESET}")
    return ' '.join(parts)

    async def check_spambot(app):
    try:
    await asyncio.sleep(2)
    await app.send_message("@spambot", "/start")

    @app.on_message(filters.user(178220800))
    async def handler(client, message):
    text = message.text
    logger.info(f"{Color.INFO}[ACC {SESSION_DIR}] Полученный ответ от @spambot:{Color.RESET}")

    if "Ограничения будут автоматически сняты" in text:
    date_line = text.split("Ограничения будут автоматически сняты ")[1].split(".")[0]
    end_time = datetime.strptime(date_line, "%d %b %Y, %H:%M UTC")
    left = end_time - datetime.utcnow()
    logger.info(f"{Color.ERROR}[ACC {SESSION_DIR}] Временный бан. Конец: {Color.DATE}{date_line} | Осталось:({format_time_left(left)}){Color.RESET}")

    elif "Your account will be automatically released on" in text:
    date_line = text.split("Your account will be automatically released on ")[1].split(".")[0]
    end_time = datetime.strptime(date_line, "%d %b %Y, %H:%M UTC")
    left = end_time - datetime.utcnow()
    logger.info(f"{Color.ERROR}[ACC {SESSION_DIR}] Временный бан. Конец: {Color.DATE}{date_line} | Осталось:({format_time_left(left)}){Color.RESET}")

    elif "излишне сурово реагирует на некоторые номера" in text or "Unfortunately, some phone numbers may trigger a harsh response" in text:
    logger.info(f"{Color.WARNING}[ACC {SESSION_DIR}] Геоблокировка! Телеграм подозревает номер. Нужно подождать.{Color.RESET}")

    elif "on forever" in text.lower() or "навсегда" in text.lower():
    logger.info(f"{Color.ERROR}[ACC {SESSION_DIR}] Вечный спамблок на аккаунте!{Color.RESET}")

    elif "Good news, no limits are currently applied to your account" in text or "Ваш аккаунт свободен от каких-либо ограничений" in text:
    logger.info(f"{Color.SUCCESS}[ACC {SESSION_DIR}] Аккаунт чист! Ограничений нет !{Color.RESET}")

    else:
    logger.warning(f"{Color.WARNING}[ACC {SESSION_DIR}] Неизвестный ответ от @spambot:\n{text}{Color.RESET}")

    await asyncio.sleep(5)

    except Exception as e:
    logger.error(f"{Color.ERROR}[ACC {SESSION_DIR}] Ошибка при проверке через @spambot: {e}{Color.RESET}")

    async def main():
    account = read_json(ACCOUNT_FILE)
    proxy_list = account.get("proxy")

    proxy = {
    "scheme": "socks5", # SOCKS5
    "hostname": "(",
    "port": (,
    "username": "(",
    "password": "("
    }


    attempt = 1
    app = None

    while True:
    try:
    logger.info(f"{Color.INFO}[ACC {SESSION_DIR}] Попытка подключения: {Color.NUMERIC}{attempt}{Color.RESET}")
    start_time = datetime.utcnow()

    app = Client(
    name=account["session_file"],
    api_id=account["app_id"],
    api_hash=account["app_hash"],
    device_model=account["device"],
    system_version=account["sdk"],
    app_version=account["app_version"],
    lang_code=account["lang_code"],
    proxy=proxy
    )

    await app.start()
    elapsed = datetime.utcnow() - start_time
    logger.info(f"{Color.SUCCESS}[ACC {SESSION_DIR}] Подключение успешно за {Color.NUMERIC}{elapsed.total_seconds():.2f} секунд!{Color.RESET}")

    me = await app.get_me()
    if me:
    logger.info(f"{Color.SUCCESS}[ACC {SESSION_DIR}] Авторизация успешна: {account['device']}{Color.RESET}")
    await check_spambot(app)

    logger.info(f"{Color.INFO}[ACC {SESSION_DIR}] Аккаунт активен 5 секунд...{Color.RESET}")
    await asyncio.sleep(5)

    await app.stop()
    logger.info(f"{Color.SUCCESS}[ACC {SESSION_DIR}] Клиент завершён корректно!{Color.RESET}")
    break
    else:
    logger.error(f"{Color.ERROR}[ACC {SESSION_DIR}] Не авторизован! Проверь сессию.{Color.RESET}")
    await app.stop()
    break

    except Exception as e:
    elapsed = datetime.utcnow() - start_time
    logger.error(f"{Color.ERROR}[ACC {SESSION_DIR}] Ошибка за {Color.NUMERIC}{elapsed.total_seconds():.2f} секунд: {e}{Color.RESET}")
    attempt += 1
    await asyncio.sleep(3)

    if __name__ == "__main__":
    try:
    asyncio.run(main())
    except RuntimeError as e:
    if str(e) != 'Event loop is closed':
    raise
     
    7 май 2025 Изменено
  2. fishinstruktor
    данный функционал есть в make com, проще будет конструктор создать
     
    1. Посмотреть предыдущие комментарии (1)
    2. fishinstruktor
      MK_Shop, а как часто слетает? может логичнее автозамену аккаунтов сделать просто и грузить например 10 на неделю
    3. MK_Shop Автор темы
      fishinstruktor, часто слетают после просто авторизации ещё до выполнения каких-либо действий, пачками
    4. fishinstruktor
      MK_Shop, просто мой тебе совет попробуй собрать на make за день такой скрипт, это бесплатно и слетать ничего не будет тк там через бота или постбота воркает связка
  3. Xindy
    Xindy 7 май 2025 Большой брат - https://lolz.live/threads/8777700/ 1336 10 июл 2020
    Откуда берешь аккаунты?
    Сразу покупаешь на маркете и заходишь в них?
    Что если не получать api hash и api id, а скачать сессию и через него авторизоваться?
     
    1. Посмотреть предыдущие комментарии (5)
    2. MK_Shop Автор темы
      Xindy, отредактировал пост и прикрепил в него пример кода который используется для написания в @spambot для проверки гео/спам блока
    3. MK_Shop Автор темы
      Xindy, в том и суть, что сессия слетает при авторизации через API и выкидывает со всех устройств
  4. Thor
    Thor 7 май 2025 :love2: Обменник - lolz.live/threads/8756449 :love2: 220 1 июл 2024
    telethon забудь, код pyrogram в студию
     
    1. MK_Shop Автор темы
      Thor, отредактировал пост и прикрепил в него пример кода который используется для написания в @spambot для проверки гео/спам блока
  5. KLINTXXXGOD
    KLINTXXXGOD 7 май 2025 </> Разработка - https://lolz.live/threads/7695405 756 10 фев 2023
     
    7 май 2025 Изменено
    1. MK_Shop Автор темы
      KLINTXXXGOD, пробовал через +- такую же настррйку клиента когда в самом начале пытался на телетоне сделать, выдавало то же самое
    2. KLINTXXXGOD
      MK_Shop, Отлеги сессии давай больше, если ****ает акки значит система безопасности ТГ выебнулась, а если это так значит чето подозрительное сделал
    3. MK_Shop Автор темы
      KLINTXXXGOD, прикрепил код который просто тестит через Spamblock, проверяет гео/спам блок через него, никаких подозрительных действий для бана :/
  6. il44kvk
    il44kvk 7 май 2025 A person who thinks all the time :love2: 143 25 окт 2021
    у меня тоже сессии слетают - если твои: лучшие ******, лучшие номера. Если от поставщика - смени его
     
    1. MK_Shop Автор темы
      il44kvk, пробовал номера/акки/****** разных поставщиков, результат один. через тдата всё ок - через апи слетают или банятся сразу
  7. MK_Shop
    MK_Shop Автор темы 7 май 2025 0 15 авг 2020
    есть ещё варианты? >.<
     
  8. gawrgura
    gawrgura 7 май 2025 245 20 фев 2022
    В клиенте недостаточно параметров передаешь
     
    1. MK_Shop Автор темы
      gawrgura, какие ещё нужны?
  9. DEVOYOR
    DEVOYOR 7 май 2025 70 29 апр 2025
    Ну я аккаунты прогревал сначало перед из использованием , писал другим аккаунт в Бд. Попробуй так , сам сел писать скрипты для этой херни
     
    1. MK_Shop Автор темы
      DEVOYOR, да беда в том что акки отлетают ещё до каких-либо действий часто очень, только прошла инициализация через проксю и через 2-5 секунд акк заблочен/вылетела сессия
  10. Thor
    Thor 7 май 2025 :love2: Обменник - lolz.live/threads/8756449 :love2: 220 1 июл 2024
    кажется все проблемы исходили от app id / app hash кривых и от того что я не перелогинился с номера телефона, сейчас на пробу поставил ссбор по 5к сообщений за раз, всё работает, до этого на 50 сообщениях в минуту жить планировал с одного аккаунта


    У человека была похожая проблема. Попробуй
     
    1. MK_Shop Автор темы
      Thor, не совсем понял, что именно с app id и app hash нужно делать или каким именно их способом надо получать чтобы всё ок было,
    2. Thor
    3. Thor
      7 май 2025 Изменено
Top