使用IPTV應用軟件播放器觀看電視直播,能有清晰穩(wěn)定的直播源無疑是最重要的。家庭寬帶的IPTV有運營商的支持維護,穩(wěn)定性和清晰度都有保證。對普通家庭用戶來說,可以說是最理想的直播源。之前介紹一些IPTV直播源的抓取,也有許多朋友興趣。春節(jié)回鄉(xiāng)探親,家里有某省聯通的IPTV。不同地區(qū)的IPTV都有些差別,也趁這次機會看看其它地方的IPTV有什么區(qū)別。 使用Wireshark通過SSH遠程抓包。環(huán)境準備好后,啟動Wireshark SSH remote capture抓包,開啟IPTV機頂盒,先抓取啟動過程。直至IPTV啟動完成進入直播畫面或者首頁。 在啟動過程中,往往IPTV機頂盒會向后臺請求頻道列表信息。先重點看能不能有頻道列表信息。介紹兩種方法,一是IPTV機頂盒與后臺的交互一般是通過HTTP協議進行,可以重點重一下啟動過程中的HTTP交互。可以想象,先會有認證交互,然后才后會請求信息。 IPTV機頂盒啟動HTTP交互 從上面的HTTP交互過程中可以看出前面的 .../Action=Login, getencrypttoken.jsp, auth.jsp, fucportalauth.jsp, frameset_judger.jsp等請求,從名字上就能猜測是認證授權的交互,從后臺獲取用戶令牌(UserToken)等。往下的內容就該重點關注了,比較幸運,下面的 追蹤HTTP Stream 從追蹤信息中可以找到頻道列表信息,共有171個頻道。 HTTP追蹤信息 一個例子的頻道信息如下。其中ChannelName給出了頻道名稱(CCTV1高清),ChannelURL就是頻道直播地址( jsSetConfig('Channel','ChannelID='ch00000000000000001128',ChannelName='CCTV1高清',UserChannelID='1',ChannelURL='igmp://239.253.248.77:8000',TimeShift='1',ChannelSDP='igmp://239.253.248.77:8000|rtsp://124.132.240.33:554/live/ch12122514263996485740.sdp?playtype=1&boid=001&clienttype=1&time=20240211145822+08&life=172800&ifpricereqsnd=1&vcdnid=001&userid=xxxxxxxxxxxx&mediaid=ch12122514263996485740&ctype=5&TSTVTimeLife=10800&authid=0&UserLiveType=1&stbid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&nodelevel=3&terminalflag=1&profilecode=&AuthInfo=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&bitrate=8&distype=0&usersessionid=xxxxxxxxxx',TimeShiftURL='rtsp://124.132.240.33:554/live/ch12122514263996485740.sdp?playtype=1&boid=001&clienttype=1&time=20240211145822+08&life=172800&ifpricereqsnd=1&vcdnid=001&userid=xxxxxxxxxxxx&mediaid=ch12122514263996485740&ctype=5&TSTVTimeLife=10800&authid=0&UserLiveType=1&stbid=xxxxxxxxxxxxxxxxxxxxxxxxxxx&nodelevel=3&terminalflag=1&profilecode=&AuthInfo=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&bitrate=8&distype=0&usersessionid=xxxxxxxxxxx',ChannelLogURL='',PositionX='1',PositionY='1',BeginTime='0',Interval='-1',Lasting='0',ChannelType='2',ChannelPurchased='',LocalTimeShift='0',UserTeamChannelID='1',TimeShiftLength='10800',telecomcode='00000001000000050000000000000152',FCCEnable='1',FCCFunction='1',ChannelFCCIP='124.132.240.66',ChannelFCCPort='15970''); 使用這個組播地址,利用路由器上的轉單播服務,在電腦上打開單播地址( 把整個頻道信息拷貝出來,在文本編輯器中使用正規(guī)表達式,或者就手工編輯一下,生成m3u或者txt直播列表文件,IPTV的直播源就弄好了。 另一種在Wireshark中查看頻道信息的方法就是使用關鍵字搜索。比如搜索igmp://,如下圖。也能很快定位到對請求頻道信息列表的請求。同方法一追蹤對應的HTTP流,獲取頻道列表信息即可。 WireShark探索 采用搜索方式的關鍵是選擇合適的關鍵字。這里是用的igmp://,但有些地方的IPTV并不是用的igmp組播,需要使用其它合適的關鍵詞。 下面看一下回看,打開一個回看頻道試一下。同時抓一下包。 從前的頻道列表信息中,可以看到回看使用的是rtsp協議。因此在Wireshark抓包中重點看rtsp協議包即可。 回看RTSP協議交互 默認看到,默認使用的是基于認證的rtsp地址,經過幾次跳轉,最后使用的rtsp地址其實并不需要認證,地址格式如下: rtsp://119.180.21.48:1554/iptv/Tvod/iptv/001/001/ch12122514263996485740.rsc?tvdr=20240210043000GMT-20240210055100GMT 使用tvdr參數定義回看時間段,注意使用的是GMT標準時間,不是北京時間。 用電腦播放器打開看一下,回看節(jié)目正確。 可以把有興趣的回看頻道繼續(xù)都抓取出來。編輯m3u播放列表文件把回看信息加進去。下面是一個頻道的例子。 #EXTM3U x-tvg-url='http://epg.:8000/e.xml.gz' catchup-correction='8'#EXTINF:-1 tvg-id='CCTV1' tvg-name='CCTV1' group-title='央視-高清' catchup='default' catchup-source='rtsp://119.180.21.48:1554/iptv/Tvod/iptv/001/001/ch12122514263996485740.rsc?tvdr={utc:YmdHMS}GMT-{utcend:YmdHMS}GMT',CCTV-1 綜合http://192.168.124.1:4022/rtp/239.253.248.77:8000 這樣就可以在支持回看IPTV電視直播應用(比如Kodi)激活回看。更詳細的使用說明可以參考筆者的其它相關文章。 最后再一下點播,現在IPTV也有不少點播節(jié)目。使用IPTV打開一個電影點播,同時抓一下包。 同樣重點看rtsp協議包就可以了。和前面的回看類似,開始使用認證rtstp地址,最后會跳轉到一個不需要認證的rtsp地址上。格式如下: rtsp://119.180.21.45:1554/iptv/vod/iptv/001/001/894/00000050280003431558.mpg 在電腦上打開地址看一下,沒問題,電影可以完整播放。 最后說明一下,在家庭網絡中觀看IPTV回看和點播節(jié)目,需要走IPTV連接路由,因為運營商IPTV的地址大都會屏閉互聯網的訪問。需要在路由器下定義靜態(tài)路由規(guī)則,IPTV地址段通過IPTV連接路由。 路由IPTV路由規(guī)則 涉及內容比較多,感興趣的朋友也可以翻翻筆者其它的相關文章。 |
|
來自: 昵稱32455810 > 《技巧》