Книга: 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, то дальнейшие действия вы выполните без проблем.
- Листинг 9.3. Пример JavaScript-файла, закрывающего всплывающее окно
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Листинг 15.11. Код для загрузки файла с Web-сервера
- Программирование на языке Пролог для искусственного интеллекта
- 2. Унарные операции на языке структурированных запросов
- 3. Бинарные операции на языке структурированных запросов
- Как настроить внешний вид окон программ?
- Как одним щелчком кнопки мыши закрыть несколько окон одновременно?
- В Интернете можно найти большое количество игр, баннеров и меню, сделанных во Flash. Можно ли самому создать подобную ан...
- Листинг 3.1. Конфигурационный файл lilo.conf
- Листинг 3.2. Файл настройки программы inittab