Есть скрипт создатель сессий тг.
Нужно чтобы скрипт работал с проксями создавал сессию на прокси.
Суть проблемы: В тг авторизованных устройствах отображает без прокси. (прокси московские)
Прокси берет из Proxies.txt
Формат прокси
socks5://aaaaa:bbbbbb@11.12.80.155:8888
import os
import asyncio
import json
import re
import socks
from telethon import TelegramClient
from config import DEVICE_CONFIGS
SESSIONS_FOLDER = "sessions"
os.makedirs(SESSIONS_FOLDER, exist_ok=True)
def parse_proxy(line):
match = re.match(r'socks5://([^:]+):([^@]+)@([^\:]+):(\d+)', line)
if not match:
return None
login, password, host, port = match.groups()
return (
socks.SOCKS5,
host,
int(port),
True,
login,
password
)
def load_proxies(filename="Proxies.txt"):
proxies = []
with open(filename, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if not line or line.startswith("#"):
continue
proxy = parse_proxy(line)
if proxy:
proxies.append(proxy)
return proxies
PROXIES = load_proxies()
async def create_sessions():
with open("accounts.json", "r", encoding="utf-8") as f:
api_entries = json.load(f)["accounts"]
if len(api_entries) < 1:
print("accounts.json пуст")
return
if len(PROXIES) < 1:
print("Proxies.txt пуст или нет валидных строк")
return
idx = 0
while idx < len(api_entries):
phone = input(f"\n Введите номер телефона (+7xxxxxxxxxx) или пустую строку для выхода: ").strip()
if not phone:
print("Завершение работы.")
break
api_id = api_entries[idx]["api_id"]
api_hash = api_entries[idx]["api_hash"]
device = DEVICE_CONFIGS[idx % len(DEVICE_CONFIGS)]
proxy = PROXIES[idx % len(PROXIES)] # Берём следующий прокси из списка
print(f" Используется API #{idx+1}: {api_id}, устройство: {device['device_model']} / {device['system_version']}")
print(f" Используется прокси: {proxy[1]}:{proxy[2]} ({proxy[4]})")
session_path = os.path.join(SESSIONS_FOLDER, f"tg_{phone.replace('+', '').replace(' ', '')}")
client = TelegramClient(
session=session_path,
api_id=api_id,
api_hash=api_hash,
device_model=device["device_model"],
system_version=device["system_version"],
proxy=proxy
)
await client.connect()
if not await client.is_user_authorized():
try:
await client.send_code_request(phone)
code = input(f"[{phone}] Введите код подтверждения: ")
await client.sign_in(phone, code)
print(f"[{phone}] ✅ Сессия сохранена.")
except Exception as e:
print(f"[{phone}] ❌ Ошибка: {e}")
else:
print(f"[{phone}] Уже авторизован.")
await client.disconnect()
idx += 1
async def main():
await create_sessions()
if __name__ == "__main__":
asyncio.run(main())