2009/02/15(Sun)RD-XS41でiEPG登録が中途半端になる
2009/02/16 0:08
が、うちのRD-XS41がどうもiEPGでうまく予約登録できなくなったので、何故かを調べてみた。
現象
ネットdeナビに初期設定されている、東芝のネットdeナビ番組表からiEPG予約を行うと、iEPGボタン[eimg:http://www.backendtv.net/012/gif/iepg.gif]をクリックした後、真っ白で次に進まない。▼ネットdeナビから番組表にアクセス。予約したいiEPGボタンを押す。
▼……と?真っ白で先に進まず。
▼ネットdeナビのトップページに戻ってくると、番組表登録画面が表示されている
という状況。
まぁ、予約ができる事には変わりないのだが、以前はiEPGボタンを押すだけで登録画面に遷移できていたのに何故だろう?と思って色々調べてみた。
原因
どうやら、iEPGボタンを押した先に帰ってくるiEPG情報をRD-XS41がパースした後、登録画面に飛ぶところで問題発生。真っ白な部分のソースを見てみると、本来以下のような出力されるところが途中で切れていた。
<html> <head> <meta http-equiv="content-type" content="text/html;charset=Shift_JIS"> </head> <body> <script language="JavaScript"> <!-- allcookie = document.cookie + ';' start1 = allcookie.indexOf('iepg_open_win'); iepg_open_win = '' if(start1 != -1){ target = allcookie.substring(start1, allcookie.length); start2 = target.indexOf('=', 0) + 1; end = target.indexOf(';', start2); iepg_open_win = unescape(target.substring(start2, end)); } if(iepg_open_win == 'ON'){ window.open("/program/4/iproginfo1.htm","","location=0,menu=0,tool=0,directories=0,scrollbars=1,toolbar=0,status=0,menubar=0,resizable=1,width=820,height=500"); setTimeout('history.back();',500); }else{ top.location = "/index.htm"; } //--> </script> <a href = "/program/4/iproginfo1.htm" target="_blank">確認画面にジャンプします。ジャンプしないときはここをクリックしてください。</a> </body> </html>切れていたのはscriptタグの内部だったので、JavaScriptが正しく実行されず、確認画面に推移しないようだ。
こうなる原因を追究すべく、ヘッダーを追ってみると、Content-Lengthが100とか200とか、明らかにHTMLソースより短い。
これは、本来iEPG情報を流しているwww.backendtv.net/iepg.php…というサイトの情報をRD-XS41が受信し、それを書き換えて上記のHTMLを出力する*1過程で、Content-Lengthを書き換え忘れたのが原因のようだ。以前はContent-Lengthを流していなかったからちゃんと動作していたのだろうか?
この件に関しての修正は公開されていない模様。まぁもう地デジのご時勢にファームアップデートしろといったところで対応するはずも無いので、クライアント側で何とかならないか考えてみる。
対策
超万能なローカルプロキシツール「Proxomitron」を使ってフィルタを書いてみた。安直に、Content-Lengthを落としてやるだけでうまく動作した。URL項は各自のホスト名に合わせて調整してほしい。
[HTTP headers] In = TRUE Out = FALSE Key = "Content-Length: RD-XS41" URL = "rd-xs41" Match = "*"これで難なく動作するようになった。ほっ。
別のiEPGサイトを使ってもいいんだけど、上記のようにiEPG登録をさせるとなるとRD-XS41経由でアクセスせねばならず、東芝のサイトみたいに軽く開けるサイトがなかなか無いからなぁ。これで運用。