Traffic Cardinal Traffic Cardinal написал 20.03.2025

Создаем Telegram-бот для проверки proxy

Traffic Cardinal Traffic Cardinal написал 20.03.2025
8 мин
0
487
Содержание

Все, что связано с использованием большого количества аккаунтов, априори подразумевает и использования большого количества proxy. Ведь когда с одного IP-адреса 100 разных аккаунтов совершают одно и то же действие — это всегда подозрительно выглядит в глазах платформы. И да, те, кто занимается всем этим делом серьезно, используют индивидуальные proxy.

banner banner

Но ведь есть и новички, и УБТшники, и те, кто в целом не сильно переживает о сроке жизни акка, задачи ведь бывают разными. В общем, есть те, кто пользуется бесплатными публичными proxy. Вот только их использование — это всегда куча потраченного времени на чекинг. Ведь бесплатные proxy очень часто отваливаются. Конечно, можно установить proxy-чекер. Но зачем, если можно использовать собственный бот?

Какие задачи выполняет бот для проверки proxy

Бот для проверки proxy проверяет proxy — ваш Кэп. Но давайте распишем чуть подробнее, для чего это может использоваться:

  • Экономия времени — куда удобнее получить список работающих proxy, чем проверять каждый отдельно.
  • УБТ-залив — так как УБТ концептуально не подразумевает закупа полноценных индивидуальных proxy, то бесплатные отлично для этого подходят. Хотя чисто формально их можно использовать и в обычном заливе. Но мы не советуем — очень повышает риск бана.
  • Автоматизация сравнения скорости proxy — в бот вшито простенькое разделение на быстрые и медленные proxy.
  • Увеличения срока жизни proxy — бесплатные чекеры часто сливают инфу о proxy агрегаторам, что делает и без того публичные сервера еще более публичными. Все это негативно сказывается на сроке их жизни.
  • Безопасность — любые программы, в особенности для «сереньких делишек», всегда подразумевают риск заражения машины. Здесь же исходный код открыт.

Принцип работы бота для проверки proxy

Алгоритмически бот очень простой, и принцип его работы сводится к:

  1. Получению списка proxy.
  2. Последовательной проверке каждого адреса из списка.
  3. Анализу времени ответа серверов.
  4. Формированию трех списков — быстрых, медленных и нерабочих прокси. При этом следует понимать, что в список нерабочих попадает все, что не ответило в течение указанного времени. А в список медленных — все, что ответило медленнее указанного времени, но быстрее, чем «нерабочие».
  5. Формированию отчета в виде сообщения и лога проверок в виде txt-файла.

Отдельно рассмотрим переключение между режимами работы. Первый режим /mode1, используется по умолчанию и подразумевает передачу боту аккуратного списка, где каждый proxy указан с новой строки. Второй режим /mode2 — предназначен для работы с копипастой, в которой куча мусора. Это сделано для того, чтобы можно было просто зайти на proxy-агрегатор, скопипастить всю страницу и закинуть в бот.

Но следует понимать, что это просто бот, а не ИИ. Обеспечить его работоспособность при взаимодействии с любыми комбинациями символов — задача сложная. Еще сложнее — проверить все возможные комбинации, прежде чем делиться кодом. Поэтому фича реализована на регулярных выражениях и вынесена в отдельный режим работы — это опциональная и нестабильная плюшка. Стабильная проверка же гарантируется только в первом режиме.

Пошаговая инструкция, как сделать бот для проверки proxy на Python

По классике начинаем с развертывания сервера. Можно развернуть сервер как на своем ПК, так и на арендованном железе. Для тестов советуем свой ПК. Для полноценной работы — аренду. Ну и да — речь о python-сервере.

Затем сервер нужно настроить. Вводим в консоль:

pip install asyncio

pip install aiogram

pip install aiohttp

