3/6の17:50から、JBAアビスパ退避のRSS収集スクリプトでFC2のRSSフィードを読めなくなってしまってました。
とりあえず動くようになってますよの報告と、顛末を簡単にまとめときます。
JBAアビスパ退避はcronつかって定期的に登録したサイトのRSSフィードを集めて回りますが、3/6以降、FC2の大半のサイトでフィードを解析できなくなってしまってました。大半のサイト、というのは一部のサイトはなぜか取得・解析できてたんです。
もっとよくわからんのは、似てるけど微妙に違う環境だと取得できてたりする。違うのはOSが64bitであること、stableにした日付、ハードウエア、perlのバージョン、一部のモジュールのバージョン。
アタシゃweb屋ではないので、ひたすら困惑するだけだったんですがどういうときにエラるかのかはようやくわかりました。
HTTPヘッダを見てみたら、
エラるパターン
Vary: Host,User-Agent\r\n
エラらないパターン
Vary: Host,Accept-Encoding,User-Agent\r\n
で、前者だとどうも受信したデータを解析できないみたいで、wiresharkも [Error: Decompression failed]などとお困りの様子です。
どういうときにこういうヘッダが返ってくるのかはよくわかってません。
実は64ビットの環境でも同じようにAccept-Encodingって値が入ってないヘッダを食らってるんですが、wiresharkに食わせると解析できないパケットなんですが、どこかの誰かが強引に良きにはからっているようで、最終的には解析できています。
これもまたよくわからんのですがfirefoxでヘッダ解析してみたら、Accept-Encodingが入ってるんですよねえ・・・(で、ちゃんと表示される)
また、少数ある「解析できるサイト」っていうのが困ったことに日によって違ってまして・・・最終的に今日の段階で解析できてるサイトのURI記法がhttp://feeds.fc2.com/fc2/xml?host=hogehogeってので落ち着いてたので、とりあえずfc2は全部その記法にして、暫定対処としています。
思わずfc2な人にちゃんとヘッダつけえ!というメールを出しそうになってしまいました。
誰かwebのスーパーハカーな方、一体なんなのか教えて下さい。