hinet hichannel 取得 index.m3u8 播放路徑

實際運作結果

先看一下可播放的實際案例網址

解讀

  1. ra-000073 是頻道的代號名稱,ra-000073 是 NEWS98 ,KissRadio 是 ra-000042
  2. index.m3u8 表示使用 HTTP HLS 串流技術
  3. expire1 & expire2 表示可以執行播放的時間區間,你拿一個早上八點到下午四點的播放網址在晚上執行是不能播放的
  4. token1 & token2 和 expire 是相呼應的,意思就是如果 expire 的數值為 1000 算出 token 是 ABC999 ,那一樣的執行環境算出的 token 就會相同

參考資料

寫 PHP 的人轉到 python 會遇到的問題有

  1. 結束不用加分號
  2. \t 和空白是坑爹的不一樣
  3. 縮行不是爽縮就可以縮
  4. 相同功能的 function 預設的輸出和 PHP 不同

 

好好研究一下網頁是如何運作,追到了 radio_proxy.swf 這個檔案,網頁的播放最後就是由這個 Flash 檔案生成播放路徑,這時又要尋找「反組譯」黑科技

可惜的是,閃客 Sothink SWF Decompile 解不開,大概也有反制黑科技的技術吧

還好這種東西有線上版可以用!?…

不知道當時哪來的腦洞想到上網找 online 版,不過結果是美好的,至少是解開有看到類似 ActionScript 的輸出了。

下面是有關產生 token 的片段程式

基本上和 python 架構是一樣的,只是反組譯有少東西,最關鍵的 KEYS 沒有解開,只好回頭繼續研究 python

後來證實 python 有關 token 的演算法是正確的

Token 演算法

token1 字串組成

token2 字串組成

token1 範例,token2 只要將最後的 1 改成 2 即可

然後拿去 md5() 再跑 base64_encode() 就可以得到 Token 了

index.m3u8 內容

PHP 程式碼

 

2018-06-29 更新

最後 m3u8 產出時, index.m3u8 檔案名稱必須改成 ra-hls/hich-ra000073-audio_track=128000.m3u8 這種格式的檔案名稱

10 thoughts on “hinet hichannel 取得 index.m3u8 播放路徑

  1. 您好,

    請問path + expire timestamp + IP + Key + 1/2, 其中的key value是怎麼來的?constant?
    後面1/2又是什麼意思?在範例中的字串內容, 最後的#t1好像又跟1/2沒什麼關聯.

    謝謝

  2. Key 必須從 Flash swf 反組譯得到,hoyo 沒得到,因為反不出來 …

    那個 1/2 是當初省略亂寫的,代表 token1 和 token2 ,已經把文件修改成更容易閱讀了。

  3. 你好
    想請問一下
    有辦法追到前幾天的紀錄
    把之前的內容載下來嗎

  4. 除非有提供相關的服務或選項,要不然是不可能的。

    真的喜歡該節目不妨直接和節目組聯絡,說不定會有額外驚喜呦… (瞎唬爛的)

  5. 那個 KEYS “據說”是某 standard 中的 test vector key
    hichannel 搞這一大圈,是想要留大家在他網頁上賺廣告費嗎 XDD

  6. 請問這個方法還有用嗎?我 run 了但是抓出來的 url 都是顯示 403 forbidden.

  7. 有用,不過最後的 m3u8 檔案名稱有更改,內容已經更新

    改天再寫一個 API 直接提供收聽網址好了

  8. 謝謝大大分享,確實可以用.
    另外 mplayer 記得要安裝.

發表迴響

你的電子郵件位址並不會被公開。