スポンサーサイト

■ スポンサー広告 Posted by ひぐま (Higmmer) on -------- at --:--:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

NIS2006とFirefox/bbs2chreaderで起こる問題を回避する方法

■ ネット Posted by ひぐま (Higmmer) on 2006-02-08 at 21:15:58

先日Norton Internet Security 2006(以下NIS2006)を苦労の末インストールして色々といじり倒した結果、これまで目立った不具合もなく順調に使えていたのですが、ここにきて新たな問題に遭遇しました。Firefox/bbs2chreader(*)と併用した場合にスレの取得に失敗することがあるのです。色々と調べたり試行錯誤したりした結果なんとか対処法が見つかりましたので、その原因と対策についてまとめておきます。

(*) bbs2chreaderはFirefox上で2chブラウザの機能を実現する便利な拡張です。
(参考) bbs2chreader 0.2.10以降では以下と同等の修正が組み込まれましたので、Firefox 1.5.0以上をお使いの方は公式サイトを参考にして最新版をインストールすることをお奨めします。但し最新版はFirefox 1.0系には対応していませんので、1.0系をお使いの場合は手動で以下の改造を行う必要があります。その場合、書き込みを行うには更にこちらの改造も行う必要があります(2ちゃんねる側の仕様変更が行われたため)。[6/14追記]

問題:
 NIS2006を入れるとFirefox/bbs2chreaderでスレの読み込みが「STATUS: 416」で失敗する。但し新規スレの場合やログを削除した場合は正常に読める

原因:
 NIS2006がHTTPリクエストに含まれるAccept-Encodingを勝手に書き換えることにより、datファイルの差分取得が失敗するため。

原因の詳細:
 bbs2chreaderではdatファイルの差分取得(更新部分だけを取得する機能)を実装している。以下はLive HTTP HeadersでキャプチャしたHTTPリクエストである(抜粋)。

Accept-Encoding: identity If-Modified-Since: Mon, 06 Feb 2006 16:02:12 GMT Range: bytes=29537-

つまりRangeフィールドに既に取得しているdatファイルのサイズを指定することで、新たに追加された部分だけを取得するよう要求している。ここでAccept-Encodingが"identity"となっているのは生の(非圧縮の)データを取得するためであるが、NIS2006が余計なお節介によりこれを"gzip, deflate"に書き換えてしまうため、サーバーに対して圧縮ファイルを要求することになる。これによりファイルサイズの整合性が取れなくなり以下のようなエラーが返されてしまう。

HTTP/1.x 416 Requested Range Not Satisfiable Vary: Accept-Encoding ----------------: ----

上記よりリクエストしたRange値が不正であること、Accept-Encoding指定によって異なるコンテンツ(この場合圧縮・非圧縮の2種類を指すと思われる)が返される可能性があることを示している。尚、上記の"---"の行は文字数から考えて"Content-Encoding: gzip"がNISにより塗り潰されたものであろう(何考えてるんだか)。

対策:

  • NISをオフにする。但しプライバシー制御をオフにしただけではダメで、Internet Securityの動作を全部オフにする必要がある(AntiVirusやAntiSpamは使用可)。本末転倒。
  • Internet Securityのオプション「HTTPポートリスト」からFirefoxで使用するポート(例えば80)を削除する。弊害としてプライバシー制御や広告ブロックなどのHTTPフィルタも無効となる(ファイアウォールとしては機能する)。できれば避けたい。
  • bbs2chreaderを以下のように改造する。副作用は今のところ確認されず。(゜Д゜)ウマー

対策の詳細:
 以下の改造を行うにはjarファイルの圧縮・展開を行えるツール(*)又はJ2SE Development Kit(JDK)が必要です。以下ではJDKに含まれるjarというコマンドラインツールを使用する例を示します。作業を行う前にはFirefoxを終了しておいて下さい。

(*) jarファイルは基本的にzipファイルと同一フォーマットですので、zipファイルを扱えるツールであれば同様に扱えるはずです(ダメな場合は一時的に拡張子をzipに変えてみて下さい)。但しbbs2chreader.jarの各ファイルには読み取り専用属性が設定されているため、編集する前に解除する必要があります。[2/12追記]

(1) Firefoxのプロファイルが格納されているフォルダから「bbs2chreader.jar」というファイルを探し、念のため名前を変えてコピーしておく。

(2) ファイルが見つかったフォルダ上でコマンドプロンプトを開き、以下のように入力してアーカイブに含まれる"content/bbs2chreader/httprequest.js"というファイルを取り出す。

jar xvf bbs2chreader.jar content/bbs2chreader/httprequest.js

(3) 取り出したファイルの以下の行を次のように書き換える。

this._channel.setRequestHeader("Accept-Encoding", "identity", false);    ↓ this._channel.setRequestHeader("Accept-Encoding", "", false);

(4) 変更したファイルを元のアーカイブに戻す。

jar uvf bbs2chreader.jar content/bbs2chreader/httprequest.js

上記の後、Firefoxを起動してURL欄に"chrome://bbs2chreader/content/httprequest.js"と入力すると今修正したファイルの内容が表示されるはずですので念のため確認しておくと良いでしょう。後は普通にbbs2chreaderを使うだけで正常にスレの閲覧ができるようになると思います。但し私が普段よく見る板では今のところ問題なく動作していますが、サーバーによってはうまくいかない場合もあるかも知れません。本当はNISのお節介としかいえない動作を止めさせるのが一番なんですが……本当に困ったもんです。

トラックバック

この記事について書く(FC2ブログユーザー)
※言及リンクの無いトラックバックは無効です

PageTop▲

コメント

PageTop▲

コメントの投稿

 
 
 
 
 
 (後で編集・削除したいなら必須)
 
  

PageTop▲

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。