どうしても広告ってのはうざったいものが多いです。 本来のコンテンツよりも目立ってしまっては、テレビと同じで嫌われるだけなのだけど。 実はこの広告、殆どの場合サイト自体にはスクリプトが埋め込まれているだけなので、このスクリプトを読ませなければ表示されないのですな。 それをうまく活用しているのがAdBlockのような広告ブロックソフトなのだけれど、色々対策されたりブロックしてくれなかったりと不具合も多いです。 ってことで、裏技的な方法を紹介しましょう。

DNSの仕組み

google.co.jpとかyahoo.co.jpはホスト名であり、そこからIPアドレスに変換する作業を必要とします。 名前解決とか呼ばれますが。 で、この名前解決をどこでやっているかというと、世界中にあるのですが、 順繰りに探しているのですよ。 jpサーバーにco.jpがあそこにあるから聞いとくれ、と言われ co.jpサーバーにyahoo.co.jpはあそこにあるから聞いとくれ、と言われ yahoo.co.jpサーバーにauctions.yahoo.co.jpはどこにあると言われて欲しいIPアドレスが見つかると。

裏技的に使う

で、この仕組ある意味裏技的に使えるわけで。 もしjpサーバーがauctions.yahoo.co.jpのアドレスを知ってたらco.jpサーバーとyahoo.co.jpサーバーに聞かなくなりますよね。 そういう仕組がローカルで用意できるんですよ。 一つはプライマリDNSを別個用意。 ローカルサーバーとかクラウドにDNSサーバーを用意して、そっちへ飛ばす。 セカンダリDNSにルーターのIPを指定すれば通常通り使えますので。 んでプライマリDNS側でホスト名をダミーIPへ飛ばす、と。 もう一つはローカルPCにあるhostsファイルにホスト名とIPを書き加えちゃいます。 Web開発したことがある人ならやったことあるかと。 windowsはC:\windows\system32\drivers\etcに、Macは/etc/にあったかと。 ただこれ、なぜかedgeでは効かないんですよね。 何にしろこうすればDNSキャッシュが消えた後、広告サーバーのスクリプトを読もうとしてもダミーIPのスクリプトを読み、結果実行されません。 もちろんどのサーバーでも出なくなるのは時として問題かもしれませんが、悪質な広告に対してはこういう手段もありかと。 ちなみにスマホでできるといいのだけど、DNSをいじれないので上記手段は使えないかと。 が、ルータでIPテーブルを書き換えてフォワーディングさせる、フィルタリングさせるなんて手を使えばwifi時のみ同様のこともできそうですね。