Защита от спамеров с помощью mod_rewrite

Исследуя сегодня логи этого домена обнаружил следющее

  •    3768 Yandex/1.01.001 (compatible; Win16; I)
  •    4472 StackRambler/2.0 (MSIE incompatible)
  •    6851 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
  •    7365 Opera/9.62 (Windows NT 5.1; U; ru) Presto/2.1.1
  •    8089 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.04 (hardy) Firefox/3.0.6
  •    8965 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1a2) Gecko/20080829071937 Shiretoko/3.1a2
  •   12667 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Получалось так, что непропатченный MSIE 6.0 самый частый посетитель моего сайт посвящённого Linux, программированию, Gimp и технофашизму. Но как известно пользователи MSIE 6.0 являются отпетыми дебилами и всё своё время проводят на порносайтах и других браузерных играх. Разумеется я заподозрил неладное и начал анализировать логи:

ls |sort |xargs bzcat | awk '{print $7}'|sort |uniq -c |sort -n|tail -5
  •    4279 /images/rss.png
  •    6015 /blog/id/66/
  •    6129 /blog/id/157
  •    7702 /blog5.css
  •    8078 /mag/ffjs.js

Если в 1,2 и 5 всё ясно, то не ясно, отчего такая популярность у статитьи про Lexx и mod_rewrite, тогда я сделал так:

ls |sort |xargs bzcat | awk '{print $7}'|grep /blog/| sort |uniq -c |sort -n|tail
  •     191 /blog/id/176
  •     225 /blog/id/76
  •     229 /blog/stat/hour
  •     284 /blog/id/88
  •     324 /blog/short/Gimp
  •     409 /blog/stat/system
  •    1931 /blog/
  •    2003 /blog/id/107
  •    6015 /blog/id/66/
  •    6129 /blog/id/157

вот тут уже чётко видно, что эти странички заспамлены, раньше туда регулярно постили спам в комментах, но с появлением фильтра спам пропал, но видимо тупые вендузятники продолжают ломиться по этим урлам

В общем я решил закрыть доступ к этим страницам всем идиотам, а сделать это легко:

Во-первых идиоты пользуются Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Во-вторых помогать нам будет mod_rewrite

Правила для блога у меня лежат в отдельной папке /blog/.htaccess , по-этому новые правила нужно добавить туда

RewriteCond %{HTTP_USER_AGENT} MSIE
RewriteCond %{REQUEST_URI} blog/id/(66|107|157)
RewriteCond %{HTTP_REFERER} ^$
RewriteRule .* - [F]

В первом условии отбираем всех идиотов, пользователей MSIE

Во втором отбираем запросы которые соотвествуют blog/id/66 blog/id/107 blog/id/157

В третьих пропускаем всех, кто пришёл сюда не по прямой ссылке а либо с внешней либо внутренней страницы

В качестве действия ставим запрет на доступ, проверить http://breys.ru/blog/id/107

mod_rewrite запрет на доступ MSIE

Кстати, запрет на просмотр можно заменить перебросом на сайт Firefox или сайт заражённый вирусами, вот так

RewriteCond %{HTTP_REFERER} ^$
RewriteRule .* http://getfirefox.com/ [R]

Подобный приём не даст им просмотреть страницу и сделать бессмысленные запросы к базе

И теперь мне закралась мысль, а на сколько уменьшиться мнимамя популярность MSIE если отсечь всех идиотов спамяших сайты

А вот месячная статистика с другого моего домена:

ffsdmad@ffsdmad:~/rekoweb.ru/logs$ ls |sort|tail -30 |xargs bzcat | awk -F '"' '{print $6}'| sort | uniq -c|sort -n| tail -20

    817 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
    832 Opera/9.52 (Windows NT 5.1; U; ru)
    887 Opera/9.62 (Windows NT 5.1; U; ru) Presto/2.1.1
    902 Opera/9.27 (Windows NT 5.1; U; ru)
    940 Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
    999 Mozilla/5.0 (Twiceler-0.9 http://www.cuil.com/twiceler/robot.html)
   1011 Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.6) Gecko/2009020407 Iceweasel/3.0.6 (Debian-3.0.6-1)
   1037 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7) Gecko/2009021910 MRA 5.4 (build 02614) Firefox/3.0.7
   1817 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.04 (hardy) Firefox/3.0.6
   1889 Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)
   2520 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
   2604 Opera/9.63 (Windows NT 5.1; U; ru) Presto/2.1.1
   2722 YandexBlog/0.99.101 (compatible; DOS3.30; Mozilla/5.0; B; robot) 0 readers
   3757 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7
   4330 Mail.Ru/1.0
   5173 Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
   8264 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6
  25725 StackRambler/2.0 (MSIE incompatible)
  29043 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
  50921 Yandex/1.01.001 (compatible; Win16; I)

А вот доказательства, что пользователи этого браузера спамят мой сайт:

ffsdmad@ffsdmad:~/rekoweb.ru/logs$ bzgrep '(compatible; MSIE 6.0; Windows NT 5.1)' rekoweb.ru.200*| awk '{print $7}'|sort |uniq -c|sort -n|tail 

     73 /html/kurs
     87 /images/img1.png
     98 /mag/ffjs.js
    125 /js.js
    137 /style/rekoweb2008.css
   6999 /blog/id/151
   7079 /blog/id/163
   7205 /blog/id/158
   7322 /blog/id/131


Другие примеры испольщования mod_rewrite

Исправление битых ссылок с помощью mod_rewrite

Пример использования mod_rewrite

Пример использование apache2 mod_rewrite в Ubuntu

Все заметки блога про mod_rewrite

похожие страницы

  1. Пример использования mod_rewrite
  2. Пример использование apache2 mod_rewrite в Ubuntu
  3. Как справиться с большой нагрузкой на сайт с помощью mod_rewrite
  4. Идея для ускорения и децентрализации интернета
  5. Как избавится от www в урле своего сайта