Тема: Прозрачно: Фильтрация рекламы + кеширующий прокси

Автор благодарю за твой труд из-за которого это все возможно!
Надоела мне реклама на планшете и телефоне, решил сделать так чтобы её не было.
Сначала намутил туннель на OpenVPN (благо у меня белый ип) как это делается тут описано или на ixbt.com.
Я расскажу как сделать фильтрацию рекламы. Выбор пал на Privoxy, т.к. Squid хорошо но слишком прожорливо.

Privoxy
Собираем сами или качаем собранный мной.
Polipo
Берем из местных источников №2 smile

Конфигурация polipo

chunkHighMark = 819200
daemonise = true
disableIndexing = false
disableServersList = false
diskCacheRoot = /media/DISK_A1/system/var/polipo-cache/
diskCacheTruncateSize = 1024 MB
diskCacheTruncateTime = 30d
diskCacheUnlinkTime = 50d
diskCacheWriteoutOnClose = 32768
dnsMaxTimeout = 3
dnsQueryIPv6 = no
dnsUseGethostbyname = true
maxConnectionRequests = 512
maxDiskCacheEntrySize = -1
maxDiskEntries = 4096
objectHighMark = 128
proxyAddress = 127.0.0.1
proxyPort = 8090
tunnelAllowedPorts = 80
allowedClients = 127.0.0.1

Конфиг privoxy

confdir /media/DISK_A1/system/etc/privoxy
logdir /media/DISK_A1/system/var/log
filterfile default.filter
filterfile adult-utf8.filter
filterfile rpft.filter
logfile privoxy
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action   # Main actions file
actionsfile adblock.action
actionsfile rpft.action
actionsfile user.action      # User customizations
#listen-address  127.0.0.1:8118
listen-address  0.0.0.0:3128
toggle  1
enable-remote-toggle  1
enable-remote-http-toggle  0
enable-edit-actions 1
enforce-blocks 0
buffer-limit 4096
forwarded-connect-retries  0
accept-intercepted-requests 1
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 300
socket-timeout 300
permit-access  192.168.1.0/24
debug   1    # show each GET/POST/CONNECT request
debug   4096 # Startup banner and warnings
debug   8192 # Errors - *we highly recommended enabling this*
forward / 127.0.0.1:8090
#admin-address privoxy-admin@example.com
#proxy-info-url http://www.example.com/proxy-service.html

Файл для загрузки provixy

#!/bin/sh
# Copyright (C) 2006-2011 OpenWrt.org

MOUNT="/media/DISK_A1/system"
export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib

NAME="Polipo"
PIDFILE="$MOUNT/var/run/privoxy.pid"
PRIVOXY="$MOUNT/usr/sbin/privoxy"
CONFIG_FILE="$MOUNT/etc/privoxy/config"


SERVICE_USE_PID=1

start() {
        echo "Starting $NAME... "
        $PRIVOXY --pidfile $PIDFILE $CONFIG_FILE
        iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128  ! -d 192.168.0.0/16
}

stop() {
        echo "Killing $NAME... "
        iptables -t nat -D PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128  ! -d 192.168.0.0/16
        killall privoxy
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                sleep 1
                start
                ;;
        *)
                echo "Usage: $0 (start|stop|restart)"
                ;;
esac

Файлы для блокировки основной рекламы и русской берем отсюда

  • adblock.action

  • rpft.filter

  • adult-cp1251.filter

  • adult-utf8.filter

  • rpft.action

Описание

и ещё одно правило для iptables

iptables -A INPUT -i lo -j ACCEPT

Результат отличный, все фильтруется smile походу надо будет ещё оперативки допаять или торрент выключить... Вобщем отличная коробка (страшное слово фильтруется я понимаю что роутеры этой конторы страшные, а слово то чего фильтровать?) получилась .

Там же есть скрипт, для обновления, можно его прикрутить в cron пока не занимался может кто допилит smile.

Отредактировано extraterrestrial (2012-01-29 12:46:26)

2

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

extraterrestrial, как понимаю, никаких дополнительных патчей для Privoxy Вы не делали, собирали, "как есть".
Считаю приложение отлаженным. Постараюсь собрать и добавить в репозитарий в ближайшее время.

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

да, как в вашем мануале написано просто скопировал из openwrt
для полноты картины хотелось бы ещё конечно сделать чтобы обновление работало, но это позже
оно требует только strict модуль перла, беглым взглядом не нашел его в репах...

4

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

extraterrestrial, strict есть в perlbase-essential. Проще поставить все пакеты perlbase*

5

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

