久しぶりにニコニコの続き。
最近、自動エンコードの調子が悪く、多くのFLVが取得時に503 Server Unavailableを返しやがる。
その数も段々と増えてきて、最初は10個中1,2個だったのが7個にまで増えた。
動画のURLが分かってるのに、どうしても503エラーばかりでDLできない。
どうしたものかと思ってログインしながらそのURLを開いてみたりして気付いた。FLV取得時にクッキーが必要になったんだ。
今までの仕様だと、動画のURLさえ分かってしまえばダウンローダなどで簡単にDLできた。その証拠っちゅーと変かもしれないが、ニコニコのURLを入力すれば動画本体のリンクを返してくれるWebサービス(スクリプト)もあった。
つまりはこれ対策なのだろうね。FLV本体のURL+FlowPlayerなんかで再生されちゃたまらんもんね。会員でもないのに動画を置いてるサーバのリソースだけ食いまくって。
んで、ログイン状態を示すクッキーを渡してやればいいだけだと思っていたらまだ手の込んだ制限があった。
http://www.nicovideo.jp/watch/sm561422
たとえばこんなURL。
この場合、
http://smile-clb31.nicovideo.jp/smile?v=561422.34896
が動画本体のURLなのだが、ここにアクセスするだけじゃ503を返しよります。
ここで鍵となるのは動画再生履歴。履歴の管理はすべてクッキーで、クッキーに再生した動画のID、日時が記録されてます。
この履歴の追加されるタイミングは、最初に示したURLに接続したとき。そのレスポンスでSet-Cookieが返ってきます。
つまりは、
http://www.nicovideo.jp/watch/sm561422 に接続→再生履歴にsm561422追加→動画本体のURL http://smile-clb31.nicovideo.jp/smile?v=561422.34896 に接続→履歴にsm561422があるかチェック→あればFLVデータを返し、なければ503
これなんですよね。めんどくせぇ。
対応させたいけどちょっとやる気を殺ぐような仕様になっとります。。。