telethon не работает с прокси
пытаюсь произвести вход в аккаунт через прокси,но входит под моим айпи и просто игнорирует прокси (прокси рабочие,проверял)
перепробовал очень много разных способов,буду благодарен за помощь (Допонительно: софт работает с GUI PyQT6)
async def _async_login_to_telegram(self):
client = None
try:
# Получение данных с полей ввода
api_id = self.apiid_field_add.text().strip()
api_hash = self.apihash_field_add.text().strip()
phone_number = self.phone_number_field_add.text().strip()
# Проверка, что все поля заполнены
if not all([api_id, api_hash, phone_number]):
self.show_error_message("Заполните все поля")
return
import socks # Импорт библиотеки для работы с прокси
proxy = (
'socks5', # Тип прокси (socks4/socks5/http)
'IP', # IP адрес прокси
PORT, # Порт прокси
True, # Требуется ли авторизация
'USERNAME', # Логин
'PASSWORD' # Пароль
)
# Создание клиента Telegram
client = TelegramClient(
session=StringSession(), # Создание сессии
api_id=int(api_id), # API ID
api_hash=api_hash, # API Hash
proxy=proxy # Прокси-сервер
)
# Подключение к Telegram
await client.connect()
# Проверка авторизации пользователя
if not await client.is_user_authorized():
try:
# Отправка запроса на получение кода подтверждения
sent_code = await client.send_code_request(phone_number)
except FloodWaitError as e:
# Если слишком много запросов, Telegram блокирует временно
wait_minutes = e.seconds // 60
self.show_error_message(
f"Telegram ограничил запросы. Попробуйте через {wait_minutes} минут.\n"
f"Причина: слишком много запросов кода для этого номера."
)
return
# Запрос кода у пользователя
code, ok = QInputDialog.getText(
self,
'Код подтверждения',
f'Введите код из Telegram для {phone_number}:'
)
if not ok:
return
try:
# Вход в аккаунт с кодом подтверждения
await client.sign_in(
phone_number,
code.strip(),
phone_code_hash=sent_code.phone_code_hash
)
except SessionPasswordNeededError:
# Если включена двухфакторная аутентификация, запросить пароль
password, ok = QInputDialog.getText(
self,
'2FA Пароль',
'Введите пароль двухфакторной аутентификации:'
)
if ok and password:
await client.sign_in(password=password.strip())
# Сохранение строки сессии после успешной авторизации
session_string = client.session.save()
# Сохранение данных аккаунта
self.save_telegram_account({
'api_id': api_id,
'api_hash': api_hash,
'phone_number': phone_number,
'date': datetime.datetime.now().isoformat(), # Дата сохранения
'session_string': session_string, # Строка сессии
'proxy': { # Данные прокси
'type': 'socks5',
'server': 'IP',
'port': PORT,
'username': 'USERNAME',
'password': 'PASSWORD'
}
})
# Уведомление пользователя об успешной авторизации
self.show_success_message("Акаунт успешно добавлен")
self.manage_my_accounts_page_call()
except Exception as e:
# Логирование ошибки и вывод пользователю
logging.error(f"Ошибка: {str(e)}", exc_info=True)
self.show_error_message(f"Ошибка авторизации: {str(e)}")
finally:
# Отключение клиента при завершении работы
if client and client.is_connected():
await client.disconnect()
Вызов самой функции происходит следующим образом:
self.submit_button_add_account.clicked.connect(self.login_to_telegram)
`def login_to_telegram(self):
# Переносим логику в асинхронную функцию
asyncio.run(self._async_login_to_telegram())`