Книга: Linux глазами хакера

Листинг 9.2. Сценарий на языке Perl для подмены баннеров и закрытия всплывающих окон

Листинг 9.2. Сценарий на языке Perl для подмены баннеров и закрытия всплывающих окон

#!/usr/bin/perl
$| = 1;
# Укажите URL на вашем Web-сервере, где лежат картинки
$YOURSITE = 'http://yourserver.com/squid';
$LOG = '/usr/etc/redirectlog';
$LAZY_WRITE = 1;
if ($LOG) {
 open LOG, ">> $LOG";
 unless ($LAZY_WRITE) {
  select LOG;
  $|=1;
  select STDOUT;
 }
}
@b468_60 = qw (
 'www.sitename.com/cgi/
 # Добавьте сюда описания URL-адресов с баннерами
 # размером 468x60
@b100_100 = qw (
 www.sitename.com/cgi/
 # Добавьте сюда описания URL-адресов с баннерами
 # размером 100x100
@various = qw (
 www.sitename.com/cgi/
 # Добавьте сюда описания URL-адресов с нестандартными
 # размерами баннера
};
@popup_window = qw (
 ^http://members.tripod.com/adm/popup/.+html
 ^http://www.geocities.com/ad_container/pop.html
 ^http://www.geocities.com/toto?
 # Добавьте сюда описания URL-адресов, с которых
 # выскакивают всплывающие окна
# Описание расположения картинок
$b468_60 = "$YOURSITE/468_60.gif";
$b100_100 = "$YOURSITE/100_100.gif";
$various = "$YOURSITE/empty.gif";
$closewindow = "$YOURSITE/close.htm";
while (<>) {
 ($url, $who, $ident, $method) = /^(S+) (S+) (S+) (S+)$/;
 $prev = $url;
 # Проверка баннера 468x60
 $url = $b468_60 if grep $url =~ m%$_%, @b468_60;
 # Проверка баннера 100x100
 $url = $b100_100 if grep $url =~ m%$_%, @bl00_100;
 # Проверка баннера произвольного размера
 $url = $various if grep $url =~ m%$_%, @various;
 # Всплывающее окно
 $url = $closewindow if grep $url =~ m%$_%, @popup_window;
 # Отдельный сайт, не внесенный в список в начале файла
 $url = "$YOURSITE/empty.gif" if $url =~ m%hitbox.com/Hitbox?;
 if ($LOG and $url ne $prev) {
  my ($sec, $min, $hour, $mday, $mon, $year) = localtime;
  printf LOG "%2d.%02d.%2d %2d:%02d:%04d: %srn",
   $mday, $mon + 1, $year + 1900, $hour, $min, $sec,
   "$who $prev > $url";
 }
 print "$url $who $ident $methodn";
}
close LOG if $LOG;

Сохраните эту программу в файле /usr/etc/redirector и установите для squid права на его исполнение. После этого добавьте в файл squid.conf следующую строку:

redirect_program /usr/local/etc/squid/redirector

Чтобы эта программа заработала, создайте на своем Web-сервере файлы со следующими именами:

? 468_60.gif — картинка размером 468?60;

? 100_100.gif — картинка размером 100?100;

? empty.gif — картинка, которая будет заменять нестандартные баннеры. Лучше всего ее сделать размером 1?1 пиксель, чтобы она не испортила дизайн сайта;

? close.htm — HTML-файл, который будет закрывать всплывающие окна. В нем нужно поместить всего лишь функцию, которая будет закрывать окно. Для этого используется JavaScript-функция window.close(). Пример содержимого файла показан в листинге 9.3.

Все эти файлы должны лежать на Web-сервере в одной директории. Не забудьте в сценарии (в переменной $YOURSITE) указать правильный путь к этому каталогу.

Я постарался снабдить код в листинге 9.2 комментариями. Если у вас есть опыт программирования на Perl, то дальнейшие действия вы выполните без проблем.

Оглавление книги


Генерация: 1.795. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз