drupal vs. bots (техническое)
Jun. 6th, 2014 12:20 pmЕсли ты, дорогой читатель, поставишь себе сайт на друпалке, на тебя немедля посыпятся ёбаные спамботы и сраные скрипткидисы.
Некоторые (не все) сначала тыкаются в "node/1" с реферером заглавной страницы (на заглавную страницу, естественно, не сходив) -- проверяют на друпалку.
Потом долбятся постами и гетами в "user/register" и "node/add" (которые прописаны Disallow в robots.txt) с очевидной целью нагадить.
Даже если сайт не предполагает саморегистрации юзеров и анонимного добавления страничек (т.е. боты огребают 403), друпалка, с ея йобаным php, жрёт под этот долбёж тонны ресурсов, а в логах появляются кучи мусора.
По ИП банить -- бесполезно, бо прут отовсюду. Надо прописать в .htaccess следующее (вдохновлено вот этим, но пофиксены корявые регекцпы и мутная логика.):
В предпоследней строчке заменить "site\.domain\.com\/" на ваш уютный хостик.
Логика простая: реальный бровзер (не бот) при закачке любой страницы с сайта, также берёт базовый системный css. На скачивании системного css ему выдаётся печенька. Любой, кто без печеньки лезет на user/register или node/add, идёт на 403 ещё до того, как друпалка о нём услышит.
Профит, чо.
Некоторые (не все) сначала тыкаются в "node/1" с реферером заглавной страницы (на заглавную страницу, естественно, не сходив) -- проверяют на друпалку.
Потом долбятся постами и гетами в "user/register" и "node/add" (которые прописаны Disallow в robots.txt) с очевидной целью нагадить.
Даже если сайт не предполагает саморегистрации юзеров и анонимного добавления страничек (т.е. боты огребают 403), друпалка, с ея йобаным php, жрёт под этот долбёж тонны ресурсов, а в логах появляются кучи мусора.
По ИП банить -- бесполезно, бо прут отовсюду. Надо прописать в .htaccess следующее (вдохновлено вот этим, но пофиксены корявые регекцпы и мутная логика.):
# If they are requesting resources, then they're probably not bots.
# set cookie
RewriteCond %{HTTP_COOKIE} !realbrowser
RewriteCond %{THE_REQUEST} system\.base\.css
RewriteRule .* - [L,co=realbrowser:getscookies:%{HTTP:Host}:86400]
# Check if this goes to register user or add content,
# If so, the human cookie must be set.
# If the dudes dont abide, they get a 403.
RewriteCond %{HTTP_COOKIE} !realbrowser
RewriteCond %{THE_REQUEST} (user\/register|node\/add)
RewriteRule .* - [F]
# drop the bot's first hit
RewriteCond %{HTTP_COOKIE} !realbrowser
RewriteCond %{REQUEST_URI} (node\/1|node)$
RewriteCond %{HTTP_REFERER} (site\.domain\.com\/)$
RewriteRule .* - [F]В предпоследней строчке заменить "site\.domain\.com\/" на ваш уютный хостик.
Логика простая: реальный бровзер (не бот) при закачке любой страницы с сайта, также берёт базовый системный css. На скачивании системного css ему выдаётся печенька. Любой, кто без печеньки лезет на user/register или node/add, идёт на 403 ещё до того, как друпалка о нём услышит.
Профит, чо.