• Главная
  • Оглавление
  • Обратная связь
  • Лента RSS
  • Правила
Что здесь уже нашли

Привратник-младший. Турбо-решение.

26 октября 2008, 04:08

Копаясь в статистике «Привратника» и анализируя поведение типичных представителей семейства попингуев обыкновенных, я вдруг понял, что задача отфутболивания последних может быть решена без всяких высших математик и прочих выкрутасов с бантиками.

Как это всегда бывает, удачная мысль подвигла к немедленному действию и в результате «Привратник» обрел младшего брата, реализующего суть идеи в полной мере и для многих пользователей Ласто-продуктов возможно он окажется вполне достаточным. В любом случае, тестирование полной версии «Привратника» может затянуться надолго, а решать проблему нужно уже сейчас и потому мини-Привратник идет «в народ», пока его старший брат дорабатывается и отлаживается.

Назовем сего отпрыска для простоты «Швейцаром». Да, я знаю, что у меня с фантазией туго, так что я с удовольствием выслушаю ваши варианты обзывания этого скрипта. Однако, вернемся к проблеме.

Задача.

Решение задачи, по-сути, лежит на поверхности, а все финты ушами с отслеживанием хитов и анализом поведения посетителей — никому не нужная трата времени. Особенно с учетом глобальной потери интереса хозяев попингуев к моему блогу, который по совместительству является и полигоном для отладки «Привратника». Ну не хотят они его пинговать и все тут!

И и фиг на них. Дальше речь пойдет о простом (и действенном!) способе раз и навсегда избавиться от попингуев (точнее — способе не допустить их хиты до целевого скрипта).

Суть.

Для решения поставленной задачи нужно обратить внимание на следующую мысль: фактически прямой доступ к блогу нужен только ботам поисковых систем, все остальные прихожане запросто могут попасть туда же, но не напрямки, а через лес. Говоря по-русски, для обеспечения достаточной защиты от «левых» хитов нужно всех, кроме ботов искалок слать на сайт редиректом. Всё!

Реализация.

Отличить бота от серфера — как два байта переслать — у бота всегда пустой реф. Единственное что стоит сделать — это дополнительно проверить юзер-агент на предмет наличия в нем HTML-кода ссылки. В последнее время в результате мутаций появился новый вид попингуя - «Попингуй хитрожопый». Он отличается от обычных тем, что шлет пустой реф (прикидываясь нормальным ботом), а обратную ссылку прячет в юзер-агенте. Вот такие хиты и будем убивать на месте.

Коль уж нам все равно придется копаться в юзер-агенте, то за одно можно там же отсеять нежелательных ботов, например появившегося совсем недавно паука от rulink project.

Итак, если реф пустой и вышеописанные проверки прошел, значит это — истинный бот и отправляем его на запрашиваемую им страницу — пусть себе индексит. Ежели на проверках спалился — получи фигу с татушкой «404». Ну а коли не спалился и реф не пустой, то пришла пора покопаться в содержимом этого самого рефа.

Ежели там сидит адрес какой-нить страницы с нашего же сайта, значит хит имеем от реального серфера, который в данный момент шарится у нас по сайту. Этого, естественно, тоже пропускаем.

Коль проверки дошли до этого этапа и все еще не ясно, кто перед нами, то значит тут либо живой серфер, честно пришедший по ссылке фиг знает откуда, либо особо наглый попингуй, либо еще какая шняга типа телепорта или флэш-гета

Для разруливания таких непонятностей у нас предусмотрена специальная катапульта, которая всех этих прихожан с помощью обычного редиректа швырнёт на ту же самую страницу, куда они так усердно рвались. Что при этом происходит?

Ежели у нас серфер, то его броузер моментально посылает нам повторный запрос на ту же страницу, но уже с рефом с нашего сайта, а значит этот повторный запрос уже будет пропущен «Швейцаром»! Т.е. реальный серфер попадет именно туда куда стремился и даже фиг заметит, что шел он к цели не по прямой, а лесом и дал нехилый крюк.

С пинго-ботами положение веселее — он на запрос получит тот же ответ, что и серфер и останется довольным, т.к. посчитает что его хит достиг цели. Однако на самом деле никакого хита никто кроме «Швейцара» не видел. Этакий извращенный клоакинг получается!

Ну в общем как-то так. Теперь о грустном.

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

  • первый хит любого серфера будет защитываться как хит с SE-искалки.
  • информация в «Друзьях сайта» больше не будет накапливаться и этот список постепенно вычистится совсем.

Тут возникает еще один побочный эффект, о котором стоит упомянуть. На этот раз он положительный. Прикол в том, что при использовании «Швейцара» контент сайта становится невозможно скачать, если скачивальщик не передает правильного рефа. Не знаю как там работают сплоги, но возможно с установкой «Швейцара» ваши уникальный статьи снанет сложнее воровать

Если вас эти отрицательные моменты не пугают, то переходим к установке.

Установка

Итак, качаем архив и распаковываем его в любую папку на вашем винчестере. В архиве всего один файл. Перед закачкой на сервер его нужно открыть в любом текстовом редакторе (только не вздумайте использовать для этого Microsoft Word, уж лучше воспользуйтесь «Блокнотом») и изменить некоторые настройки.

Тут надо сделать маленькое отступление. Дело в том, что наблюдая за поведением попингуев, была замечена «грамотная» реакция их на «код 404». Т.е. получив в ответ на очередной запрос «фигу 404-го размера», попингуи на некоторое время прекращают пинговать сайт. Оно и логично — раз пришло 404, значит либо попингуя вычислили и заблокировали, либо сервер лёг — в любом случае пинговать данный ресурс уже бесполезно.

Таким образом, було бы здорово послать «код-404» вместе в редиректом — реальный броузер выполнит редирект, а попингуй получит фигу — всем хорошо. И эта схема даже работает! Но не везде.

