簡単!ラズパイでスマホ広告をブロック – youtube広告も削除可能! |じょるブログ

じょるブログ

電子工作やプログラミング関連の情報を発信している技術系ブログ

インストール web ラズベリーパイ

簡単!ラズパイでスマホ広告をブロック – youtube広告も削除可能!

投稿日:

   

ラズパイでスマホを含む家中の端末に表示されるWEB広告をブロックする方法を紹介します。 動画の最初や途中に表示されるyoutube広告を削除することも可能です!

最近ラズパイを使って何かしたいと思ってて、ラズパイでできることについていろいろ調べていました。

すると、ラズパイにPrivoxyというソフトウェアを導入することで、スマホ・タブレット・PCなどあらゆる家中の端末に表示されるWEB広告をブロックすることができるという記事を目にしました。

どうやらアドセンスなどのWEB広告だけでなく、youtubeなどの動画サイトの動画広告もブロックできるとのことです。すごい!!

最近外出自粛によりyoutubeを見る機会が増え、再生途中や再生開始直後に再生される広告にはイライラしていて、youtubeのプレミアム会員になろうかと悩んだ時もあったので、ラズパイで無料でできるならと思い実際に実装してみることにしました!

  

導入手順は

privoxyのインストール

広告フィルターの登録

の2つだけなので非常に簡単です!

   

   

動作原理

そもそもなぜラズパイでWEB広告をブロックできるのか、その仕組みについて簡単に解説します。

一言で説明すると、ラズパイにアドブロック機能を備えたプロキシサーバーを導入し、スマホ側でラズパイをプロキシサーバーとして設定してラズパイ経由で通信を行うことにより、通信内容を書き換え、広告を非表示・削除することができるからです。

以下でもう少し詳しく説明します。

  

・広告ブロック(アドブロック)について

そもそも広告ブロックとは何か、どういう仕組みなのか、について説明します。

アドブロックについてwikipediaで調べてみると以下のように書いてあります。