extraterrestrial, c косметическими правками (кроме очевидных) добавил privoxy в репозиторий.
Если будет возможность, проверьте, что версия из репозитория работает.

6

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

Сам пакет запускается. Единственно, поменял  iptables -t nat -D PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128  ! -d 192.168.0.0/16 под свою сеть 192,168,3,0.
На страницы теперь вообще не пускает. Выставлял в мозиле уже и использовать прокси, и автоматическая настройка прокси, и без прокси - результат один.

Linux KEENETIC 2.6.23.17  -  xmail, samba, transmission, ftp, lighttp, wol, owfs, iftop, jabber-server, icecast, smstools, aprx

7

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

ur3ckr :

-d 192.168.0.0/16 под свою сеть 192,168,3,0.

192.168.0.0/16 включает вашу 192.168.3.0/24.
В конфиге нужно отредактировать еще permit-access  192.168.1.0/24
Для совместного использования с polipo нужно еще одно правило iptables.

8

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

Вроде правильно написал:
iptables -t nat -D PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128  ! -d 192.168.0.0/16
iptables -A INPUT -i lo -j ACCEPT

В конфиге полипо
permit-access  192.168.3.0/24


Посмотрю еще, что не так....

Отредактировано ur3ckr (2012-01-29 16:15:22)

Linux KEENETIC 2.6.23.17  -  xmail, samba, transmission, ftp, lighttp, wol, owfs, iftop, jabber-server, icecast, smstools, aprx

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

ur3ckr :

iptables -t nat -D PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128  ! -d 192.168.0.0/16

это удаляет правило из цепочки
покажите
iptables -t nat -L -v -n
и
iptables -L -v -n

некоторый тюнинг конфигов
сокращяем нагрузку на кеширующий прокси путем выборочного перенаправления по расширению файла
в конфиге privoxy вместо

forward   / 127.0.0.1:8090 пишем 

пишем(пока что пришло в голову)

forward   /.*\.(jpg|jpeg|gif|htm|txt|html|php|shtml|png|cgi)$    127.0.0.1:8090

как только закончите отладку закомментируйте строки debug, получится

#debug   1    # show each GET/POST/CONNECT request
#debug   4096 # Startup banner and warnings
#debug   8192 # Errors - *we highly recommended enabling this*

у меня хороший провайдер поэтому эти значения поменял чтобы потомки быстрей умирали

keep-alive-timeout 150 # 300
socket-timeout 100 # 300

У polipo думаю стоит поменять параметр maxDiskCacheEntrySize, я поставил 3 мб (и то наверно много)

maxDiskCacheEntrySize = 3145728

Отредактировано extraterrestrial (2012-01-29 20:33:01)

10

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

Может, глупый вопрос, но зачем Polipo? Я так понял, Полипо - это покоцанный Сквид?

Привокси сама по себе прозрачной проксёй работать разве не может?

Собираю сейчас фильтрующий прозрачный прокси, осваиваю Кинект, переезжаю с Ubuntu+Squid.

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

вроде как может

accept-intercepted-requests 1

Документация
Попробуйте отпишитесь, рекомендую впаять оперативки побольше...

12

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

Вечером попробую и отпишу.
Поясните свой конфиг, плз. Полипо - просто чтобы кешировать?

iptables -t nat -D PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128  ! -d 192.168.0.0/16
- это же и так будет прозрачный прокси, и реквесты на пивокси будут падать перехваченные. Только у вас она пошлёт их в полипо:
forward / 127.0.0.1:8090

Если на построутинг MASQUERADE добавить, да этот форвард убрать, оно как есть не взлетит ли без полипы?
Я просто виндуз-программист, это побочный проект, как документацией обчитаюсь - понимаю iptables, nat и routing. Как два дня этой темой не занимаюсь - забываю нафиг.

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

полипо кеширует, привокси банеры режет

iptables -t nat -D PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128  ! -d 192.168.0.0/16

запросы куда-угодно:80 перебрасывает на 127.0.0.1:3128

forward / 127.0.0.1:8090

это означает использовать вышестоящий прокси на данном порту, чтобы кешировать

последний абзац не понял

14

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

extraterrestrial :

последний абзац не понял

Ну в рецептах по настройке прозрачных проксей всегда есть строка типа

iptables -t nat -A POSTROUTING --out-interface $WAN_iface -j MASQUERADE

Проверил, работает, но правила заменил на свои, попроще. Т.к. мне надо не рекламу резать )

15

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

