Rarely Asked Questions / あまりない(と思われる)質問と、その回答

フィルタを自動更新することはできますか? Edit

残念ながら出来ません。

Proxomitron 使用の問題点、危険性、注意点などは? Edit

Proxomitron 使用の問題点、危険性、注意点など教えていただきたい

サイトを書き換えることができるということはクラッキングツールですか? Edit

違います。
あくまで自分のPCに保存するキャッシュを書き換えているだけなので、相手のサーバーのファイルを書き換えてしまう(=Webサイト改ざん)ことはありません。

但し、不正アクセスに使うことも可能ではあります。
しかしそれは、それ専用のソフトやスクリプト、自作ソフトなどでも可能なことです。ブラウザの操作だけで出来る場合もあります。
Proxomitronが不正アクセスをしやすいように作られているなどということは一切ありません。(POSTデータの改変すら単体ではできません)

Proxomitronを使用することによって、個人情報を流出させたりする可能性はありますか? Edit

Proxomitron本体自体に問題はありませんが、フィルタや、それと連動して動くJavaScriptなどに問題(欠陥)や悪意があった場合、ありえます。(フィルタ=アドオン、プラグインと考えてください)
これらのソースは誰にでも読めるので、自分で安全か確認するか、信用できないフィルタは使用しない方が良いと思われます。

どのような情報の流出があり得るか Edit

まず、ファイル共有ソフトやウイルスとは違うので、PC内のファイルがすべて公開されてしまうなどということは、まずありえません。
(怪しいソフトと連動させまくれば可能ですが… そこまでいくとProxomitronはもう関係ありません)

フィルタに問題(欠陥)があった場合
  1. 本来はサイトAにしか送られない筈の Cookie が他のサイトにも送信されてしまう。
    (Cookie にはサイトAにログインするための情報などが保存されていることがあります。
     悪用されると、第三者にアカウントを勝手に利用されてしまいます。
     しかし、通常はCookieに保存されたパスワードは暗号化されていたりします。
     また、Cookie内の暗号化されたパスワードなどとIPが一致しないとログイン出来なかったりします。)
  2. 本来はサイトAでしか自動入力・送信されないはずのIDとパスワードがほかのサイトでも自動入力・送信されてしまう。
    どのサイト用のID・パスワードなのか判らない限り悪用できませんが、注意が必要です。
フィルタに悪意があった場合
  1. $RDIR と JavaScript などを使うことで、本来ajaxでは通信が許されていない外部サイトへのPOSTなどが可能になります。
    これを利用して、ブラウジング中のキー入力などを読み取ることが可能です。安全なサイトを見ているかどうかは関係ありません。
    1. ($RDIR を使わなくても、FORMタグを使えば外部サイトへのPOSTが可能)
  2. $RDIR を使えば、ブラウザのアドレスバーを変えずに別のサイトにアクセスすることが可能なため、偽サイトに繋がれ、ログイン情報などを盗まれる可能性があります。
    対策としては、ログイン時には必ずSSL(https)を使用し、SSL通信ではProxomitronを使わない ということが考えられます。

Listがメモ帳で開かれ、*.txtに関連付けたプログラムで開かれない Edit

まず、Proxomitronは規定のアクションかどうかを見ておらず、常にアクション名がopenのもので開くので、openアクションの値を書き換える必要がある
(これを利用すれば、editなどを規定にして、規定をexplorer用、openをProxomitron用と分けることも可能)

WindowsVista以降は関連付けの高度な編集機能がなくなっているので、FileTypesManで値を弄ると楽だが、(既定)の値の種類がREG_EXPAND_SZからREG_SZになってしまったことがあったので注意


次に、関連付けには優先順位があり、assoc/ftypeで設定した値よりも優先度が高い値があるので、反映されない場合、優先順位が高いものの値を弄る必要がある。(多分FileTypesManでは一番優先度が高いものを弄れる)
Windowsの関連付けを決めるレジストリの優先順位とassoc ftypeが効かない問題について」から引用

拡張子の関連付け(***は拡張子)
1. HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.***\UserChoiceのProgid
2. HKCU\Software\Classes\.***の(既定)
3. HKLM\SOFTWARE\Classes\.***の(既定) ※assocで変わる値
4. HKCR\.***\OpenWithProgIdsのアルファベット順で一番上のキー

例えばサクラエディタで.txtの関連付けを変更した場合、2が「SakuraEditor_txt」となるため、「assoc .txt」の戻り値を引数に入れた「ftype txtfile=プログラムパス&引数」を変更しても反映されないプログラムがあり(Proxomitronもそう)、「ftype SakuraEditor_txt=プログラムパス&引数」を書き換える必要がある。

GET、POST、HEAD 等の区別は可能? Edit

残念ながら不可能です

POSTデータの書き換えは可能? Edit

Proxomitron 単体では不可能です。POSTデータを書き換える参照。