Затем действуем так:

  1. Пишем BotFather, делаем все по его инструкции и сохраняем токен.
  2. На серваке создаем файл bot.py, вписываем в него:

    import asyncio
    import aiohttpimport re
    from aiogram import Bot, Dispatcher, types
    from aiogram.enums import ParseMode
    from aiogram.client.default import DefaultBotProperties
    from aiogram.filters import Command
    TOKEN = "
    ТОКЕН СЮДА"
    TIMEOUT = 5 # Время проверки прокси (сек)
    SLOW_THRESHOLD = 0.065 # Граница между "быстрым" и "медленным" прокси
    bot = Bot(token=TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
    dp = Dispatcher()
    router = dp
    current_mode = 1 # Режим по умолчанию (1 - аккуратный список)
    async def check_proxy(session, proxy):
    try:
    start = asyncio.get_event_loop().time()
    async with session.get("http://google.com", proxy=f"http://{proxy}", timeout=TIMEOUT):
    elapsed = asyncio.get_event_loop().time() - start
    if elapsed < SLOW_THRESHOLD:
    return proxy, "✅ Быстрое"
    else:
    return proxy, "⚠️ Медленное"
    except:
    return proxy, "❌ Не работает"
    @router.message(Command("start"))
    async def handle_start(message: types.Message):
    await message.answer("Привет! Отправь список прокси в формате IP:PORT (каждый с новой строки) или используй команды /mode1 и /mode2 для выбора режима.")
    @router.message(Command("mode1"))
    async def handle_mode1(message: types.Message):
    global current_mode
    current_mode = 1
    await message.answer("Режим 1 активирован: обрабатывается аккуратный список прокси.")
    @router.message(Command("mode2"))
    async def handle_mode2(message: types.Message):
    global current_mode
    current_mode = 2
    await message.answer("Режим 2 активирован: обрабатывается неаккуратный список прокси с мусором.")
    @router.message()
    async def handle_proxies(message: types.Message):
    if not message.text:
    await message.answer("Отправь список прокси в формате IP:PORT (каждый с новой строки)")
    return
    if message.text.startswith("/"):
    return
    if current_mode == 1:
    proxies = message.text.strip().split("\n")
    else:
    proxies = re.findall(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5})', message.text)
    valid_proxies = [p.strip() for p in proxies if p.strip()]
    if not valid_proxies:
    await message.answer("Не найдено прокси в сообщении. Отправь список в формате IP:PORT.")
    return
    await message.answer("🔄 Проверяю прокси... Это займет несколько секунд.")
    async with aiohttp.ClientSession() as session:
    tasks = [check_proxy(session, proxy) for proxy in valid_proxies]
    results = await asyncio.gather(*tasks)
    fast, slow, dead = [], [], []
    for proxy, status in results:
    if "Быстрое" in status:
    fast.append(proxy)
    elif "Медленное" in status:
    slow.append(proxy)
    else:
    dead.append(proxy)
    response = "<b>Результаты проверки:</b>\n"
    response += f"\n✅ <b>Быстрые:</b> ({len(fast)})\n" + "\n".join(fast) if fast else ""
    response += f"\n⚠️ <b>Медленные:</b> ({len(slow)})\n" + "\n".join(slow) if slow else ""
    response += f"\n❌ <b>Не работают:</b> ({len(dead)})\n" + "\n".join(dead) if dead else ""
    await message.answer(response or "Все прокси не работают.")
    async def main():
    await dp.start_polling(bot)
    if __name__ == "__main__":
    asyncio.run
    (main())
  3. Заменяем “ТОКЕН СЮДА” на свой токен.
  4. Запускаем бот командой python bot.py
  5. Проверяем работоспособность.

Демонстрация работы

Пишем боту и шлем один адрес для проверки — бот начинает проверять
Пишем боту и шлем один адрес для проверки — бот начинает проверять

Бот пишет, кто proxy невалиден. Пробуем другой адрес — ответ есть. Пробуем три разных адреса — бот разделяет рабочие и нерабочие proxy
Бот пишет, кто proxy невалиден. Пробуем другой адрес — ответ есть. Пробуем три разных адреса — бот разделяет рабочие и нерабочие proxy

Копипастим рандомный агрегатор. Видим, что все не работает. Так быть не может (на самом деле может) — переключаем режим на /mode2. Бот фильтрует мусор — теперь все как надо. Вообще, если бы мы прислали список без мусора — проверка дала бы правильный результат. Но это время. Потому и был добавлен второй режим работы
Копипастим рандомный агрегатор. Видим, что все не работает. Так быть не может (на самом деле может) — переключаем режим на /mode2. Бот фильтрует мусор — теперь все как надо. Вообще, если бы мы прислали список без мусора — проверка дала бы правильный результат. Но это время. Потому и был добавлен второй режим работы

Имитируем ввод одной строкой — бот ее обрабатывает. На крайнем правом скрине демонстрация изменений после переназначения границы времени между медленными и быстрыми прокси с 65 мс на 1 сек
Имитируем ввод одной строкой — бот ее обрабатывает. На крайнем правом скрине демонстрация изменений после переназначения границы времени между медленными и быстрыми прокси с 65 мс на 1 сек

Место в коде, где было переназначение
Место в коде, где было переназначение

Подводя итоги

Как видите, использовать сомнительные сторонние чекеры вовсе не обязательно — ведь создать собственный бот proxy-чекер проще, чем кажется. Следите за нашей Телегой, чтобы первыми получать коды арбитражных ботов.

Здравствуйте! У вас включен блокировщик рекламы, часть сайта не будет работать!