特定のサイトへのアクセスを制限する

maclinuxに適用可能ですが、おそらくwindowsでも同様の方法で設定可能です。

はじめに

趣味でプログラミングや英語の勉強だったりしてると、集中したいと思っている思いとは反対についついtwitteryoutubeに手を出してしまうといった事が多いと思います。 最近だとtwitterが長い動画に対応したり、youtubeはどんどん高画質で面白くなっていったりで、時間はどんどん奪われていく一方ですね。

今回は本当にやりたい事に集中するために、特定のサイトのアクセスを制限する方法を試したいと思います。

/etc/hostsでアクセス制限する

方法は簡単。 /etc/hostsの末尾に以下を書き加えます。 0.0.0.0に空白を入れてアクセス制限をしたいURLを記入すれば完了です。

0.0.0.0 youtube.com
::      youtube.com
0.0.0.0 www.youtube.com
::      www.youtube.com
0.0.0.0 www.facebook.com
::      www.facebook.com
0.0.0.0 twitter.com
::      twitter.com
0.0.0.0 facebook.com
::      facebook.com
0.0.0.0 api.twitter.com
::      api.twitter.com
0.0.0.0 www.twitter.com
::      www.twitter.com
0.0.0.0 facebook.com
::      facebook.com
0.0.0.0 www.facebook.com
::      www.facebook.com

仕組みは単純で、記入したURLに向こうなipアドレスを指定するため結果としてアクセスできなくなります。

指定したら、DNSキャッシュを消すために以下のコマンドを打つ(macのみ、Linuxは未確認)。

sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;

chromeの場合は独自でキャッシュしてるため、chrome://net-internals/#dnsにアクセスして、「Clear host cache」をクリック。

試すと、若干のタイムラグはあったが、アクセス制限できるようになりました。

戻す場合は、該当の行をコメントアウトして、同じようにDNSのキャッシュをクリアすればOK。

CUIが苦手でmacの人は、GUIで設定できるアプリもあります、SelfControl。 正確に理解していませんが、同様に/etc/hostsをいじっているようです。

Windowsでもホストを設定するファイルがあるようなので、同様に設定すれば出来るんじゃないかと思います。 Windowsの場合はフリーソフトが沢山ありそうですが。

補足

macで設定する場合、理由は分かりませんが、設定内容がうまく反映されないことがあります。 回避方法としては、ipv6で設定するとうまく行くと報告があったりしますが、それでもうまくいかないという報告もあったりします。 僕も原因がわからないので注意して下さい。 バグに近いのであまり、深追いをせず出来ない場合は諦めるのも手だと思います。