Здравствуйте.
Хочу поднять тему, т.к. есть проблемы.
Сделал все так, как указано в первом сообщении, но ничего не получилось. После запуска программ выйти в интернет невозможно: "Попытка Google Chrome подключиться к habrahabr.ru была отклонена. Сайт недоступен или ваша сеть настроена неправильно". Если в настройках браузера прописать адрес polipo (127.0.0.1:8090), то тоже ничего не получится: "Firefox настроен на использование прокси-сервера, который отказывает в соединении". Конфиги не менял.

Версии программ:

/media/DISK_A1/system/root # opkg info polipo
Package: polipo
Version: 1.0.4.1-3
Provides:
Status: install user installed
Section: net
Architecture: keenetic
Maintainer: Gabriel Kerneis <kerneis@pps.jussieu.fr>
MD5Sum: 0c28d8e6dfc5a976c111cd2a8a83624a
Size: 111487
Filename: polipo_1.0.4.1-3_keenetic.ipk
Conffiles:
 /media/DISK_A1/system/etc/polipo/config 776f0ed8fb443243de3a7a26d2e0fe12
Source: package/built/polipo
Description: Polipo is a small and fast caching web proxy (a web cache, an HTTP proxy,
 a proxy server). While Polipo was designed to be used by one person or a 
 small group of people, there is nothing that prevents it from being used 
 by a larger group.
Installed-Time: 1343725756
/media/DISK_A1/system/root # opkg info privoxy 
Package: privoxy
Version: 3.0.19-1
Depends: libpcre
Provides:
Status: install user installed
Section: net
Architecture: keenetic
Maintainer: OpenWrt Developers Team <openwrt-devel@openwrt.org>
MD5Sum: 529d48cd53ff486e9f46da77621e0f7f
Size: 176399
Filename: privoxy_3.0.19-1_keenetic.ipk
Conffiles:
 /media/DISK_A1/system/etc/privoxy/config 3aca7681f26eae9adafce727d44b83b5
Source: package/built/privoxy
Description: Privoxy is a web proxy with advanced filtering capabilities for
 protecting privacy, modifying web page content, managing cookies, 
 controlling access, and removing ads, banners, pop-ups and other 
 obnoxious Internet junk. Privoxy has a very flexible configuration 
 and can be customized to suit individual needs and tastes. Privoxy 
 has application for both stand-alone systems and multi-user networks.
Installed-Time: 1343726160

Privoxy, кстати, в списке запущенных процессов не значится:

/media/DISK_A1/system/root # ps
  PID  Uid        VSZ Stat Command
    1 root       1024 S   init                
    2 root            SW< [kthreadd]
    3 root            SW< [ksoftirqd/0]
    4 root            SW< [events/0]
    5 root            SW< [khelper]
   48 root            SW< [kblockd/0]
   60 root            SW< [khubd]
   76 root            SW  [pdflush]
   77 root            SW  [pdflush]
   78 root            SW< [kswapd0]
   79 root            SW< [aio/0]
  617 root            SW< [mtdblockd]
  757 root            SW< [dwc_otg]
  780 root            SWN [jffs2_gcd_mtd6]
  798 root        764 S   superd 
  814 root       1020 S   syslogd -n -s 100 -b 0 -S -L 
  816 root       1020 S   klogd -n 
  946 root            SW  [RtmpCmdQTask]
  947 root            SW  [RtmpWscTask]
  972 root        664 S   udhcpd -S /var/udhcpd.conf 
 1174 root        728 S   btnreset 
 1180 root       1024 S   init                
 1187 root       1020 S   telnetd -F -l /bin/cli -p 23 
 1190 root       1720 S   httpd -p 80 
 1220 root        860 S   dnsmasq -u root --all-servers -k 
 1310 root       1040 S   udhcpc -S -i eth2.2 -p /etc/udhcpc/udhcpc-eth2.2.pid 
 7060 root            SW< [scsi_eh_17]
 7061 root            SW< [usb-storage]
 7127 root       3148 S   nmbd -D 
 7129 root       3260 S N smbd -D 
 7170 root       1160 S   /media/DISK_A1/system/usr/sbin/dropbear -d /media/DIS
 7174 root       1132 S   /media/DISK_A1/system/usr/sbin/polipo -c /media/DISK_
 7178 root       3540 S N smbd -D 
 7180 root       3560 S N smbd -D 
 7181 root       1228 S   /media/DISK_A1/system/usr/sbin/dropbear -d /media/DIS
 7182 root       1028 S   -ash 
 7184 root       1024 R   ps 

Но лог Privoxy все-таки есть

