бан всех ботов кроме указанных

12
iccup
На сайте с 01.05.2016
Offline
195
4700

Есть ли такое регулярное выражение которое банило бы все ботов, по вхождению *bot, кроме указанных Pinterestbot/1.0;, Googlebot/2.1;, Googlebot-Image/1.0

сейчас так

if ($http_user_agent ~* "msnbot|ahrefsbot|mj12bot|megaindex|bingbot|linkpadbot|baiduspider|moreover|BPImageWalker|spbot|LinkWalker|orangebot|BLEXBot|HTTrack|DotBot|yandex|DomainCrawler|AlphaBot|GrapeshotCrawler|SemrushBot|Yahoo|aranhabot") {

return 444;
}
kimsufi.com ( https://www.kimsufi.com ) очень дешевые и качественные дедики https://clck.ru/gvF9p - антибот, использую уже 3 года.
M
На сайте с 06.10.2017
Offline
5
m3a
#1
iccup:
Есть ли такое регулярное выражение которое банило бы все ботов, по вхождению *bot, кроме указанных Pinterestbot/1.0;, Googlebot/2.1;, Googlebot-Image/1.0
сейчас так
if ($http_user_agent ~* "msnbot|ahrefsbot|mj12bot|megaindex|bingbot|linkpadbot|baiduspider|moreover|BPImageWalker|spbot|LinkWalker|orangebot|BLEXBot|HTTrack|DotBot|yandex|DomainCrawler|AlphaBot|GrapeshotCrawler|SemrushBot|Yahoo|aranhabot") {

return 444;
}

Правильнее будет так


set $flag 0;
if ($http_user_agent ~* (bot|Riddler|Index|Spider|Crawler|archiv|\.com|\.ru)) {set $flag 1;}
if ($http_user_agent = -) {set $flag 1;}
if ($http_user_agent ~* (yandex|google)) {set $flag 0;}
if ($flag) {return 444;}

Изначально флаг ставим в ноль, то есть пропускаем всех. Дальше ищем признаки ботов в юзерагенте. Ищем встречаются ли куски текста типа bot или Riddler и т.д. Если нашли, то выставляем флажок для дальнейшей блокировки. Затем баним всех тупых парсильщиков вообще без юзерагента. Дальше проверяем еще раз, не полезные ли это боты Гугла и Яндекса. Если это так, то снимаем флаг блокировки. Ну и в конце проверяем по итогу проверок блокировать этого посетителя или пропустить. Если флаг остается равен 1 то отдается 444 ошибка, то есть вообще ни чего — полный игнор в 0 байт.

Andreyka
На сайте с 19.02.2005
Offline
822
#2

Правильнее будет использовать map

Не стоит плодить сущности без необходимости
D
На сайте с 28.06.2008
Offline
1101
#3

map $http_user_agent $bad_useragent {

default 0;

~*ia_archiver 1;

~*Curl 1;

~*libwww 1;

~*BLEXBot 1;

~*SBooksNet 1;

~*MJ12bot 1;

~*Java 1;

~*NTENTbot 1;

~*GetIntent 1;

~*SemrushBot 1;

~*HybridBot 1;

~*AhrefsBot 1;

~*SeznamBot 1;

~*DeuSu 1;

~*GrapeshotCrawler 1;

~*SentiBot 1;

~*default 1;

~*Virusdie 1;

~*WordPress 1;

~*WhatsApp 1;

~*SeopultContentAnalyzer 1;

~*WinHTTP 1;

}

+ это в каждый нужный сервер

if ($bad_bot) {

return 444;

}

Более широкий вид блокировки тут

iccup
На сайте с 01.05.2016
Offline
195
#4

сделал след образом

взял список ip адресов тут https://ru.myip.ms/files/blacklist/general/full_blacklist_database.zip

потом в nginx.conf

http {
server_names_hash_bucket_size 4096;
server_names_hash_max_size 4096;
map_hash_bucket_size 4096;
map_hash_max_size 4096;
include custom/bad_ip;
...
}

ну а вот содержание bad_ip

map $remote_addr $bad_ip {

default 0;

"1.0.0.4" 1;
"1.0.132.145" 1;
"1.0.136.23" 1;
...
}

вроде все заработало. что скажете? насколько оптимальный вариант?

D
На сайте с 28.06.2008
Offline
1101
#5

iccup, вы закрыли свой сайт от мизерного коли-ва мусорного трафика, вот (как мне кажется) более подходящее решение /ru/forum/958253

Закрыть на уровне фаервола трафик с подсетей крупнейших хостеров мира.

Юзаю это решение более года + свою надстройку /ru/forum/comment/14885499, просадки по трафику не заметил, а вот мусорного трафика устало меньше на 90%.

Даже одна контора аналитики писала мне письмо - типа что такое, раньше парсили ваш сайт нормально, а сейчас он нормально открывается с компа, а наш сканер типа пробиться не может :)))

P.S. в вашем решении нет финальной строки

if ($bad_ip) {

return 444;

}

iccup
На сайте с 01.05.2016
Offline
195
#6
Dram:
iccup
P.S. в вашем решении нет финальной строки

if ($bad_ip) {
return 444;
}

да, упустил это. вообще я делал этот способ по мотивам http://www.gofuckbiz.com/showthread.php?t=39716, там все разжевано.

Что касается блокировки хостинг провайдеров, большой охват, но возможен бан пользователей вместо ботов.

Пытался ставить ipset получил такое

[root@ns343506 ~]# yum install ipset.x86_64 ipset-devel.x86_64
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://rpms.remirepo.net/enterprise/6/safe/mirror error was
12: Timeout on http://rpms.remirepo.net/enterprise/6/safe/mirror: (28, 'connect() timed out!')
Error: Cannot find a valid baseurl for repo: remi-safe
ZomBat
На сайте с 08.10.2016
Offline
24
#7
iccup:
Что касается блокировки хостинг провайдеров, большой охват, но возможен бан пользователей вместо ботов.

А можно поподробнее? Сотрудников ДЦ? Они не смогут зайти к вам на сайт? Откуда такое предположение...

в свободное время шаманю над веб-окружением VPS...
D
На сайте с 28.06.2008
Offline
1101
#8
iccup:
Пытался ставить ipset получил такое

А так не пробовали?

apt-get install ipset
iccup
На сайте с 01.05.2016
Offline
195
#9
Dram:
А так не пробовали?

у меня centos 6.9, 64 разрядность.

-bash: apt-get: command not found
ZomBat
На сайте с 08.10.2016
Offline
24
#10
iccup:
Пытался ставить ipset получил такое

rpms.remirepo.net видимо накрылся(что странно), может совсем, поставь из другого места

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий