developing.ru - клуб программистов


поиск по сайту:

Google



статистика:

Rambler's Top100


Ежедневники, планинги, органайзеры, календари

Интернет-каталог Ежедневники, планинги, органайзеры, календари в Самаре

catalog-office.ru



А. Шкондин.
artvs@clubpro.spb.ru

Измерение релевантности. Выпуск №12.

Основы клоачных скриптов. Первый клоачный скрипт.

Disclaimer (отмазка): автор не несёт никакой ответственности за использование изложенных в этом и последующих номерах технических приёмов.

Итак, в прошлый раз мы выяснили, что основой технологии клоакинга является разделение посетителей на своих и чужих, причем разделять их надо без проведения социологического опроса. Как вы могли уже догадаться, разделение производится на основании так называемых переменных окружения, ссылка на скрипт, который выдаёт список всех переменных была приведена в прошлом выпуске. Как полагают некоторые вебмастера, наиболее безопасен способ разделения посетителей по IP адресу. Не заостряя внимания на том, почему это не совсем так, посмотрим какие переменные окружения нам пригодятся для определения IP посетителя. На первый взгляд это только REMOTE_ADDR. Все бы хорошо, но некоторые посетители используют proxy, поэтому нам будут интересны ещё две переменные: HTTP_VIA (адрес и/или название proxy сервера) и   HTTP_X_FORWARDED_FOR (реальный адрес). Также нет причин, по которым робот поисковой системы не может использовать proxy. А вот анонимными или искажающими proxy робот пользоваться не должен, поэтому оставим проблему их определения для разработчиков топов.

Как вы могли догадаться, под "чужими" в данном контексте я буду подразумевать роботов поисковых систем,а под "своими" - всех остальных посетителей страницы. Так же не трудно понять, что для облегчения написания скрипта нам проще будет определять чужих, а всех не чужих считать своими. В данной рассылке я приведу пример клоачного скрипта, написанного на Perle, считая его наиболее распространенным языком для CGI скриптов. Я не буду останавливаться подробно на синтаксисе Perl, но буду рад ответить на возникшие вопросы на форуме.

Для начала зададим массив чужих адресов:
@aliens = ('205.204.167.190', '12.13.171.200', '195.161.35.195');  

#Теперь определим вышеуказанные переменные: $remip = ${ENV{REMOTE_ADDR}}; $proxy = ${ENV{HTTP_VIA}}; $realip = ${ENV{HTTP_X_FORWARDED_FOR}}; #Далее проведём проверку на чужих: $alienhere = 0; foreach $address (@aliens) { if ($remip eq $address || $realip eq $address){ $alienhere = 1; } } #Теперь осталось своему показать одно, чужому - другое: if ($alienhere == 0) { print <<OURPAGE; <html> <body> Наши пришли! </body> </html> OURPAGE } else{ print <<ALIENPAGE; <html> <body> Уйди, прааативный :) </body> </html> ALIENPAGE }

И всё? Всё, всё!   Разочарованы краткостью кода и удивлены за что берут деньги? Какое совпадение, в своё время я разочаровался тоже :). Почему же клоачные скрипты так недешевы? (А для нескольких поисковых машин скрипт стоит от 300$). Сейчас объясню, и сделаю это в стиле самизнаетекого [1]

За что берут Как объясняют Стоимость
Исходный скрипт На разработку с тестированием потрачено 15 минут рабочего времени 1$
База IP адресов спайдеров Во-первых, 1$   - как-то не солидно, а во-вторых, ну откуда у обычного клиента есть анализатор логов? Не забыть бы написать на сайте, что поисковики очень часто меняют IP адреса спайдеров. 25$
Усовершенствование скрипта Ну как же, такой объём уже в массив прописывать нехорошо, потом обновлять замучаешься, выложим его в файл и приделаем вебинтерфейс, ещё сделаем загрузку страниц для поисковика и сёрферов 25$
Оптимизация скрипта База IP большая, скрипт тормозить начал, без оптимизации никак не получится, потом наверное на mySQL переходить придётся 50$
Подписка сроком на год на обновление базы IP Эти логи занимают всё больше и больше места на нашем сервере, а за место платить надо, пускай они хотя бы сами себя окупят, потом постоянная оплата гораздо лучше единовременной... 199$
Завлекуха От начального скрипта и следа не осталась, и потом налогов платить меньше придётся -1$

Итого рыночная стоимость 299 у.е., это ещё хороший вариант, потому как могут   добавить строчку ПРОКАТИЛО[2].

На этом разрешите откланяться. В следующем номере, я приведу пример... ещё более элегантного клоачного скрипта.

С уважением,
Артём.

P.S: для желающих посмотреть работу скрипта даю его адрес: http://clubpro.spb.ru/cgi_bin/cloak.pl . Чтобы увидеть то, что "увидит поисковик", зайдите на страницу через один из публичных proxy , перечисленных в массиве @aliens. Порт у всех 80-й. В "боевом" же варианте вместо них, понятно, будут стоять IP пауков поисковой системы.


[1]  (обратно к тексту) Кстати, я тоже не люблю, когда меня называют не моим именем, хотя уменьшительное у нас одно и тоже, полные имена разные, причём только одно из них имеет греческое происхождение :)
[2]  (обратно к тексту) Если вы не помните этого анекдота, то сходите в ближайшую забегаловку, в которой выставляют счёт за трапезу, и с вероятностью   >>50% аналогичная строчка появится и в вашем счёте.


<< Предыдущая статья | Оглавление | Следующая статья >>