Чтение онлайн

на главную - закладки

Жанры

Linux глазами хакера

Флёнов Михаил Евгеньевич

Шрифт:

Теперь добавляем еще две строки после описания ACL-записей:

http_access deny banners_path_regex !banners_exclusion

http_access deny banners_regex !banners_exclusion

Обе директивы имеют один и тот же смысл — запрещается загрузка по адресам, прописанным в списке

banners_path_regex
или
banners_regex
, если адрес не входит в исключение, описанное в файле ACL-списка
banners_exclusion
.

Рассмотрим фрагмент содержимого файла /usr/etc/banners_regex:

^http://members\.tripod\.com/adm/popup/.+html

^http://www\.geocities\.com/ad_container/pop\.html

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

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

http://members.tripod.com/adm/popup/popup.html

Так просто. И пользователи больше не увидят всплывающие окна с сайта tripod.com. Если вы знакомы с регулярными выражениями, то сможете создать подобные записи для любой баннерной системы и обрезать самые замысловатые пути надоедливых картинок. Я не буду затрагивать регулярные выражения, потому что это тема достаточно большая и требует отдельной книги.

При борьбе с баннерами будьте готовы, что "обрезание" не всегда помогает, всплывающие окна могут снова появиться через определенное время. Это связано с тем, что баннеры — просто реклама, позволяющая зарабатывать деньги на существование сайта. Особо одаренные администраторы ищут любые возможные пути для того, чтобы ваша система не смогла избавиться от рекламы. Для этого постоянно изменяются адреса, чтобы регулярное выражение не сработало.

9.5.6. Подмена баннера

Пока что мы запретили загрузку баннеров или всплывающих окон. Но после этого Web-страницы перестанут быть привлекательными. Чтобы этого не произошло, можно заменять баннеры на свои картинки, которые хранятся на сервере, и отпадет необходимость грузить их из Интернета.

Для решения этой задачи очень хорошо подходит redirector. Для сервиса squid это внешняя программа, которая подменяет адреса. Например, если сайту необходимо загрузить баннер, и ваша программа смогла определить такую попытку, то redirector подменит адрес и вместо баннера загрузит то, что укажете вы.

Есть только одна проблема — в ОС нет и не может быть готовой программы. Ее необходимо написать. Для этого подойдет любой язык программирования, а я покажу вам пример, реализованный на языке Perl. Если вы умеете программировать на этом языке, то способ с redirector понравится вам больше, чем простой запрет через ACL.

Пример классической программы redirector можно увидеть в листинге 9.2. Я постарался максимально упростить его, чтобы вам легче было адаптировать сценарий под свои задачи.

Листинг 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;

 # Всплывающее окно

Поделиться:
Популярные книги

Лекарь Империи 7

Карелин Сергей Витальевич
7. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
попаданцы
5.00
рейтинг книги
Лекарь Империи 7

Наследие Маозари

Панежин Евгений
1. Наследие Маозари
Фантастика:
рпг
попаданцы
аниме
5.80
рейтинг книги
Наследие Маозари

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

Кодекс Императора VI

Сапфир Олег
6. Кодекс Императора
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Императора VI

Чужак из ниоткуда 2

Евтушенко Алексей Анатольевич
2. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужак из ниоткуда 2

Учитель из прошлого тысячелетия

Еслер Андрей
6. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Учитель из прошлого тысячелетия

Неучтенный элемент. Том 2

NikL
2. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 2

Глубокий космос

Вайс Александр
9. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Глубокий космос

Личный враг

Кораблев Родион
26. Другая сторона
Фантастика:
боевая фантастика
рпг
фантастика: прочее
постапокалипсис
попаданцы
5.00
рейтинг книги
Личный враг

Шатун. Лесной гамбит

Трофимов Ерофей
2. Шатун
Фантастика:
боевая фантастика
7.43
рейтинг книги
Шатун. Лесной гамбит

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

Товарищ "Чума"

lanpirot
1. Товарищ "Чума"
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Товарищ Чума

Император Пограничья 1

Астахов Евгений Евгеньевич
1. Император Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 1

Матабар VIII

Клеванский Кирилл Сергеевич
8. Матабар
Проза:
магический реализм
5.00
рейтинг книги
Матабар VIII