はじめに
radikoのタイムフリーとエリアフリーを大変便利に使っているのですが、
過去1週間分まで遡れるのはいいとして、
「聴取を開始してから24時間以内であれば、合計3時間まで」という制限があります。
意外と24時間経過してしまったりして、全部聞けないこともあるので、(Cookie削除すれば、ゲフンゲフン…)
どうにかして短時間かつ高品質でダウンロードしてみます。
まず、タイムフリーで再生するまでの流れについて、
Chromeのデベロッパーツールや、パケットキャプチャーで解析、また先人の知恵を借りると、
大雑把に以下の3ステップあります。
(エリアフリーの場合は、プレミアム会員として、1の前にログインしてCookieを取得して、以降取得したCookieを使って各Stepを進めます)
- https://radiko.jp/v2/api/auth1 にGETリクエストしてトークンを取得
- https://radiko.jp/v2/api/auth2 にGETリクエストしてトークンを認証
- 2で認証したトークンを使って番組を再生
目的達成のためには、3で再生しているデータをブッコ抜けばいいわけです。
Step1.トークン取得
https://radiko.jp/v2/api/auth1 に以下のHeaderでGETします。
※x-radiko-app-version/device/userは何でもOKぽいです
X-Radiko-App: pc_html5 X-Radiko-App-Version: 0.0.1 X-Radiko-User: dummy_user X-Radiko-Device: pc
curlだとこんな感じです
curl -s -c cookie.txt -H 'X-Radiko-App: pc_html5' -H 'X-Radiko-App-Version: 0.0.1' -H 'X-Radiko-User: dummy_user' -H 'X-Radiko-Device: pc' -I -L https://radiko.jp/v2/api/auth1
すると、以下のようなレスポンスヘッダが帰ってきます。
HTTP/1.1 200 OK Server: nginx Date: Tue, 19 Jun 2018 13:11:31 GMT Content-Type: text/plain Connection: keep-alive X-Radiko-AppType: pc X-Radiko-AppType2: pc X-Radiko-AuthToken: Zv-wZAx3hMCFEQ7dz-okdA X-Radiko-AuthWait: 0 X-Radiko-Delay: 15 X-Radiko-KeyLength: 16 X-Radiko-KeyOffset: 22 Access-Control-Expose-Headers: X-Radiko-AuthToken, X-Radiko-Partialkey, X-Radiko-AppType, X-Radiko-AuthWait, X-Radiko-Delay, X-Radiko-KeyLength, X-Radiko-KeyOffset Access-Control-Allow-Credentials: true
次に必要になるのは、
X-Radiko-AuthToken、X-Radiko-KeyLength、X-Radiko-KeyOffsetの3つです。
次のステップで、この3つを使って、トークンを認証します。