2012-07-31 20:26:36.844 00000400 Info: Privoxy version 3.0.19
2012-07-31 20:26:36.844 00000400 Info: Program name: /media/DISK_A1/system/usr/sbin/privoxy
2012-07-31 20:26:36.846 00000400 Info: Loading filter file: /media/DISK_A1/system/etc/privoxy/default.filter
2012-07-31 20:26:36.934 00000400 Fatal error: can't load re_filterfile '/media/DISK_A1/system/etc/privoxy/adult-utf8.filter': No such file or directory

Заодно лог Polipo

Disabling local tree: No such file or directory
Established listening socket on port 8090.

Может быть, нужно какое-нибудь правило для iptables?

16

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

Иллюх :

Если в настройках браузера прописать адрес polipo (127.0.0.1:8090)

Что такое 127.0.0.1 - знаете?

Fatal error: can't load re_filterfile '/media/DISK_A1/system/etc/privoxy/adult-utf8.filter': No such file or directory

Если английский не знаете, используйте online переводчик. Надеюсь со словом error знакомы?

17

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

Zyxmon :

Что такое 127.0.0.1 - знаете?

Знаю, это я от отчаяния  sad

Zyxmon :

Если английский не знаете, используйте online переводчик. Надеюсь со словом error знакомы?

Не заметил слово fatal, поэтому и не обратил особого внимания на ошибку. После комментирования отсутствующих правил стало лучше, но чуть-чуть: теперь вместо сайта загружается ответ privoxy "503 Connect failed. Your request for http://habrahabr.ru could not be fulfilled, because the connection to habrahabr.ru (127.0.0.1) could not be established. This is often a temporary failure, so you might just try again".
Я так понимаю, это polipo не отвечает?

18

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

Иллюх :

Я так понимаю, это polipo не отвечает?

Если полипо стоит на localhost - наверное. Сначала исправьте свои глупости, сделанные от отчаяния. Внимательно читайте логи и используйте Google для решения. Тогда все и выйдет.
Ну и в iptables разрешите пакеты на lo. Есть во многих темах, может и в этой.

ИМХО Возможно проще по одному пакеты тестировать. Я этим не пользуюсь, может и неправ.

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

сетевые процессы лучше смотеть

netstat -tln4 

будет не только ясно запущен или нет но и слушает ли порт

20

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

Разобрался. Все дело в конфигах.
В стандратном конфиге privoxy посылал данные на

forward / 127.0.0.1:8090

в то время, как polipo ждал их на

proxyAddress = 192.168.1.1

Сейчас все работает. Спасибо Zyxmon за помощь.

extraterrestrial :

сетевые процессы лучше смотеть

netstat -tln4 

будет не только ясно запущен или нет но и слушает ли порт

Ругается на 4 в опциях:

/media/DISK_A1/system/root # netstat -tln4
netstat: invalid option -- 4

А без 4-ки сразу понятно, что работает:

/media/DISK_A1/system/root # netstat -tln 
tcp        0      0 192.168.1.1:8090        0.0.0.0:*               LISTEN

Спасибо.

21

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

Слабо шарю в Линуксе (слабо, читай, вообще никак smile). Отсюда несколько ламерских вопросов:

1. Если правильно понял, то Privoxy ставится на внешний USB-диск, так?
2. Предварительно надо установить некую систему "opkg" по описанию из _http://code.google.com..... Правильно понимаю?
3. Если поставить только Privoxy, то прокси не будет, а будет только обрезка рекламы, да? Работать будет?
4. Не будет ли тормозить на стандартном кинетике, если будет работать только Privoxy (больше у меня никаких доп. приложений не будет), хватит ли ОЗУ или желательно перепаять?

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

1. да
2. да
3. и то и то прокси, работать будет
4. занимаемое кол-во озу зависит от кол-ва одновременных соединений

23

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

extraterrestrial :

Файлы для блокировки основной рекламы и русской берем отсюда

Я просто прикрутил на роутер фильтры из подписки AdBlock Plus — те самые, что помогают нам в браузерах на ПК.

Отредактировано ryzhov_al (2013-02-20 17:40:31)

Со всеми вытекающими...

24

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

extraterrestrial :

3. и то и то прокси, работать будет

А зачем два прокси?

25

Re: Прозрачно: Фильтрация рекламы + кеширующий прокси

inSERter :

А зачем два прокси?

Один - кеширует, другой - не кеширует^W^W режет рекламу.
Соединяются цепочкой, в виду архитектурных ограничений. Да и, вообще, рекламу кешировать, а потом вырезать - нелогично же?!

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn...
Keenetic Giga & WD Mybook Live user