Files
9may/check_proxy.py
2026-05-02 17:08:05 +03:00

82 lines
3.0 KiB
Python

import asyncio
import aiohttp
import sys
from config import PROXY_URL, PROXY_TYPE
async def check_proxy():
"""Проверка работоспособности прокси"""
if not PROXY_URL:
print("❌ Прокси не настроен в файле .env")
return False
print(f"\n🔍 Проверяем прокси: {PROXY_URL}")
print(f"📡 Тип прокси: {PROXY_TYPE.upper()}")
print("-" * 50)
success_count = 0
total_tests = 0
# Тест 1: Проверка подключения к Telegram API
print("\n📡 Тест: Подключение к API...")
test_urls = [
("Telegram API", "https://api.telegram.org"),
("Google", "https://google.com"),
("IP Check", "https://api.ipify.org?format=json")
]
for name, url in test_urls:
total_tests += 1
print(f" → Проверяю {name}...")
try:
async with aiohttp.ClientSession() as session:
async with session.get(url, proxy=PROXY_URL, timeout=10) as response:
if response.status == 200:
print(f" ✅ Успешно (статус: {response.status})")
success_count += 1
if "ipify" in url:
data = await response.json()
print(f" 🌐 Ваш IP через прокси: {data.get('ip')}")
else:
print(f" ❌ Ошибка: статус {response.status}")
except asyncio.TimeoutError:
print(f" ❌ Таймаут подключения")
except Exception as e:
print(f" ❌ Ошибка: {type(e).__name__}")
# Результат
print("\n" + "=" * 50)
if success_count == total_tests:
print("✅ ПРОКСИ РАБОТАЕТ!")
print("=" * 50)
return True
else:
print(f"⚠️ ПРОКСИ РАБОТАЕТ ЧАСТИЧНО ({success_count}/{total_tests} тестов)")
print("=" * 50)
return True if success_count > 0 else False
async def main():
print("\n" + "=" * 50)
print("🔍 ПРОВЕРКА ПРОКСИ ДЛЯ TELEGRAM БОТА")
print("=" * 50)
result = await check_proxy()
if result:
print("\n✅ ПРОКСИ РАБОТАЕТ! Можно запускать бота.")
print("\nЗапустите бота командой: python bot.py")
else:
print("\n❌ ПРОКСИ НЕ РАБОТАЕТ! Бот не сможет подключиться.")
print("\nРекомендации:")
print("1. Проверьте правильность данных в файле .env")
print("2. Убедитесь, что прокси-сервер активен")
print("3. Попробуйте другой прокси")
return 0 if result else 1
if __name__ == "__main__":
exit_code = asyncio.run(main())
sys.exit(exit_code)