3流プログラマのメモ書き

元開発職→現社内SEの三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

Privoxyでホワイトリスト方式のプロキシを立ててみた

WindowsPCで、許可したサイトしか閲覧できないようにして欲しいという依頼がありました。

IEのコンテンツアドバイザを使っても良かったんですが、今回はそのPC自身にプロキシソフトをいれて、そこでフィルタリング出来ないか試してみました。

PrivoxyオープンソースのWebフィルタでプロキシとして動作するようです。フィルタの設定がかなり柔軟で、主に広告コンテンツを除去したりするのに使われているようです。さらにtorと一緒に使ってさらに匿名性を挙げるためにも使われるようです。

インストールファイルが終われば設定ファイルを触ります。

config.txtには全般的な設定が入っています。

アクションファイルには、どのURLにどのフィルタをかけるかの設定を書きます。

フィルタファイルには、フィルタを正規表現で定義します。

ホワイトリスト方式の設定はFAQ(公式日本語訳)/設定に載っていました。

まず、config.txtを探して以下のようにuser.acitionファイルを使う設定になっているか確認します。

actionsfile user.action

(個別のアクションはuser.actionファイルに記述するのが良いようです)

次に、user.actionファイルで以下のように定義すると、全てのURLがブロックされます。

{ +block }

このあとに{ -block }を定義し許可するサイトを指定していきます。

{ -block }

.jehupc.exblog.jp

.youtube.com

.google.com

.jehupc.com

この時、パターンの書き方がちょっと特殊なので気をつけます。(この点がPrivoxy アクションファイル( user.action )のパターン指定で気をつけたいこと - digital 千里眼に書かれています。)

このドメインのパターンが部分一致でないのです。

例えば、jehupc.comと定義した時、jehupc.comのページはOKですが、xx.jehupc.comはNGになります。

そのドメイン全体に適用させたい場合は、ドメイン名の先頭に「.」を入れればOKなようです。

設定が終わればブラウザにプロキシの設定しをします。

デフォルトであれば待ち受けポートは8118なので、127.0.0.1:8118をプロキシ先として設定します。

これでprivoxy.exeを起動し、ブラウザでアクセスすると指定したURL以外は見なくなっているはずです。

指定したサイト以外にアクセスするとブロック画面が出るんですが、この画面の"go there anyway. "をいうリンクを押下すると見えてしまいます。

なので、このリンクをのけます。そのためには、configt.txt で以下のように設定するといいようです。

enforce-blocks 1

また、毎回exeを起動するのも面倒なのでサービスとしてインストールしてしまう方法も書いておきます。

コマンドプロンプトで、privoxyの引数に --install をつければいいようです。

privoxy.exe --install

参考:

Privoxyであれこれ

Privoxy 3.0.19 User Manualアクションファイルの公式マニュアル。英語。

Privoxyで、Webページの読み込みが不完全になることがある件。こういう場合、keep-alive-timeoutを無効化するといいようです。

Privoxyとは - はてなキーワード

IE7のコンテンツアドバイザーでフィルタリングを試す~Googleを子供向けポータルにする方法(2) コンテンツアドバイザを使う場合の方法です。