Задать вопрос
@niktomimo

Почему удаляет аккаунт телеграмм на python telethon?

Такая проблема, заходит в аккаунт спокойно, отправляю одно сообщение и через 20 секунд аккаунт просто удаляется в телеграмм, использую аккаунт Англии и прокси тоже

import json
import os
import random
import time
import sqlite3
from telethon.sync import TelegramClient

# Функция для отправки сообщения пользователю
def send_message(client, username, message):
    try:
        client.send_message(username, message)
        print(f'Сообщение отправлено пользователю {username}')
    except Exception as e:
        print(f'Ошибка при отправке сообщения: {e}')

# Подключение к базе данных SQLite3
conn = sqlite3.connect('users.db')
cursor = conn.cursor()


# Выбор случайного прокси из базы данных
cursor.execute("SELECT ip, port, username, password FROM proxies WHERE country = ' Англия' ORDER BY RANDOM() LIMIT 1")
proxy_data = cursor.fetchone()

# Формирование прокси из данных
proxy = {
    'proxy_type': 'socks5',
    'addr': proxy_data[0],
    'port': proxy_data[1],
    'username': proxy_data[2] if proxy_data[2] else None,
    'password': proxy_data[3] if proxy_data[3] else None
}

for root, _, files in os.walk('accounts'):
    for file in files:
        if file.split('.')[-1] == 'json':
            with open(f'accounts/{file}', 'r') as json_file:
                config = json.load(json_file)

            # Проверяем, есть ли значение "proxy" в файле JSON и оно равно null
            if 'proxy' in config and config['proxy'] is None:
                # Если значение равно null, заменяем его на новое значение прокси
                config['proxy'] = [2, proxy_data[0], proxy_data[1], proxy_data[2], proxy_data[3]]

                # Записываем обновленные данные обратно в файл JSON
                with open(f'accounts/{file}', 'w') as json_file:
                    json.dump(config, json_file)

            client = TelegramClient(
                session=f'accounts/{config["session_file"]}',
                api_id=config['app_id'],
                api_hash=config['app_hash'],
                system_version=config['app_version'],
                device_model=config['device'],
                proxy=proxy  # Добавляем настройки прокси
            )

            client.start()

            if not client.is_user_authorized():
                print(f'Не удалось зайти в аккаунт {file}')
            else:
                print(f'Удалось зайти в аккаунт {file}')

                while True:
                    target_username = input('Введите юзернейм (или "exit" для завершения): ')
                    if target_username.lower() == 'exit':
                        break

                    message = input('Введите сообщение: ')
                    send_message(client, target_username, message)

                    # Добавляем случайную задержку между отправкой сообщений
                    time.sleep(random.uniform(15, 20))

            client.disconnect()

# Закрытие соединения с базой данных
conn.close()
  • Вопрос задан
  • 984 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Скорее всего вы применяете клиентское API телеграма не по назначению или вопреки лицензии. Например, вы, может быть, рассылаете спам, или скам, а может быть делаете что-то ещё, что противоречит добросовестному использованию сети.
Конкретной причины, по которой вас блокируют вам никто скорее всего не скажет. В таких случаях самое эффективное - это максимальнео расплывчато описывать причины и критерии возможных блокировок, чтобы играясь с пороговыми критериями злоумышленники не могли подстроиться под ограничения.

Скорее всего ограничения и критерии, по которым вашу деятельность пресекают, не заключаются в чем-то одном. Скорее всего критериев много и они не однозначно влияют на принятие решения о блокировке. Другими словами, если быть по ту сторону баррикад от вас, то причины блокировок нужно сделать максимально многофакторными, диверсифицированными, неявными и нечеткими. Где-то нужно даже вводить рандомизацию и отложенную блокировку, если вы предпринимаете серьёзные меры, чтобы ваш софт притворялся валидным штатным клиентом. В вашем же случае, видимо, паттерн использования протокола и АПИ выдаёт вас мгновенно.

Подумайте чем ваш "клиент" телеграма отличается от добросовестно выполненного клиента для штатных целей? Может быть он не сохраняет контактов? Может быть коннекты идут из одной подсети и она уже "на особом счету"? Может быть На ваши сообщения много жаловались, и теперь отдельные специальные эвристики вылавливают клиентов, похожих по паттерну на ваши и банят их сразу же?

Никто вам не скажет конкретных критериев. Никто не допустит, чтобы эти критерии были всегда неизменными и четкими. Это не эффективно для борьбы со спамерами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы