Privoxyで280広告ブロッカーを使う

2018年7月8日Linux・Ubuntu Tipsプロキシ,広告ブロック,Privoxy

 

Privoxyは、広告や特定の単語を含むページをブロックすることができるプロキシサーバーソフト。VPNサーバーを立てて透過型のプロキシとして動作させても良いし、HTTPプロキシとして利用しても良い。最近MVNOが流行しているため、「squid3+ziproxy+privoxy」で圧縮プロキシを構築する事例も増えているが、今回はPrivoxyで280広告ブロッカーを利用する方法を紹介する。

280広告ブロッカーとは

280広告ブロッカーは、日本のモバイル広告の多くをフィルタリングすることが出来るドメインリストである。

Privoxyにこれらをインポートすることで、Privoxyでも280広告ブロッカーを有効化することが出来るのだが、そのままインポートすることは当然ながら出来ない。
しかし世の中にはAdblockPlus形式のファイルをPrivoxy用に編集することができるツールが用意されている。今回はこれを利用して、280広告ブロッカーのうちAdblock形式で提供されているものを、Privoxyにインポートする

Adblock形式のファイルをPrivoxyにインポートするツール

「Adblock2Privoxy」

そのままの名称「Adblock2Privoxy」というツールが公開されている。今回はこちらを利用して280広告ブロッカーのファイルをPrivoxyに適用する。

インストール

ダウンロードページにいくと、RPM形式のものとdeb形式のものが配布されている。自分の環境がこれらに対応しているようであれば、こちらを利用してしまおう。
当方はUbuntuを用いているので、素直に「x64 DEB binary packages」をダウンロードし、dpkg -iでインストールした。

上記以外の環境を用いている場合は、コンパイルが必要。試していないので翻訳となってしまうが、ダウンロードページから「easylist only」のものをダウンロードし(easylistとは、広告ブロックの定番ファイルであるが、あまり役に立たない)、以下のとおり実施する。

curl -sSL https://get.haskellstack.org/ | sh
stack unpack adblock2privoxy
cd adblock2privoxy-*
stack setup
stack build

stackをインストールしたあとにビルドしているのだが、当方stackを利用したことがないので、Mac OSやWindowsを利用する際にはstackのページを確認することをお勧めする(それ用のファイルが用意されている)。

コマンドの解説

ざっくりと言ってしまえば、こんな感じ。

adblock2privoxy-p[privoxyの設定ファイルが格納されているディレクトリ]-w[Webサーバーのドキュメントルート]-d[Webサーバーのアドレス]-t[タスク名][adblock形式のファイルのありか]

このうち、 -wオプションと-dオプションはなくても良い。これらを実施すると、当該のディレクトリにCSSが格納され、広告をブロックした場合に代替CSSを用いて広告部分を詰めてくれる(空白にならない)。けれども、これだけのためにWebサーバーを構築したり、VirtualHostを設定するのも面倒なので、-w -dは使わなくても良いかもしれない。

-tオプションは、タスク名称を設定出来る。タスク名称を設定すると、設定を更新する際には以下のコマンドだけで可能となる。

adblock2privoxy-t[タスク名称]

定期的にcronでも回しておけば最新のファイルが手に入るので、便利。

280広告ブロッカーを適用してみる。

280広告ブロッカーのうち、Adblock形式のものは以下で配布されている。

こちらを用いて、adblock2privoxyを使用してPrivoxy用のファイルを生成する。

adblock2privoxy -p /etc/privoxy -t 280.task https://280blocker.net/files/280blocker_adblock.txt

上記の場合、(多くの場合はそうだと思うが)以下を前提として行った。

  • Privoxyの設定ファイルは/etc/privoxyにある
  • 「280.task」という名前でタスク設定

設定の適用

最後に、/etc/privoxy/configに以下を加筆する。「actionsfile default.action」と書かれている部分があるはずなので、その下あたりがよろしいだろう。

actionsfileab2p.system.actionactionsfileab2p.actionfilterfileab2p.system.filterfilterfileab2p.filter

Webサーバーを立ててPrivoxyのCSSを使用する場合

Webサーバーを立てて、CSSを用いてブロックした広告の部分を縮める、等の処理を行う場合は、こんな感じ。

設定

adblock2privoxy -p /etc/privoxy -w /var/www -d localhost -t 280.task https://280blocker.net/files/280blocker_adblock.txt

先ほどのものに加えて、

  • localhostにwebサーバーがある
  • ドキュメントルートは/var/www

という設定を加えている。実際にはVirtualHost等を用いて設定しても構わない。

Apache側の設定

Apacheでも設定が必要。なげやりな感じだがこんな形で設定する。

<VirtualHost *:80>
      #ab2p css domain name (optional, should be equal to --domainCSS parameter)
      ServerName さっき指定したやつ

      #root = --webDir parameter value
      DocumentRoot さっき指定したやつ


      RewriteEngine on

      # first reverse domain names order
      RewriteRule ^/([^/]*?)\.([^/.]+)(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?/ab2p.css$ /$9/$8/$7/$6/$5/$4/$3/$2/$1/ab2p.css [N]

      # then try to get CSS for current domain# if it is unavailable - get CSS for parent domain
      RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
      RewriteRule (^.*/+)[^/]+/+ab2p.css$ $1ab2p.css [N]
</VirtualHost>

これで、280blockerが有効になった。

Posted by webnetforce