Raspberry Pi で広告を削除するプロクシの構築方法 | privoxy

Raspberry Pi を広告除去Proxyサーバに

広告が何かとウザいので、Raspberry Pi に広告除去Proxyサーバを立てることで解決したいと思う。

既に、DD-WRTを導入した無線アクセスポイントで Privoxy を導入しているのだが、広告のフィルタリングルール等を、もう少し詳細に変更したいという気持ちが出てきて、Raspberry Pi で実現することにした。

まずは、apt-get で Privoxy をインストールする。

$ sudo apt-get install privoxy

スマホからの proxyアクセスを許可する設定を入れる。

$ sudo vi /etc/privoxy/config

listen-address 0.0.0.0:8118
$ sudo /etc/init.d/privoxy restart

スマホ側設定(iPhoneの場合)

「設定」→「Wi-Fi」→「自宅のWi-FiのSSIDの i ボタンを押す」→「Proxy を設定」

Server:Raspberry Pi のIPアドレス

Port:8118

以上で完了だ。

自宅にいるときは、Raspberry Pi の広告除去 Proxy を経由して通信するようになり、快適なウェブブラウジングが実現する。

外出時も、Raspberry Pi の広告除去 Proxy を利用したいときは、自宅に VPN で接続し、VPN の Proxy 設定に上記を入れておくと良い。

(参考)ついでに、キャッシュ Proxy も設定する

ついでに、キャッシュを蓄えることで、ウェブブラウジングを高速化したいと思う。

Proxy サーバとして超有名な squid の標準機能を利用して、キャッシュ化する。

$ sudo apt-get install squid

必要最低限の設定を入れる。

$ sudo vi /etc/squid/squid.conf

acl localnet src 192.168.1.0/24   #許可するLAN

http_access allow localnet        #許可するLAN 

http_port 3128                    #squid が監視するポート 

cache_peer localhost parent 8118 7 no-query  #Privoxyのポート

forwarded_for off                 #Proxyを介していることを隠す  

$ sudo /etc/init.d/squid restart

Privoxy → Squid に変更。

$ sudo vi /etc/privoxy/config

forward-socks4a / 127.0.0.1:3128
forward-socks4 / 127.0.0.1:3128
forward-socks5 / 127.0.0.1:3128
$ sudo /etc/init.d/privoxy restart

これで、キャッシュを使うようになり、高速ウェブブラウジングが実現する。

(参考)更についでに、DNSキャッシュも設定する

更についでに、DNSキャッシュを蓄えて、DNS解決の高速化を行う。

$ sudo apt-get install dnsmasq

Google DNSサービスに見に行くように変更。

$ sudo vi /etc/resolv.conf

nameserver 127.0.0.1
nameserver 8.8.8.8
nameserver 192.168.1.1
$ sudo /etc/init.d/dnsmasq restart

プライベートDNSに、Raspberry Piに導入したdnsmasqを見に行く設定を入れることで、DNS解決が高速化する。

結果は…?

正直、ウェブブラウジングがめちゃめちゃ爆速になった。

adblockerの最新広告フィルタールールを適用

privoxyをインストールした当初でも、簡単な広告除去フィルタールールは入っているようだが、最新の広告は除去しきれない。

そこで、広告除去で老舗のadblockerのフィルタールールを、privoxy用に変換して使用する。

ALWというこちらのページ の方が、なんとこの自動変換スクリプトを作ってくださっているので、こちらを拝借する。

/etc/privoxy/user_filer という独自のディレクトリを切って、自動変換スクリプトをこちらにダウンロード。

$ sudo mkdir /etc/privoxy/user_filer

$ sudo sh -c "curl http://andrwe.org/_export/code/scripting/bash/privoxy-blocklist > /etc/privoxy/user_filter/privoxy-blocklist.sh "

実行権限を付与して、bashで実行するだけ。

$ sudo chmod 755 /etc/privoxy/user_filter/privoxy-blocklist.sh
 #↑実行権限を付与

$ sudo bash /etc/privoxy/user_filter/privoxy-blocklist.sh
 #↑実行(なお、shだとうまく動かないので、bashと明示することがポイント) 

この自動変換スクリプトが、privoxyの設定も自動的に行なってくれるという、痒いところに手が届く素晴らしさ。

あとは、privoxyをリスタートするだけでOK。

$ sudo /etc/init.d/privoxy restart

後は、ときどき(思い立ったときに)自動変換スクリプトを実行してあげるだけで、最新のフィルタールールにアップデートできる。

なんと素晴らしいのだろう。

YouTubeなどの日本独自広告の除去

YouTubeの自動広告など煩わしい広告も除去したい。そのためには、日本に特化したフィルターを使用する必要がある。そこで、豆腐フィルターというこれまた有志の方が作ってくださっているフィルタを活用する。

豆腐フィルターなどのフィルタールールをprivoxy用に変換するためのツールGitHubに掲載してくださっているprivoxy-adblockからダウンロードする。

$ cd /etc/privoxy/user_filter/

$ sudo wget https://raw.githubusercontent.com/skroll/privoxy-adblock/master/privoxy-adblock.sh

日本用のフィルターとして有名な、前記豆腐フィルターとABP Japanese filters(GitHub)を使用する。

豆腐フィルタ
新URL: https://raw.githubusercontent.com/tofukko/filter/master/Adblock_Plus_list.txt
旧URL: http://tofukko.r.ribbon.to/Adblock_Plus_list.txt

ABP Japanese filters – GitHub
https://raw.githubusercontent.com/k2jp/abp-japanese-filters/master/abpjf.txt

privoxy-adblock.shに実行権限を付与し、上記フィルターを -p パス -u フィルターURLを指定して実行する。

$ sudo chmod 755 privoxy-adblock.sh

$ sudo bash privoxy-adblock.sh -p /etc/privoxy -u http://tofukko.r.ribbon.to/Adblock_Plus_list.txt -u https://raw.githubusercontent.com/k2jp/abp-japanese-filters/master/abpjf.txt

このprivoxy-adblock.shは、privoxyのconfigを自動で変更してしてくれないので、ここは手動で設定する。

/etc/privoxy/configに下記の3種類(ファイルは.actionと.filterの6個)が生成されているはずなので、これをconfigに明示的に指定する。

$ sudo vi /etc/privoxy/config

--------------------------------
#下記を追記
actionsfile Adblock_Plus_list.script.action
actionsfile abpjf.script.action
actionsfile easylist.script.action


filterfile Adblock_Plus_list.script.filter
filterfile abpjf.script.filter
filterfile easylist.script.filter
--------------------------------

あとは、privoxyを再起動して完了。

$ /etc/init.d/privoxy restart

これで見事にYouTubeの動画広告を見なくなった。

コメント

  1. 匿名 より:

    豆腐フィルタは2019年からこのURLではありません。

    ここは更新日時だけを変更したサイトなので、
    訪れた方は参考だけにしておいてください。
    こういうサイト、ホント増えましたね。

  2. 匿名 より:

    こんにちは。
    youtubeはhttpsに対応しなければ広告が除去できなさそうなのですが、ご対応さてたのですか?

    • 匿名 より:

      もうみてないと思いますが、pi-holeを導入してgithubからyoutube広告ブロックアドオンをいれた方が安定すると思います。
      privoxyはよくも悪くもproxyなので包括的な広告ブロックには不向きです。