LoginSignup
0
4

More than 5 years have passed since last update.

Firefoxでアドオンなしで広告をブロックする

Last updated at Posted at 2018-08-23

macOSのFirefoxでアドオンなしでドメインベースのサイトブロックをする方法について。

言うまでもなく広告はウェブサイトの大切な収入源です。
適切に配置された美しい広告はWebサイトのコンテンツのひとつとも言えます。
一方、Webサイトの美観を損ねるだけの広告や、見る人を傷つける脅迫めいた広告、JavaScriptでユーザのリソースを無駄に消費するだけの迷惑な広告が多いのも事実です。

スクリーンショット 2018-08-23 1.06.16.png

この広告は常にスクロールしているので非常に目障りなうえに、ExcelVBAの書籍を表示するなど、常軌を逸しています。
こういったものは、広告配信プラットフォームごと表示を拒否してしまうのが得策です。

そこで、Firefoxにアドオンを導入しようとしたのですが、有名どころのAdBlock PlusもuBlock Originもtoo muchに思えたので、Firefoxの基本機能だけでドメイン指定のサイトブロックをできないか試してみました。

ブロックすべきドメインの調査

ツール > ウェブ開発 > インスペクターからインスペクターを立ち上げ、広告ウィジットのiframe要素やscript要素のsrcに指定されているURLを探します。
先ほどの広告は、http://xml.affiliate.rakuten.co.jpからJavaScriptが配信されているようです。

ドメインのブロック

Native content blocking in Firefox without installing any extensions によると、Firefoxプロファイルに含まれるpermissions.sqliteを直接編集すると、ドメインを指定してコンテンツの読み込みをブロックできるようです。

Firefoxのプロファイルは、~/Library/Application\ Support/Firefox/Profiles/q4xjykpp.defaultにあります。(q4xjykppの部分は環境によって異なるかもしれません)
まずこのディレクトリに移動します。

プロファイルディレクトリに移動するコマンド
cd ~/Library/Application\ Support/Firefox/Profiles/*.default

パーミッションの設定はpermissions.sqliteに記録されています。
このファイルはsqliteというデータベースなので、sqliteにアクセスするためのコマンドがあるかどうか確認します。

sqlite3コマンドがあるかどうか確認
sqlite3 --version
実行結果(例)
3.16.0 2016-11-04 19:09:39 0e5ffd9123d6d2d2b8f3701e8a73cc98a3a7ff5f

このようにバージョン番号が表示されればsqlite3コマンドは存在しています。

もし、sqlite3: command not foundと言われてしまった場合は、次のようにしてインストールします。

sqlite3をインストールするコマンド
brew update
brew install sqlite3

続いて、現在設定されているパーミッションの設定を確認してみます。

moz_permsテーブルの内容を確認するコマンド
(echo ".headers on"; \
echo ".mode column"; \
echo ".width 4 40"; \
echo "select * from moz_perms;") | \
sqlite3 permissions.sqlite
実行結果(例)
id    origin                                    type         permission  expireType  expireTime  modificationTime
----  ----------------------------------------  -----------  ----------  ----------  ----------  ----------------
1     https://outlook.office.com                offline-app  1           0           0           1491799577598   
2     https://teams.microsoft.com               offline-app  1           0           0           1491811815188   
4     http://www.openstreetmap.org              geo          1           0           0           1497640565896   
7     https://wired.jp                          desktop-not  2           0           0           1512983172841
.
.
.

ここまで確認できたら、sqlite3コマンドで、http://xml.affiliate.rakuten.co.jpからのJavaScript読み込みを禁止する設定を追加してみます。

permissions.sqliteにエントリを追加するコマンド
echo "INSERT INTO 'moz_perms' (origin, type, permission) VALUES('http://xml.affiliate.rakuten.co.jp', 'script', '2');" | \
sqlite3 ./permissions.sqlite

追加ができたら、ちゃんと追加されているかどうか確認してみます。

moz_permsテーブルの内容を確認するコマンド
(echo ".headers on"; \
echo ".mode column"; \
echo ".width 4 40"; \
echo "select * from moz_perms;") | \
sqlite3 permissions.sqlite | \
grep rakuten
実行結果(例)
57    http://xml.affiliate.rakuten.co.jp        script       2                                                   

あとはFirefoxを再起動すれば、さきほどの広告が消えているはずです。

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4