Как забанить ботов на сервере nginx

Вопросы без привязки к версии. Установлена авточистка (2 года).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
southklad
phpBB 3.1.0 RC3
Сообщения: 3343
Стаж: 13 лет 3 месяца
Благодарил (а): 675 раз
Поблагодарили: 164 раза

Как забанить ботов на сервере nginx

Сообщение southklad »

Приветствую, количество гостей и там же новых ботов уже просто достало, подскажите как в nginx равилом забанить ботов по названию или по агенту, например вот бот Barkrowler . Заранее спасибо.
Изображение
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5426
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 177 раз
Поблагодарили: 749 раз

Re: Как забанить ботов на сервере nginx

Сообщение Siava »

southklad, примерно как в моём примере. Я использую не только nginx для ловли ботов, но некоторых блокирую именно так, по user-agent:

Код: Выделить всё

http {
...
	map $http_user_agent $bad_bots {
		default 0;
		~*(AhrefsBot|SemrushBot|MJ12bot|magpie|trendictionbot|DotBot|Riddler|AwarioRssBot|BLEXBot|Adsbot|MegaIndex|xpymep|Bytespider|Amazonbot|serpstatbot|ImagesiftBot|ClaudeBot|DataForSeoBot|GPTBot|OAI\-SearchBot|keys\-so\-bot) 1;
		"~*(Mozilla/5\.0 \(X11; Ubuntu; Linux x86_64; rv:72\.0\) Gecko/20100101 Firefox/72\.0)" 1;
		# и т.д.
	}

	server {
		...
		# вставить перед location
		if ($bad_bots = 1) {
			return 444;
		}
	}
}
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
southklad
phpBB 3.1.0 RC3
Сообщения: 3343
Стаж: 13 лет 3 месяца
Благодарил (а): 675 раз
Поблагодарили: 164 раза

Re: Как забанить ботов на сервере nginx

Сообщение southklad »

Совсем забыл, что у меня вот так реализовано

Код: Выделить всё

if ($http_user_agent ~ SputnikBot|Crowsnest|Barkrowler|GPTBot|DataForSeoBot|claudebot|meta-externalagent|Bytespider|VKRobotRB|OAI-SearchBot|SPAMDDOS|keys-so-bot|PaperLiBot|peerindex|ia_archiver|Slurp|Aport|NING|JS-Kit|rogerbot|BLEXBot|MJ12bot|Twiceler|Baiduspider|Java|CommentReader|Yeti|discobot|BTWebClient|Tagoobot|Ezooms|igdeSpyder|AhrefsBot|Teleport|Offline|DISCo|netvampire|Copier|HTTrack|WebCopier|ltx71|SemrushBot|SMUrlExpander|xpymep|AhrefsBot) {
		return 444;
	}
Это вообще норм вариант?

Отправлено спустя 33 минуты 41 секунду:
Или вот так правильнее?

Код: Выделить всё

if ($http_user_agent ~* (SputnikBot|Crowsnest|Barkrowler|GPTBot|DataForSeoBot|claudebot|meta-externalagent|Bytespider|DotBot|VKRobotRB|MBCrawler|YaK|OAI-SearchBot|SPAMDDOS|keys-so-bot|PaperLiBot|peerindex|ia_archiver|Slurp|Aport|NING|JS-Kit|rogerbot|BLEXBot|MJ12bot|Twiceler|Baiduspider|Java|CommentReader|Yeti|discobot|BTWebClient|Tagoobot|Ezooms|igdeSpyder|AhrefsBot|Teleport|Offline|DISCo|netvampire|Copier|HTTrack|WebCopier|ltx71|SemrushBot|SMUrlExpander|xpymep|AhrefsBot) ){
		return 444;
	}
И как лучше, в основной конфиг сайта добавить или я создал файл block_bots.conf по пути /etc/nginx/ и там это же прописал
Изображение

Вернуться в «phpBB-пространство»