POST 元のページのフォーム(<form>、<input> タグなど)を書き換える方法もあります。

Naoko って誰?何? Edit

バージョン情報に表示される Naoko というのは、少年ナイフのギター・ボーカルの山野直子氏です。
Proxomitron作者がファンだったため、バージョン情報に表示されています。

バイソン愛好機関 って何? Edit

GNUのこと?

他のProxyソフトウェア(TorやPolipo、Privoxyなど)との併用に関して Edit

Torとの併用に関して Edit

質問箱/8

TorはSocksProxyで、ProxomitronはHTTP/HTTPS Proxyで、Proxomitronから直接Torを使うことは出来ないので、
Tor>FreeCapWideCapなど>Proxomitronとするか、Tor>PrivoxyPolipoなど>Proxomitronのようにする必要がある。

自動構成スクリプト (Proxy.pac) に関して Edit

// Dropboxなどにアップロードして、各ブラウザから参照すると便利
function FindProxyForURL(url, host) {
/* 使用できる関数
 * http://technet.microsoft.com/ja-jp/library/cc817412.aspx
 * isPlainHostName(host)  hostに「.」を含まない場合trueになる
 * dnsDomainLevels(host)  ホスト名に含まれる「.」の数を返す
 * shExpMatch(host, shexp)  hostがshexp(「*.com」などのシェル表現パターン)に一致するか
 * dnsDomainIs(host, ".company.com")
 * localHostOrDomainIs(host, "www.company.com")  ローカルドメインのURLにのみ実行される(よくわからない…)
 * isResolvable(host)  DNSで名前解決できるか
 * dnsResolve(host)  DNSで名前解決し、ホスト名を数値IPアドレスに変換
 * isInNet(host, "192.168.0.0", "255.255.0.0")  DNS照会の結果が指定IP&サブネットマスクに一致するか
 * myIpAddress(host)  ブラウザが動作しているホストのIPアドレスを返す(整数とドットの形式)
 * weekdayRange("WED", "SAT", "GMT")  指定曜日に一致するか
 */
	if (!/^https?:/i.test(url)
	|| isInNet(host, "10.0.0.0", "255.0.0.0")
	|| isInNet(host, "127.0.0.0", "255.0.0.0")
	|| isInNet(host, "169.254.0.0", "255.255.0.0")
	|| isInNet(host, "192.168.0.0", "255.255.0.0")
	)
		return "DIRECT";

	// Proxomitron
	if (/^local\.ptron$/i.test(host)
	|| /^http:\/\/(?:[^\/]+\.|)(?:smilevideo|nicovideo|photozou)\.jp\//i.test(url)
	)
		return "PROXY 127.0.0.1:8080";

	return "DIRECT";
}

戻り値はセミコロンで区切り複数Proxyを指定することも可能(左から順番に接続を試す)

フィルタ作成に関して Edit

ファイル先頭にマッチさせる Edit

ただし置換、挿入した文字がIEのエンコード自動判別を誤認させて文字化けを起こしてしまうことがあるので注意 (参考)。

ファイル末尾にマッチさせる Edit

「banner」にはマッチさせたいけど、「nobanner」はマッチさせたくない Edit

戻り読みは出来ないので、下記のようにする。

[Patterns]
Multi = TRUE
Match = "$STOP()(?|)\0banner"
Replace = "\0-"

Multi = TRUE
Match = "(^no)(??)\0banner"
Replace = "\0-"

最初のフィルタでファイル先頭と、ファイル先頭から1バイト目に対応。
2つめのフィルタでファイル先頭から2バイト目以降に対応。

無駄なマッチが出るので、Multi=TRUE は必須かも(無限ループ注意)。

$FILTER(true) を使用しても、Web ページフィルタが有効にならない Edit

各バージョンの違い#v4-5june6-bug

UTF-7 をフィルタリングしたい Edit

完全決めうちのフィルタリングなら出来る場合もあるが、柔軟なフィルタリングは難しい。フィルタリングできないと思った方がいいかも。

理由

  1. UTF-7 は 0-9A-Za-z*./_- など以外の文字を、Base64(0-9A–Za–z+/= のみで構成される)でエンコードしている
    1. 通常の 0-9A-Za-z+/= と、Base64で変換された文字を区別するには、エスケープシーケンス(切り替えフラグ)を探す必要がある(+から非ASCII、-からASCII)
    2. Base64デコード機能が Proxomitron には無いので、Base64エンコードされた部分のフィルタリングが難しい
      1. 例えば、「<body>」は UTF-7 だと「+ADw-body+AD4-」となるが、
        「><body>」は「+AD4APA-body+AD4-」となる。

打開策

  1. 文字コード変換Proxy を咬まして、Proxomitron には UTF-7 以外に変換した文字列を処理させる
  2. Proxomitron ではなく、JavaScript やグリモンなどで処理させる

複製名前変更