アドブロッカーはあらかじめ用意されたフィルタ(インターネット広告のブラックリスト)を参照し、広告が含まれる通信をブロックしたり、広告に用いられる特定の要素(例:<div class=”ad”>広告</ad>)や、ハイパーリンク(例:<a href=”http://www.****.co.jp/” >広告</a>)を読み込ませないことで、Webサイト上から広告を取り除く。

https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%89%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF

つまり要約すると広告ブロッカーは主に以下の2パターンによって広告をブロックしているとのことです。

  • WEBサイトにアクセスした際に、フィルタ(広告のブラックリスト)に登録されたドメインが含まれていた場合、その部分の情報を取得しない。
  • WEBサイトにアクセスした際に、 フィルタに従ってWEBサイトのプログラムを一部改変し、 WEBサイトの情報を取得する。

  

・プロキシサーバーについて

続いて今回一番重要なキーワードであるプロキシについて解説します。

プロキシサーバーとは、その名の通り代理で通信を行うサーバーのことです。下の図を見てください。

プロキシサーバーを通さない通常の通信の場合は、図の赤い矢印のように直接クライアントであるスマホがWEBサイトのサーバーにアクセスし(図の①)、WEBサイトはスマホに対しWEBデータを送信します (図の②) 。

プロキシ通信を行う場合は、まずスマホはWEBサーバーに直接アクセスするのではなくプロキシサーバー(今回の場合はラズパイ)に一旦アクセス要求を出します (図の①) 。次にプロキシサーバーがスマホの代わりにWEBサーバーへアクセスします (図の②) 。そして、また一旦プロキシサーバーがそのWEBデータを受け取り (図の③) 、スマホへそのデータを転送します (図の⑤) 。

これがプロキシサーバーを用いた通信の流れです。

今回はラズパイが代理でWEBデータを取得した際に (図の③)そのデータをそのままスマホへ転送するのではなく 、ラズパイ側で広告を取り除く処理を行った後 に(図の④) スマホへWEBデータを送信する (図の⑤) ことで、広告が取り除かれたWEBデータをスマホで閲覧できるようにします。

ちなみにプロキシサーバーは一般的にウイルス検出や危険なサイトへのアクセスを禁止するファイアウォールとして利用されたりしています。

当然ですが、間にプロキシサーバーとの通信を経由することになるので、通信速度は多少遅くなるというデメリットはあります。
私の環境の場合は特に通信速度が遅くなったという感覚はなく、youtubeも快適に視聴できましたが、どうしても通信速度の低下が気になるといったような方はキャッシュ機能を持ったプロキシサーバー構築ソフトウェア(squidなど)も同時に導入してみてください。こうすることで、条件次第ではむしろ通常の通信より高速化させることも可能です。

    

導入の流れ

  • Privoxyのインストールと設定
  • フィルタ(ブロックする広告リスト)を登録

   

①Privoxyのインストール・設定

・Privoxyのインストール

まず、ラズパイをプロキシサーバーとして稼働させることができるPrivoxyというソフトウェアを、以下のコマンドでインストールします。

sudo apt-get install privoxy -y

   

・ Privoxyの設定

次に以下のコマンドでprivoxyの設定ファイルを変更します。

sudo nano /etc/privoxy/config

    

listen-address と書かれた行が2行あるのでこれを消し、

listen-address   自分のラズベリーパイのローカルIPアドレス:8118

と記載します。
※790行目くらいのところにあります。

変更例↓

#変更前
listen-address  127.0.0.1:8118
listen-address  [::1]:8118

#変更後
listen-address  192.168.2.123:8118

   

最後にprivoxyのデーモンを再起動します。

sudo systemctl restart privoxy

この段階でラズパイをプロキシサーバーとして使えるようになります。
ただし、まだフィルタ設定をしていないので広告は消えません。

  

②フィルタ(ブロックする広告リスト)を登録

AdblockPlusフィルターの登録

続いて、ブロックする広告を指定するフィルターの設定をしていきます。

世の中には有志の方が作ってくださった広告フィルターがたくさん存在しており、この無数にある広告フィルターの中でも特に AdblockPlusリストが有名です。

ただ、 privoxyでは広告フィルターはそのまま使用できず、 privoxy用にフィルターファイルを修正する必要があります。

なのでまず、 AdblockPlusリスト を privoxyで利用できるように自動で修正してくれるプログラムをダウンロードします。

以下のコマンドでこちらのサイト(http://andrwe.org/scripting/bash/privoxy-blocklist)のシェルスクリプトをダウンロードします。

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

   

実行できるように権限を変更し、実行します。

sudo chmod 755 /etc/privoxy/privoxy-blocklist.sh
sudo sh -c "/etc/privoxy/privoxy-blocklist.sh"

実行すると AdblockPlusフィルター を privoxy が利用できる形に修正してくれて、さらに privoxy の config ファイルも自動で修正し、フィルターの登録までしてくれます。

sudo systemctl restart privoxy

  

・その他のフィルターの登録

AdblockPlusフィルター だけでも、アドセンス広告などの広告は削除してくれますが、youtubeの日本の広告等は削除されないことが多いです。

そこで日本のフィルターとして有名な豆腐フィルターというものと、ついでに他のいくつかのフィルターも登録します。

先ほどと同様にフィルターをprivoxy用に変換してくれるプログラムをダウンロードします。

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

    

このプログラムは以下のように -p オプションで修正後のフィルタを保存するディレクトリを指定し、-u オプションでフィルターファイルを指定して実行します。

sudo sh -c "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"

上のコードの例では、

  • http://tofukko.r.ribbon.to/Adblock_Plus_list.txt
  • https://raw.githubusercontent.com/k2jp/abp-japanese-filters/master/abpjf.txt

という二つの日本用の広告フィルターを指定しています。

※シェル(sh)で実行すると以下のようなエラーがでて実行できないので、バッシュ(bash)で実行してください。

Syntax error: "(" unexpected

    

このプログラムでは先ほどのプログラムとは違い、自動でprivoxyの設定はしてくれないので手動で設定していきます。

まず、 privoxyの設定ファイルを開きます。

sudo nano /etc/privoxy/config

   

先ほどのシェルスクリプトを実行すると、-pオプションで指定したディレクトリに.actionと.filterという拡張子がついたファイルが生成されます。

このファイル名を privoxyの設定ファイルに記載していきます。

アクションファイルの場合は

actionsfile xxxxxxxxx.action

というように、フィルターファイルの場合は

filterfile xxxxxxxxxx.filter

というように記載します。

記載場所は最終行でもどこでもいいですが、以下の記載例のように、アクションファイルは2.5. actionsfileと書かれた最後の行に、フィルターファイルは2.6. filterfileと書かれた最後の行に記載すると分かりやすいと思います。

#  2.5. actionsfile
#  =================

   ・
   ・
   ・

#      Actions files contain all the per site and per URL
#      configuration for ad blocking, cookie management, privacy
#      considerations, etc.
#
actionsfile match-all.action # Actions that are applied to all sites and maybe $
actionsfile default.action   # Main actions file
actionsfile easylistgermany.script.action
actionsfile easylist.script.action
actionsfile Adblock_Plus_list.script.action
actionsfile abpjf.script.action
actionsfile user.action      # User customizations
actionsfile 280blocker_adblock_nanj_supp.script.action
#
#  2.6. filterfile
#  ================
#  2.6. filterfile
#  ================

   ・
   ・
   ・

#      It is recommended to place any locally adapted filters into a
#      separate file, such as user.filter.
#
filterfile default.filter
filterfile easylistgermany.script.filter
filterfile easylist.script.filter
filterfile Adblock_Plus_list.script.filter
filterfile abpjf.script.filter
filterfile user.filter      # User customizations
filterfile 280blocker_adblock_nanj_supp.script.filter
#
#  2.7. logfile
#  =============

   

広告フィルターで検索するとたくさんのフィルターが出てくるので、 もし上記のフィルターで消えない広告があったら他のフィルターも導入してみてください。

おすすめのフィルターを2つ紹介しておきます。

・おすすめのフィルター

    

使い方

・スマホ・タブレット側のwifi設定

androidのスマホやタブレットでのプロキシ設定方法について解説します。

iPhoneやipadも同じような設定方法だと思うので、以下を参考にプロキシ設定を行ってください。

   

まず、設定からwi-fi設定を開き、接続済みのwi-fiの設定アイコンをタップします。

   

次に、画面上部のペンマークをタップします。 

  

するとポップアップ画面が表示されるので、詳細オプションを開きます。

  

プロキシという項目があるので、手動に変更します。

するとさらにプロキシの詳細設定を行えるようになるので、

プロキシのホスト名という欄にラズベリーパイのローカルIPアドレスを、

プロキシポート8118と入力し、保存をタップしてください。

   

以上でラズパイのプロキシサーバーへの接続は完了です。

この状態でWEBサイトを開くと以下の画像のように広告が表示されなくなります。

youtubeの広告もほぼ表示されなくなります。ただフィルターに登録されていない広告は表示されてしまうので、そのような場合はいろいろなフィルターを追加してみてください。

   

上手くいかない場合

・ファイアウォールの設定

もし上記のように設定を行っても動作しない場合はファイアウォールが原因である可能性があります。

僕の場合ufwというファイアウォールソフトウェアを入れていたので①、②の手順だけではアクセスできませんでした。

ufwを入れている場合は以下のコマンドを実行して、8118ポートの通信を許可してください。

sudo ufw allow 8118

  

参考サイト

https://pimylifeup.com/raspberry-pi-proxy-using-privoxy/

https://blog.bnikka.com/raspberrypi/privoxy.html

https://vogel.at.webry.info/201805/article_4.html

google ads




google ads




-インストール, web, ラズベリーパイ

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

ラズパイで SPI 7セグLED Module 8 Digital を使ってみた

半年ほど就活に専念するため、ブログの更新をしていませんでしたが、なんとか就活の方が落ち着いてきたのでまたブログを再開しようと思います。 就活中はブログは一時中断していましたが、電子工作の方は続けていた …

簡単にRasberryPi Zero WH へ node.js, npmを入れる方法

  はじめに  スマートリモコンでPS4を操作するためにはps4-wakerというパッケージが必要であり、これをインストールするにはnode.jsのパッケージ管理ツールであるnpmをインストールする必 …

ubuntu18.04でwordpressをapache2で動作させるまで

    今までは研究室内の各種引継ぎ情報や機密情報などは研究室専用のWiki(Seesaa Wiki )に記載して共有していたのですが、機密情報を外部サービスに公開するのはあまり良くないと以前から話題 …

Raspberry Pi のSDカードが壊れ、起動しなくなってしまった場合の修復方法

スマートリモコンとして使用していたラズベリーパイ(zero WH)の調子が最近悪く、ちょっと動作が遅くなってきたなと思っていたら突然反応しなくなってしまいました。半年以上問題なく稼働していましたが、起 …

Alexa, Google HomeをRasberryPiと連携する

この記事ではスマートリモコンを作ってみたで作成した、スマートリモコンをAlexaやGoogle Assistantと連携するために利用した外部サービスについて記載します。     Amazon Ech …




関連記事