Safariで広告を可能な限りブロックしてみる(1)

最近

ブラウザをFirefoxからSafariに乗り換えたのですが、SafariではFirefoxの定番アドオンである「Adblock Plus」は当然使えません。という訳でSafari用に広告をブロックするための方法を試行錯誤するはめになったのですが、少なくとも3つの方法で広告をブロックすることが出来ることが分かったので、一応まとめておきます。

  1. 広告ブロック用のプロキシソフトを使って広告を消す
  2. 広告ブロック用のプラグインで消す
  3. ユーザースタイルシートで広告を消す

では、順番に楽な方から見ていこうと思います。

広告ブロック用のプロキシソフトを使って広告を消す

プロキシってなんですか? という疑問がある人だけ以下の説明を読むと良いと思います。

Note:プロキシ/プロクシ(Proxy)


(クリックするとはてなフォトライフで大きな画像が見られます)
プロキシは代理という意味です。プロキシ*1が一般家庭で使われることはあまりないと思いますが、企業などでは良く使われる仕組みです。
例えばAさんとBさんいたとして、二人が『いつも感想中』の同じページを見にいったとします。そうすると当然Aさん、Bさん共に『いつも感想中』のWebサイトがある「はてなのサーバー」に通信で接続する訳ですが、全く同じ内容のものを2回取りに行くのは無駄になります。同じオフィスにいるAさんBさんに対して全く同じ新聞がそれぞれ1部づつ別の配達人によって配達されるような感じでしょうか。
まあ、これがAさんとBさんの二人だけだったら大した違いはないのですが・・・これが数百人という単位になるとその通信量は馬鹿になりません*2
そうなるともちろん、ネットワーク上に無駄な通信が大量に流れることにもなります。大量の通信が生み出すのは・・・『通信の渋滞』です。結果としてWebサイトの表示が遅くなったりとか、ダウンロードスピードが落ちたりとかといった問題に発展することもあります。
こうした『通信の無駄』『通信の渋滞』をなくすためにプロキシサーバーというものが作り出されました。プロキシサーバーはこうした問題が起こらないようにするために、

  • クライアントのインターネットへの接続を肩代わり/代理/中継しながら、同時にその通信内容をキャッシュ*3しておく

という動作をします。
そして同じ内容のものを求める接続要求*4があった場合、わざわざインターネットの外まで取りにいかずに、以前の接続要求に応えた時に保存しておいた「キャッシュ」から取り出して、要求のあったコンピューターに返すという動作をします。上の新聞の例で言えば、

  • オフィスの指定の場所に新聞を1部だけ置いておいて、読みたい人が現れたらその1部からコピーを取って渡す

という動作になるということです。
結果として通信の重複による無駄は減り、コンテンツを持ったサーバーへの負荷も減る、といった恩恵を受けることができます。そしてさらに「クライアントコンピューターに直接インターネットへ繋がせない」事によって、本来の目的である「代理」以外の恩恵も受けられるようになりました。
それは、全てのインターネットアクセスをプロキシサーバー経由にすることによって、通信を管理/監視することが可能になり、

  1. 不要なコンテンツのフィルタリング
  2. 有害なサイトへの接続禁止
  3. 誰がどこのサイトに接続したかという記録(ログ)を残す
  4. インターネット側からの有害な接続を見張る門番

といった役割をはたせるようになったということです。
通信環境が整備され、光回線などの太い回線が一般的になってきている現代のネットワーク環境においては、『通信の渋滞』などが起こりにくくなっています。結果としてプロキシサーバーの本来の目的であった「無駄な通信を減らす」という機能のために使用されることは減りつつあります。ですので、一口に「プロキシサーバー」と言っても、実際には様々な用途/目的を持って稼働していると考えたほうが良いでしょう。プロキシは使い方次第で様々な姿を取ることができる多機能で有能な存在なのです。

で、今回取り上げるソフトウェアの「GlimmerBlocker」はプロキシソフトウェアです。動作としてはシンプルで、

  • [ブラウザ] ←→ [GlimmerBlocker] ←→ [Webサイト]

という動きをします。ただしHTTPプロキシではありますがWebサイトのキャッシュを持つことはありません。インストールすると「システム環境設定」パネルに「GlimmerBlocker」のアイコンが現れて、様々な設定変更がそこから可能になります。

