Всем привет! Как защититься от флуда ботами в тг бота? Пробовал ограничить команду /start для новых пользователей, безуспешно, ботов довольно много. Отключил также логирование в бд, бот падает не намертво, но очень сильно лагает, пользоваться не возможно, может у кого есть идеи ? Бот на вебхуке, язык PHP
Ты хочешь сказать, что при приходе сообщения там не написано что оно "от бота"? Не верю. Там точно есть поле, проверяя которое можно писать в ответ "сам ты бот".
А если они таким образом ддосят и им вообще пофиг, отвечаешь ты или нет, их просто тьма, то думаю надо знаешь чего задумать... хмм! Написание от имени бота .conf файла для nginx или iptables, который бота будет в исключения добавлять, а потом перечитывать) например по крону каждые 5 мин.
Как сказали выше - лонг пулинг тоже вещь. Все твои входящие обрабатывает скрипт, который всё, что делает - запускает Predis и пишет в очередь "новое сообщение" (должен вообще в 6мб памяти отрабатывать), а второй воркер его разгребает в порядке очереди, запуская уже непосредственно скрипт который или отсылает что-то боту, или дулю показывает. В этом случае у тебя не 10000 скриптов на пыхе будет работать, а три. Один ставит задачу в очередь, один постоянно очередь чекает, и время от времени запускает третий. Хотя эти три в пиковые моменты могут быть "10002", но первый должен ультрабыстро отрабатывать, без логики.
Старт или нет, там в метаданных сообщения точно должно быть "от кого" и там точно можно понять что оно - бот. И надо писать в файл список кому нельзя. Со временем все 500 попадут в игнорлист. Не думаю что телеграм позволяет делать "генерацию сотни новых ботов" с помощью скрипта. Главное здесь чтобы первый скрипт отрабатывал как космолет, очень быстро, не начинал чето там скачивать из базы данных, думать что ему написали и когда. Он либо ставит в очередь на разбор, либо сам проверяет Symfony\RedisCache на тему "а запись с таким айди есть?" - "есть" = die();
floppy-drive, если я понимаю правильно, то люди точно делают, чтобы в ответ на /start приходило сообщение "здрасте, я даня крастер", а значит поймать точно можно. И запретить тоже.