О пользе избавления от рекламы и самое ужасное — счетчиков (по несколько штук на страницу), думаю, рассказывать не нужно… Чтобы польза была практической и эстетической, забаненные картинки надо заменять на прозрачный однопиксельный GIF. В конфиге squid-a это делается так:
В случае сответствия url-a правилу из ACL banners происходит перенаправление на 1-пиксельный GIF. Вроде бы, всё просто и на этом можно было бы остановиться. Но — как быть, если web-сервер у нас в сети не предусмотрен? Иногда — бывает. Поставить только ради раздачи одного вышеуказанного файла? Неспортивно. Представим себе особо извращенный случай: единственный сервер у нас — контроллер домена и там поставлен squid для NT (прекрасно, кстати, работает!) — не поднимать же IIS… Или — для доступа в интернет используется pfsense, а веб-серверов всё так же — нет и не предвидится…
На решение проблемы натолкнул просмотр ftp через squid: файлы обозначались картинками, адрес которых говорил мне, что они выдаются из недр squid-a. Немного исследований и — решение готово.
1. Наш null.gif кладем squid-у в share/icons
2. В конец файла etc/mime.conf добавляем строку:
3. Пусть IP-адрес, по которому к squid обращаются пользователи, 192.168.1.1, а порт стандартный 3128. Тогда директива deny_info в squid.conf примет следующий вид:
Также можно перенаправить на свой 1-пиксельный gif аналогичные файлы типа dumb.gif, 1x1.gif (прописав их в banners), которые по-прежнему встречаются на просторах интернета из-за вечнокриворуких и бездарных озабоченных кроссбраузерностью верстки сайтостроителей: экономим лишние запросы к веб-серверу.
Но мы сделали еще не всё. Осталось главное зло, идущее от счетчиков и рекламы — скрипты. Они часто весят больше, собственно, картинок, грузят браузер, иногда являются причиной длительного ожидания показа веб-страницы, шпионят за пользователями… Можно, конечно, банить всё и сразу по доменам баннерных сетей, но так мы получим загрузку пустого GIF-а вместо скрипта, или — стандартную HTML страницу «доступ запрещен», что тоже далеко не скрипт с т.з. синтаксиса — наши браузеры будут тихо или не очень (IE) ругаться на ошибки в javascript… Если мы не хотим этих ошибок — придется банить скрипты отдельно. Как вариант — делать это до вышеописанной директивы, выдающей 1-пиксельный GIF, но после «http_access deny banners»
Для начала создаем ACL:
Теперь сам deny_info, идущий перед deny_info против картинок:
Всё, перезагружаем конфиг и радуемся «умытым», без рекламы, быстро открывающимся страницам.
http_access deny banners
...
deny_info web_server/null.gif banners
В случае сответствия url-a правилу из ACL banners происходит перенаправление на 1-пиксельный GIF. Вроде бы, всё просто и на этом можно было бы остановиться. Но — как быть, если web-сервер у нас в сети не предусмотрен? Иногда — бывает. Поставить только ради раздачи одного вышеуказанного файла? Неспортивно. Представим себе особо извращенный случай: единственный сервер у нас — контроллер домена и там поставлен squid для NT (прекрасно, кстати, работает!) — не поднимать же IIS… Или — для доступа в интернет используется pfsense, а веб-серверов всё так же — нет и не предвидится…
На решение проблемы натолкнул просмотр ftp через squid: файлы обозначались картинками, адрес которых говорил мне, что они выдаются из недр squid-a. Немного исследований и — решение готово.
1. Наш null.gif кладем squid-у в share/icons
2. В конец файла etc/mime.conf добавляем строку:
null.gif$ image/gif null.gif - image +download +view
3. Пусть IP-адрес, по которому к squid обращаются пользователи, 192.168.1.1, а порт стандартный 3128. Тогда директива deny_info в squid.conf примет следующий вид:
deny_info 192.168.1.1:3128/squid-internal-static/icons/null.gif banners
Также можно перенаправить на свой 1-пиксельный gif аналогичные файлы типа dumb.gif, 1x1.gif (прописав их в banners), которые по-прежнему встречаются на просторах интернета из-за вечно
Но мы сделали еще не всё. Осталось главное зло, идущее от счетчиков и рекламы — скрипты. Они часто весят больше, собственно, картинок, грузят браузер, иногда являются причиной длительного ожидания показа веб-страницы, шпионят за пользователями… Можно, конечно, банить всё и сразу по доменам баннерных сетей, но так мы получим загрузку пустого GIF-а вместо скрипта, или — стандартную HTML страницу «доступ запрещен», что тоже далеко не скрипт с т.з. синтаксиса — наши браузеры будут тихо или не очень (IE) ругаться на ошибки в javascript… Если мы не хотим этих ошибок — придется банить скрипты отдельно. Как вариант — делать это до вышеописанной директивы, выдающей 1-пиксельный GIF, но после «http_access deny banners»
Для начала создаем ACL:
acl js urlpath_regex -i \.js(\?.*)?$
(некоторые вредители, чтобы их js не кэшировался и мы каждый раз его качали, добавляют? и разный мусор после...)Теперь сам deny_info, идущий перед deny_info против картинок:
deny_info TCP_RESET banners js
(deny_info всегда смотрит на последний ACL!)Всё, перезагружаем конфиг и радуемся «умытым», без рекламы, быстро открывающимся страницам.