Любимый народный броузер Internet Explorer (в простонародье - «ишак»), как только получает 404, просто тупо игнорирует остальное содержимое страницы. В результате, если он получает сэндвич из редиректа с кодом-404, то вместо выполнения ожидаемого редиректа он радостно выводит серферу корявое окно с текстом «Страница не найдена» и умывает руки. Поэтому, для разруливания этой ситуации в скрипт введена переменная $allow404, которая управляет отправкой «кода-404». По умолчанию его отправка отключена. Но если вам важен каждый процент нагрузки сервера и плевать вы хотели на случайных серферов, пользующихся неправильными броузерами, то замените в файле pr.php строку
$allow404 = false;
на строку
$allow404 = true;

Далее. Второе, что нужно сделать — вписать домен своего блога. Делается это в строчке:
dom = 'http://fit-media.com';

Если блог стоит не в корне сайта, а, например, в подпапке 'blog', то значение должно быть таким
$dom = 'http://fit-media.com/blog';

Чуть ниже в файле идет список стоп-слов, найдя которые в юзер-агенте скрипт безаговорочно выплюнет 404. Сюда вписываем идентификаторы всяких ненужных ботов и контенто-качалок. Но будьте осторожны. Анализ идет по вхождению указанного слова в юзер-агент. Это значит, что если, например, вы впишете слово 'bot', то все хиты с юзер-агентом 'googlebot', 'rambler-bot', 'super-puper-mega-yandex-bot', 'bottom and top' больше никогда не увидят ни одной страницы вашего блога. Поэтому думайте головой. Или ничего там не трогайте.

Так, со скриптом разобрались. Сохраняйте изменения и закачивайте его на сервер в папку с блогом (это папка, в которой расположены файлы functions.php, index.php, key.php, rss.php).

Теперь, чтобы подключить скрипт к блогу, необходимо внести изменения в файл .htaccess. Настоятельно рекомендую скопировать куда-нибудь этот файл до того, как вы начнете его редакторовать. Он вам может понадобиться, если при работе «Швейцара» будут наблюдаться какие-нить аномалии или глюки. В этом случае чтобы отключить «Швейцара» вам достаточно будет вернуть родной файл .htaccess в папку с блогом.

Итак, вот содержимое файла .htaccess, который поставляется Вадимом в комплекте Lasto-Blog-B:

Исходный файл .htaccess
RewriteEngine on
RewriteRule ^.htaccess$ - [F]

RewriteRule ^(.*).shtml$ index.php?show=all
RewriteRule ^(.*).html$ index.php
RewriteRule ^(.*)/$ index.php

А вот то, что должно быть после изменения:

Модифицированный файл .htaccess
RewriteEngine on
RewriteRule ^.htaccess$ - [F]
RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*).shtml$ pr.php?show=all
RewriteRule ^(.*).html$ pr.php
RewriteRule ^(.*)/$ pr.php

После изменений сохраните файл .htaccess на вашем сервере. С этого момента все хиты к блогу будут идти через «Швейцара».

Жду в комментах замечаний, предложений, баг-репортов.

!!! ВНИМАНИЕ !!!
Вы используете данный скрипт на свой страх и риск. Автор не несет никакой ответственности за прямой или косвенный ущерб, нанесенный использованием данного скрипта. Скрипт поставляется незашифрованным, чтобы вы могли изучить его код или проверить на предмет внедрения вредоносного кода.

PS
Если вы решили, что данный скрипт для вас полезен, то автор с удовольствием примет вашу благодарность в виде пары монет, отправленных на кошелек Z193099158015 системы WebMoney.

Дополнение

Пообщался в мыле с Вадимом Ласто. Он подкинул идею, что данный скрипт может быть опасен, т.к. отправляет в редирект всех пользователей. Соответственно и хитроботы (прикидывающиеся людьми боты поисковых систем) тоже попадут в эту мясорубку, а это не есть хорошо, т.к. они могут расценить редирект как следствие клоакинга (сокрытия истинного содержимого страницы)...

Остается открытым вопрос о том, как именно расценят редирект эти хитроботы, ведь фактически хит редиректится на туже самую страницу и по-логике здесь криминала нет. Но вот обладают ли боты достаточной логикой?... 

Тэги: привратник, отлов и блокировка, попингуй, ласто-блог, хиты, пинги
Оставить комментарий


Все заметки категории "Доработки Lasto-блога"

Page: 06 07 08 09 10 11 12 13 14 15 16
Fast: 10 20 30

Календарь

октябрь, 2008
пн вт ср чт пт сб вс
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Меню

  • Главная страница
  • Оглавление блога
  • Лента новостей
  • Обратная связь
  • Правила блога

Анонсы по темам

  • Все посты блога
  • С миру по нитке
  • Мысли вслух
  • Графика и фото
  • Кривизна платформы .NET
  • Грамотные интерфейсы
  • WEB-программирование
  • FlatCMS - шустрая и гибкая
  • Доработки Lasto-блога

Категории

  • Все посты по порядку
  • С миру по нитке
  • Графика и фото
  • Кривизна платформы .NET
  • Грамотные интерфейсы
  • WEB-программирование
  • FlatCMS - шустрая и гибкая
  • Доработки Lasto-блога

Сервисы

  • Поиск по блогу
  • Поиск по всему сайту
  • Шпионское досье

Реклама


Стоимость сайта

Мой вебсайт стоит 865 404,18 руб

Статистика

    Widgetize!
  • Время работы: 0,00560 сек.
  • Память: 3 072 кБт
  • Статистика привратника
Copyright FIT-Media.com, © 2007-2012
Главная | Общее оглавление | Обратная связь | Правила блога | Лента RSS