
Содержание
- 1 Какие задачи выполняет бот для проверки proxy
- 2 Принцип работы бота для проверки proxy
- 3 Пошаговая инструкция, как сделать бот для проверки proxy на Python
- 4 Демонстрация работы
- 5 Подводя итоги
Все, что связано с использованием большого количества аккаунтов, априори подразумевает и использования большого количества proxy. Ведь когда с одного IP-адреса 100 разных аккаунтов совершают одно и то же действие — это всегда подозрительно выглядит в глазах платформы. И да, те, кто занимается всем этим делом серьезно, используют индивидуальные proxy.
Но ведь есть и новички, и УБТшники, и те, кто в целом не сильно переживает о сроке жизни акка, задачи ведь бывают разными. В общем, есть те, кто пользуется бесплатными публичными proxy. Вот только их использование — это всегда куча потраченного времени на чекинг. Ведь бесплатные proxy очень часто отваливаются. Конечно, можно установить proxy-чекер. Но зачем, если можно использовать собственный бот?
Какие задачи выполняет бот для проверки proxy
Бот для проверки proxy проверяет proxy — ваш Кэп. Но давайте распишем чуть подробнее, для чего это может использоваться:
- Экономия времени — куда удобнее получить список работающих proxy, чем проверять каждый отдельно.
- УБТ-залив — так как УБТ концептуально не подразумевает закупа полноценных индивидуальных proxy, то бесплатные отлично для этого подходят. Хотя чисто формально их можно использовать и в обычном заливе. Но мы не советуем — очень повышает риск бана.
- Автоматизация сравнения скорости proxy — в бот вшито простенькое разделение на быстрые и медленные proxy.
- Увеличения срока жизни proxy — бесплатные чекеры часто сливают инфу о proxy агрегаторам, что делает и без того публичные сервера еще более публичными. Все это негативно сказывается на сроке их жизни.
- Безопасность — любые программы, в особенности для «сереньких делишек», всегда подразумевают риск заражения машины. Здесь же исходный код открыт.
Принцип работы бота для проверки proxy
Алгоритмически бот очень простой, и принцип его работы сводится к:
- Получению списка proxy.
- Последовательной проверке каждого адреса из списка.
- Анализу времени ответа серверов.
- Формированию трех списков — быстрых, медленных и нерабочих прокси. При этом следует понимать, что в список нерабочих попадает все, что не ответило в течение указанного времени. А в список медленных — все, что ответило медленнее указанного времени, но быстрее, чем «нерабочие».
- Формированию отчета в виде сообщения и лога проверок в виде txt-файла.
Отдельно рассмотрим переключение между режимами работы. Первый режим /mode1, используется по умолчанию и подразумевает передачу боту аккуратного списка, где каждый proxy указан с новой строки. Второй режим /mode2 — предназначен для работы с копипастой, в которой куча мусора. Это сделано для того, чтобы можно было просто зайти на proxy-агрегатор, скопипастить всю страницу и закинуть в бот.
Но следует понимать, что это просто бот, а не ИИ. Обеспечить его работоспособность при взаимодействии с любыми комбинациями символов — задача сложная. Еще сложнее — проверить все возможные комбинации, прежде чем делиться кодом. Поэтому фича реализована на регулярных выражениях и вынесена в отдельный режим работы — это опциональная и нестабильная плюшка. Стабильная проверка же гарантируется только в первом режиме.
Пошаговая инструкция, как сделать бот для проверки proxy на Python
По классике начинаем с развертывания сервера. Можно развернуть сервер как на своем ПК, так и на арендованном железе. Для тестов советуем свой ПК. Для полноценной работы — аренду. Ну и да — речь о python-сервере.
Затем сервер нужно настроить. Вводим в консоль:
pip install asyncio
pip install aiogram
pip install aiohttp
Затем действуем так:
- Пишем BotFather, делаем все по его инструкции и сохраняем токен.
- На серваке создаем файл 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()) - Заменяем “ТОКЕН СЮДА” на свой токен.
- Запускаем бот командой python bot.py
- Проверяем работоспособность.
Демонстрация работы
Пишем боту и шлем один адрес для проверки — бот начинает проверять
Бот пишет, кто proxy невалиден. Пробуем другой адрес — ответ есть. Пробуем три разных адреса — бот разделяет рабочие и нерабочие proxy
Копипастим рандомный агрегатор. Видим, что все не работает. Так быть не может (на самом деле может) — переключаем режим на /mode2. Бот фильтрует мусор — теперь все как надо. Вообще, если бы мы прислали список без мусора — проверка дала бы правильный результат. Но это время. Потому и был добавлен второй режим работы
Имитируем ввод одной строкой — бот ее обрабатывает. На крайнем правом скрине демонстрация изменений после переназначения границы времени между медленными и быстрыми прокси с 65 мс на 1 сек
Место в коде, где было переназначение
Подводя итоги
Как видите, использовать сомнительные сторонние чекеры вовсе не обязательно — ведь создать собственный бот proxy-чекер проще, чем кажется. Следите за нашей Телегой, чтобы первыми получать коды арбитражных ботов.
Спасибо, что прочитали этот пост, не забудьте подписаться!