Moai+Easter 上級マニュアル

Moai Manual Advanced Manual Annoucement FAQ
ご案内 Moaiエンジン CustomBoyエンジン HowToコンパイル Moai CGI Developers
エンジンの詳細 フィルターの詳細 ローカルプロキシとしての使い方 プラグイン開発のためのヒント

はじめに

この記事ではMoaiをローカルプロキシとして使用する方法について詳しく説明します.
尚、Ver2.0以降ではEasterによる仮想化が簡単に行えるため、もはやローカルプロキシによる仮想化の意味はあまりありません.


目次



プロキシとは?

一般に「プロキシを使う」と言った場合、あなたと最終接続先となるホストとの通信において、第三者のサーバ、即ちプロキシサーバでその通信を仲介することを意味します.
概念的には以下のようになります.

あなたのブラウザ
外部サーバ上で動作するプロキシ
最終接続先サイト

これにより最終接続先サイトからはあなたのマシンのIPアドレスが直接はわからなくなります.
つまりIP情報を隠蔽することができます.

目次に戻る

ローカルプロキシとは?

ローカルプロキシとは第三者となる外部サーバで通信を仲介するのではなく、この仕事を文字通り今あなたの使っているコンピュータ上で行うというものです.
概念的には以下のようになります.

あなたのブラウザ
あなたのマシン上で動作するローカルプロキシ
接続先サイト

ところでローカルプロキシがあくまであなたのマシンで動作している以上、接続先サイトから見ればあなたのマシンからの通信となります. つまりIPアドレスは隠蔽されません.
よってローカルプロキシを使う目的はIPアドレスを隠蔽することではありません.

では何のためにこれを間に挟むのでしょうか?

Moaiに限らず一般にローカルプロキシは、あなたのブラウザとサイトとの通信を仲介します.
その主たる目的は、あなたが定義したフィルタに従ってその通信内容をフィルタリングすることです.
これによって特定の接続先サイトに送られるあなたのマシン固有の情報を遮断したり偽装したりすることができます.
つまりローカルプロキシとは本来はプライベートを守るためのセキュリティーツールです.

接続先サイトに送られるこの種の情報とは、具体的にはUser-AgentなどのHTTPヘッダの内容、POST時の変数の内容、Cookieの内容などです.
あなたが使っているブラウザには特にクリーンアップしない限りこれらの情報が残留しています.
ローカルプロキシのフィルタリングはこれを遮断したり加工修正することで接続先サイトにこれらがそのまま送信されることを防ぎます.

このフィルタリングの対象となるホストを細かく選別することもできます.
例えばサイトAにはそれ専用のフィルタリングを行い、サイトBに対してはまた別のフィルタリングを行い、その他のサイトにはそもそもフィルタリング自体を全く行わないといったようなことです.

また一方、受信においてサイトからの応答時のデータ(HTML, Javascriptのjsファイル, cssファイルなど)を加工修正することもできます.
これにより、サイトのページのレイアウトを好みの形に修正したり、広告を除去したりすることもできます.

目次に戻る

初めてのローカルプロキシ

Moaiをローカルプロキシとして使う場合は、以下の手順で設定します.
【127.0.0.1 について】

これは一般にループバック接続と呼ばれ、自分自身のマシンへの接続を意味します.
127.0.0.1 の代わりに localhost と指定してもうまくいく場合もあります.
特殊な使い方として別のマシンで起動しているMoaiに接続したい場合は、そのマシンのIPを指定することもできます.
(ただしその場合、Moaiエンジンのセキュリティ設定でacceptable_hostをANYに変更しておく必要があります)

基本的には以上です.
ブラウザから目的のサイトへアクセスできればOKです.
このとき普通のURLでそのまま目的のサイトにアクセスします.
それがターゲットに設定されたサイトであれば自動的に仮想ブラウザ環境が実現されます.
すべての通信はMoaiのローカルプロキシを経由して行われることに注意してください.
それがたとえターゲットに設定されていないサイトにアクセスする場合でもです.
そのため稀にサイトによっては表示に問題が生じたり若干パフォーマンスが犠牲になることがあります.
(Ver2.0以降で導入されたEasterはこの問題をも解消したものとなります)

もし「プロキシサーバへの接続を拒否されました」のような表示がなされた場合はおそらく上記の手順において、 1 を起動していないか 2 の手順で何か指定をミスしています.
あるいはOSのファイアウォール機能により8124への接続がブロックされている可能性もあるのでその設定を確認して下さい.

Moaiをローカルプロキシとして使う場合でも、仮想ブラウザ環境の新規構築/刷新には VirtualUSERS を使います.

目次に戻る

プロキシ設定ダイアログとは?

