- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Сервер справляется, на диск ничего не свопит. Все индексы в ОЗУ. Всё можно сказать идеально. Вопрос то не в этом.
Со временем всё чаще и всё больше боты начинают сканировать сайт и контент со своего сайта вижу на просторах. Вот от них то и есть цель избавиться. Обычные юзеры+гуглоботы вообще не грузят сервер более 2%. Поэтому умощнять сервер с такой посещаемостью нет никакого смысла. У меня цель защитить его от нападков.
Ещё раз вам повторяю. Вы с чего вдруг взяли, что ваша защита НЕ будет кушать ресурсы?
Ещё раз вам повторяю. Вы с чего вдруг взяли, что ваша защита НЕ будет кушать ресурсы?
Стояла на PHP. Только не делала запросы rDNS, а отсеивала по готовому списку. В отличии от https не сильно грузит. Был и сейчас есть fail2ban, но это почти тоже самое по функционалу, что и на PHP, также по списку.
Nginx был бы самым идеальным вариантом. Либо какойто костыль к iptables или ipset.
Суть должна быть одна - не навредить поисковикам. Это не защита от DDOS, это всего лишь защита от ботов.
Несколько часов назад такой умник начал сканировать сайт из нескольких подсетей разной географии. Небольшой "ботнет". Сканирует пачками примерно по 100 страниц с одного ip. Сколько у него ip не знаю, более трех точно. Отсюда я и задумался. Временно его блокирнул по useragent в Nginx.
Борьба с ветреными мельницами.
Стояла на PHP. Только не делала запросы rDNS, а отсеивала по готовому списку. В отличии от https не сильно грузит. Был и сейчас есть fail2ban, но это почти тоже самое по функционалу, что и на PHP, также по списку.
Nginx был бы самым идеальным вариантом. Либо какойто костыль к iptables или ipset.
Суть должна быть одна - не навредить поисковикам. Это не защита от DDOS, это всего лишь защита от ботов.
Несколько часов назад такой умник начал сканировать сайт из нескольких подсетей разной географии. Небольшой "ботнет". Сканирует пачками примерно по 100 страниц с одного ip. Сколько у него ip не знаю, более трех точно. Отсюда я и задумался. Временно его блокирнул по useragent в Nginx.
Глупо просто делать защиту на PHP, защищать нужно обработчик PHP в вашем случае это apache2 тем что стоит до него, то есть nginx-ом
По факту ставьте модуль для nginx testcookies, создайте белые списки и будет Вам счастье.
ТС, научитесь кешировть и вопросов не будет.
wafa, ДДосер щёлкнет пальцем и бот будет есть кукисы, да, есть 1 ботнет он ест даже Рекапча 2:)
Имеем NGINX. Как известно там есть прекрасная limit_req. Только проблема, у меня поисковые боты настроены так, что сканируют мой сервер по 5-10 запросов в секунду. Сайтов на сервере несколько. Медленно сканировать каждый сайт не вариант. От 10-30 сайтов на одном сервере получится каша в запросах, могут сканироваться равномерно, а могут и сразу 10 сайтов за секунду и иногда будет срабатывать limit_req. Поэтому юзать limit_req без белого списка не вариант.
Только это деректива работает в контекстах http, server, location что означает что вы не то что разное ограничение по разным сайтам можете накидать, а даже разное ограничение на урлы повесить, просто вам в директиву limit_req_zone нужно попробовать помимо IP пропихнуть еще хост, чтоб не суммировалось со всеми
На всех платформах есть плагины по лимиту частоты
Совершенно верно, надо сделать разные локейшины на статитику и динамику, со своими параметрами лимитов.
Вот мое решение:
#ФОРМИРУЕМ БЕЛЫЙ СПИСОК IP
geo $whitelist {
default 0;
# ip server
155.551.155.155 1;
# боты google
64.68.80.0/21 1;
64.233.0.0/16 1;
66.102.0.0/20 1;
72.14.192.0/18 1;
209.85.128.0/17 1;
216.239.32.0/19 1;
66.249.0.0/16 1;
# боты yandex
77.88.0.0/18 1;
87.250.224.0/19 1;
93.158.0.0/16 1;
95.108.128.0/17 1;
213.180.192.0/19 1;
141.8.0.0/16 1;
130.193.0.0/16 1;
5.255.253.0/24 1;
178.154.0.0/16 1;
# mail.ru
217.69.0.0/16 1;
94.100.0.0/16 1;
# bingbot-msn
40.77.0.0/16 1;
207.46.0.0/16 1;
65.52.0.0/14 1;
157.55.0.0/16 1;
# Yahoo
68.180.0.0/16 1;
67.195.0.0/16 1;
69.147.64.0/18 1;
72.30.0.0/16 1;
74.6.0.0/16 1;
# sputnik
5.143.0.0/16 1;
}
# Даем Зеленый свет поисковикам и тормозим остальных, обращающихся по протоколу HTTP/1.1
map "$whitelist:$server_protocol" $limit1 {
"1:HTTP/1.0" "";
"1:HTTP/1.1" "";
"1:HTTP/2.0" "";
"0:HTTP/1.1" "$binary_remote_addr";
}
limit_req_zone $limit1 zone=bot11:10m rate=7r/m;
# тормозим остальных, обращающихся по протоколу HTTP/2.0
map "$whitelist:$server_protocol" $limit2 {
"0:HTTP/2.0" "$binary_remote_addr";
}
limit_req_zone $limit2 zone=vse:10m rate=25r/m;
# Вообще разрываем соединения с теми кто лезет по HTTP/1.0, если он не поисковик. По своим логам делаю вывод что по HTTP/1.0 опрашивает роботс тролько майл ру. Все остальное плохие боты.
map "$whitelist:$server_protocol" $bad_bot {
default 0;
"0:HTTP/1.0" 1;
}
# Вообще разрываем соединения с разными бото-сканерами
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;
}
В секцию нужного хоста
return 444;
}
if ($bad_useragent) {
return 444;
}
и вот эти лимиты (подбираем под свой сайт)
limit_req zone=bot11 burst=4 nodelay;
limit_req zone=vse burst=4 nodelay;
Код выше полностью НЕ ограничивает боты поисковиков
Если запрос не из подсети поисковика и по протоколу HTTP/1.0 - разрыв сосединения (444 ошибка)
Если запрос не из подсети поисковика и по протоколу HTTP/1.1 - то не чаще 7 запросов в минуту (rate=7r/m;) Тут важно не всунуть ограничение в локаейш картинок ибо они намного чаще запрашиваются.
Если запрос не из подсети поисковика и по протоколу HTTP/2.0 - то не чаще 25 запросов в минуту (rate=25r/m)
Важно - у меня сайты на https + http2, и лимиты подобраны после долгого мониторинга логов на предмет 503 ошибок.
А так код работает, 99% ботов идут лесом.
Каждый день проверяю под вечер логи такой командой
И проверяю что за IP попали в фильтр. За 2 месяца так выявил еще 2 подсети реальных ботов Гугла - добавил их в белый список.