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の動画広告を見なくなった。
コメント
[…] https://blog.bnikka.com/raspberrypi/privoxy.html […]
豆腐フィルタは2019年からこのURLではありません。
ここは更新日時だけを変更したサイトなので、
訪れた方は参考だけにしておいてください。
こういうサイト、ホント増えましたね。
ご指摘ありがとうございます。
豆腐フィルタを新URLの下記へ変更致しました。
https://raw.githubusercontent.com/tofukko/filter/master/Adblock_Plus_list.txt
こんにちは。
youtubeはhttpsに対応しなければ広告が除去できなさそうなのですが、ご対応さてたのですか?
もうみてないと思いますが、pi-holeを導入してgithubからyoutube広告ブロックアドオンをいれた方が安定すると思います。
privoxyはよくも悪くもproxyなので包括的な広告ブロックには不向きです。