プロキシを使ったことがある方なら、この項目を読む必要はありません.
使ったことがない方でも、プロキシの設定方法に関してはGoogleなどで検索すれば解説サイトは出てくるのでそちらをご覧頂いても勿論かまいませんが、 ここでも一応初心者の方向けにFirefoxを例にとり、具体的な設定方法を説明します.
  • 1. 「ツール」メニューから「オプション」を選び、例の色々設定できる画面を開く.

  • 2. 「詳細」タブを選び、そこにある「接続設定」ボタンを押す.

  • 3. 「インターネット接続」ダイアログ(下図)が出るので「手動でプロキシを設定する」という部分にチェックをつける.

  • 4. すぐ下にある「HTTPプロキシ」の部分に localhost (または127.0.0.1) と入力する.
    また右隣にある「ポート」の部分に 8124 と入力する(このとき日本語入力はOFFにしておきます)

  • 5. 同様にその下にある「SSLプロキシ」の部分に localhost (または127.0.0.1) と入力する.
    また右隣にある「ポート」の部分に 8124 と入力する(このとき日本語入力はOFFにしておきます)

  • 6. moaiを起動する.
以上となります(先にmoaiを起動させた上で上記の1から5までの手順を行ってもかまいません).



【重要】

元の設定に戻す(プロキシを使用しない)方法も覚えておきましょう.
なぜこれが重要かといえば、本来プロキシを使用しない状態の方が自然だからです.

上記 3. において「プロキシを使用しない」という項目が一番上にあります.
これにチェックをつけることで、Firefoxはプロキシを介さない通常の状態に戻ります.
(Firefoxの初期設定では元々この状態のはずです)

もしmoaiの方が何か変なことになった場合(俗に言うバグった場合)は、一度moaiを終了して再び起動させれば大抵の場合は問題は解消されます.

また万一、moaiをローカルプロキシとして使用した場合において、閲覧しているサイトがどうしてもうまく表示されないなど不具合が発生する場合は、 諦めてブラウザのプロキシ設定を元に戻した上で閲覧しましょう.
Ver2.0以降ならEasterを使う方がほとんどの場合望ましいです.

目次に戻る

同種の競合ツールと比べた場合の特徴は?

Moaiの提供するローカルプロキシ機能は同種のツールであるProxomitronやPolipoなどと比べ機能はずっと限定されるため、 普段これらを使いこなしている方にとってはローカルプロキシとしてのMoaiは不要と思われます.

しかしPOST変数に関するフィルタリングに関してはProxomitronとPolipoはいずれも直接はサポートしておらず、それを実現するには外部ツールを使う必要があるなどやや煩雑ではあります.
一方でMoaiはフィルタファイルによりこれがダイレクトかつ容易に設定できるため、その点では有利です.

その他、Moaiで実装されている技術面に関する参考事項を以下に列挙しておきます.
  • HTTP CONNECTによるトンネリングによりHTTPSを仲介することができます.
    (仲介といってもHTTPSを復号するのではなく、暗号化されたままのバイト列をそのまま素通りさせるというものになります).
    これにより例えばGoogle検索やYoutube、nico動画などを見ることも可能です.

  • Socket通信における非ブロッキング接続やHTTPパイプライン化の中継をサポートします.
    ブロッキング接続では、複数のタブを開いてWebを閲覧する場合に、最初の接続が終るまで2番目3番目の接続がブロックされ待たされてしまいますが、 非ブロッキング接続によってこの問題を回避できます.

目次に戻る

ご注意

特に重要な内容を伴う情報の通信を確実に行う必要がある場合においてはまず問題ないとは思いますが、念のためローカルプロキシの設定を一時解除するなどしておいた方がよいかもしれません.

このプログラムはポート番号8124においてクライアントからの接続をリッスンします.
(このデフォルトのポート番号はconfig.myfより変更することもできますが、その場合は8124をその番号で読み替えて下さい).
ここで言う「クライアント」とは、あなたのマシンあるいは家庭内LANなど極めて小規模で安全性が明らかなマシンにおいて、あなたの使うWebブラウザのことを示します.
場合によってはWebブラウザではなく、その他のローカルプロキシなどのソフトである場合もあります.

仮に外部ネットワーク(WAN)からの不特定多数からの接続を許可した場合、Moaiは一般的なプロキシサーバのソフトと同様の処理を行います.
しかしこのような用途での使用は基本的に想定されていないため、WANからのIPアドレスの接続要求があった場合それを許可するべきではありません.
プロキシサーバ用の専用ソフトが行っている様々な防衛機構は、Moaiではほとんど搭載されていないためです.

よってあなたがルータの設定を特別弄くっていない限りは通常は心配いらないことではありますが、acceptable_hostANYとして、 さらにルータやファイアウォールの8124ポートを開けているなどWANからの接続を可能としたようなチャレンジャーな使い方をされる予定なら、 Moai側での防御としてaccess_allow_ipsaccess_deny_ips などで不要なIPからの接続要求を弾くなどし、セキュリティ面にも十分配慮して下さい.

目次に戻る

This article was written by:
none image

Mr.Moai

@znk project