2007年8月4日土曜日

ニコニコ動画のメッセージサーバ系フィルタが効かなくなっていた問題に暫定対応

下記フィルタを適用すれば、今までのフィルタがそのまま動作するようになります。

[HTTP headers]
In = FALSE
Out = TRUE
Key = "Accept-encoding: Kill Nicovideo encoding (out) [2007/08/02] test1"
URL = "msg[0-9]+.nicovideo.jp/api/(^?)"
Match = "*"

ニコニコ動画のメッセージサーバはgzip圧縮したデータを送信するようになりましたが、Proxomitronはgzipを解凍せずに処理しようとします。
上のフィルタは、Webブラウザの通信リクエスト時に「gzip圧縮に対応していません」というヘッダを送信し、gzip圧縮していないデータを受け取ることで既存のフィルタを有効にします。
これを行うと、メッセージサーバのgzip圧縮(負荷対策)を無効化してしまうので、できればやりたくないのですが、他によい代替手段を思いつかないので。

Proxomitronはgzipに対応していないわけではなく、text/html, text/css などの「WebページフィルタでマッチするContent/Type」ではgzipを解凍して処理します。
ですので、Content/Typeを変更すれば、gzip圧縮したままでフィルタが効くようになりますが、汎用フィルタが誤爆する可能性を考えると、難しいものがあります。

Proxomitron等に関するWiki によると、

Content-Encoding: gzip で、Content-Type: が text/html、multipart/x-mixed-replace、text/css、text/javascript、 application/x-javascript、text/vbscript のどれか($TYPE(oth) 以外)の場合、Webページフィルタでは解凍された物が処理対象になる

とあり、multipart/x-mixed-replace というあまりお目にかかることのなさそうなヘッダもgzipの解凍処理対象となるようですが、multipart/x-mixed-replace自体がよくわからないヘッダだったので使用しませんでした。

ラベル: ,

0 件のコメント:

コメントを投稿

登録 コメントの投稿 [Atom]

この投稿へのリンク:

リンクを作成

<< ホーム