動作させるのは簡単で、「GlimmerBlocker」の設定パネルから「Setup」から「Activate GlimmerBlocker」のチェックボックスにチェックを入れるだけです。

そうすると「GlimmerBlocker」はローカルコンピューターのIPアドレス127.0.0.1」のポート「8228」で通信を待ち受けるようになるので、後はSafariFirefoxでも使用可能です)のプロキシ設定をこの数値に変更するだけで使えます。
「GlimmerBlocker」を使うようにSafariの設定を変更する場合は、

  1. メニューバーの「Safari」ー「環境設定」ー「詳細」ープロキシ「設定を変更」を選ぶ
  2. システム環境設定の「ネットワーク」ー「詳細設定」ー「プロキシ」タブー「Webプロキシ」にチェックする
  3. Webプロキシサーバーに「127.0.0.1」「8228」を入力する

です。後は特に考えずにWebサイトに接続すれば良いだけです。
が、初期状態では広告はあまり消えでくれないと思います。デフォルトで用意されているフィルタリングルールが日本のWebサイトの情報に最適化されていないのが原因です。ですのでシステム環境設定パネルの「GlimmerBlocker」から新しいフィルタリングルールを作成します。

具体的な

フィルタリングルールの追加の仕方は比較的簡単で、フィルタ出来る(あるいはした方が良い)と「GlimmerBlocker」が判定したURL情報が「suspect」タブに出力されます。それを元にフィルタリングルールを作っていきます。

ブロックしたい接続を選択して、右下の「Create filter rule」を押せばルールの作成画面に進みます。

設定は基本的には特に変更しなくても問題無いと思いますが、色々と選ぶことが出来ます。広告をブロックするだけなら、

  • 「Action」をBlock requestsに
  • 「Host」を「is」に(「suspect」からルールを追加した場合は自動で入力されます)
  • 「Path」を「ignored」に(標準で設定されます)
  • 「Query」を「ignored」に(標準で設定されます)

それぞれ設定すれば設定は完了です。実際にはそれぞれ色々な条件を選ぶことが出来るんですが、え〜、ぶっちゃけそこまで使いこなせていません。いずれにしてもフィルタをバリバリと追加していけば広告をブラウザに届く前の段階でブロックしてくれます。

そのようにして

Webブラウジングをしているしばらくの間これを続けていけば、そこそこの広告をブロックしてくれるようになります。JavaScriptの書かれたファイル/URLをブロックすることで余計なJavaScriptが実行されるのを防いだりもできるので、上手く使えばFirefoxのアドオンにある「NoScript」と同じような使い方をすることもできます。
機能は豊富、使い込めば使い込んだだけ応用が利きそうなソフトウェアであるこの「GlimmerBlocker」ですが、欠点と感じる所が無いわけではありません。私の感じた欠点としては・・・

  1. Web広告が画面に表示される仕組みについてそれなりに知らないと、広告をブロックしきれない
  2. 意外にメモリを食う
  3. 通信速度が落ちる

です。1に関しては個人個人で試行錯誤してもらうしかないとしても、2、3番目の欠点は気になりますね。メモリの使用量は初期状態で50MB位のようですが、ただでさえ最近はブラウザがメモリを大量に消費する傾向があるので、あまり他のソフトウェアに余計なメモリを使って欲しくないと思うのが本音ですね。最近のPCであればメモリを大量に積んでいると思うのでそれ程困らないかも知れませんが、メモリ1GB位のPCだと何気に負担に感じるんじゃないかと思います。
また、3の欠点に関しても使い続けていると結構うざったく感じるようになります。サクサクと表示されていたWebサイトが「GlimmerBlocker」を使い始めたとたんに重くなる・・・というのはストレスですね。単純に「広告をブロックする」という目的だけで使用するにはちょっとマイナスの部分が多いような気がします。まあ自分のMacのPCスペックと相談しつつ使用する、というのが無難な所かも知れません。

このエントリの続きはこちら→Safariで広告を可能な限りブロックしてみる(2)
つーか本当に何のブログなんだここ・・・。

*1:しばしば「串」なんて呼ばれます。

*2:同じフロアにいる数百人に対してそれぞれの配達人が別々に同じ新聞を届けるような状況を想像してみてください!朝からオフィスは大混雑です!

*3:自分でそのデータを持っておく。

*4:上の例で言えば同じ『いつも感想中』のページ。