怎么下載加密ts流的視頻

以此網(wǎng)站如下的電影《2012》為例:


image.png

在這個(gè)網(wǎng)站上面,電影2012是以一系列幾秒的ts格式來(lái)播放的,所以沒(méi)辦法直接復(fù)制視頻地址來(lái)下載整部電影捌蚊。看如下截圖:

image.png

并且近弟,每段ts還是加密的缅糟,單獨(dú)下載ts文件是無(wú)法播放的,需要解密藐吮,如下圖:

image.png

那要怎樣才能下載完整的解密后的視頻呢?下面分幾步進(jìn)行說(shuō)明逃贝。

1谣辞、首先,獲取該電影所有的ts列表沐扳,和加密方式及密鑰:

要用chrome瀏覽器打開(kāi)該網(wǎng)址泥从,然后右擊,點(diǎn)擊檢查沪摄,然后重新刷新頁(yè)面躯嫉,然后根據(jù)如下截圖查看:

image.png

點(diǎn)擊“index.m3u8”這個(gè)請(qǐng)求纱烘,然后根據(jù)如下截圖:


image.png

能夠得出該電影的所有ts列表,并且加密方式是“AES-128”祈餐,密鑰是enc.key的請(qǐng)求中擂啥,iv是16字節(jié)長(zhǎng)度的0 。 現(xiàn)查看enc.key請(qǐng)求如下:


image.png

發(fā)現(xiàn)是亂碼(有些網(wǎng)站不是亂碼帆阳,而是字符串)哺壶。亂碼是因?yàn)樵撁荑€是二進(jìn)制的,需要用查看hex工具來(lái)獲取16進(jìn)制的密鑰蜒谤。

先下載該“enc.key”到本地山宾,然后用hex工具查看16進(jìn)制值。mac系統(tǒng)可以用如下查看:

image.png

可以得出該密鑰的16進(jìn)制為:7be5d74d56af87838c3b98f1a2febf8f

2鳍徽、根據(jù)ts列表资锰,用php來(lái)實(shí)現(xiàn)多進(jìn)程快速下載

下載所有ts文件有很多方法,可以手動(dòng)一個(gè)個(gè)下載阶祭,但是因?yàn)樘啾炼牛赃@個(gè)方法會(huì)比較麻煩∨趾玻可以用php腳本來(lái)快速下載接剩。

創(chuàng)建個(gè)1.php文件,用來(lái)下載ts文件萨咳。寫(xiě)入如下內(nèi)容:

<?php

function my_file_get_contents($url) {
    $arrContextOptions = [
        'ssl' => [
            'verify_peer' => false,
            'verify_peer_name' => false,
        ]
    ];
    return file_get_contents($url, false, stream_context_create($arrContextOptions));
}

for ($i=$argv[1]; $i <= $argv[2]; $i++) { 
    echo $i.'...'.PHP_EOL;
    $f = $i.'.ts';
    if (file_exists($f)) {
        continue;
    }
        // 下面的鏈接要改成“index.m3u8”這里面相對(duì)應(yīng)的ts鏈接
    $data = my_file_get_contents('https://hnts.ymuuy.com:65/hls/200/20240110/2077/plist'.$i.'.ts');
    file_put_contents($f, $data);
}

然后懊缺,再創(chuàng)建個(gè)2.php文件,用來(lái)創(chuàng)建下載命令培他。寫(xiě)入如下內(nèi)容:

<?php

// 882要改成改成“index.m3u8”這里面最大數(shù)字的ts鏈接后的數(shù)字
for ($i=1; $i<=882; $i+=20) {
    $tmp = $i+20;
    if ($tmp > 882) {
        $tmp = 882;
    }
    echo 'php 1.php '.$i.' '.$tmp.' &'.PHP_EOL;
}

然后鹃两,運(yùn)行如下命令:


image.png

生成了可以多進(jìn)程下載ts文件的命令行,然后復(fù)制生成的命令舀凛,在終端運(yùn)行如下:


image.png

可以看到俊扳,已經(jīng)在快速下載了,分為了882/20=44個(gè)進(jìn)程來(lái)同時(shí)快速下載猛遍。

可以用如下命令來(lái)查看下載進(jìn)度:

while true
do
du -sh `pwd`; ls |wc -l;sleep 1;
done

顯示如下:

image.png

會(huì)顯示出當(dāng)前下載的大小馋记,和下載的總ts數(shù)。

注意懊烤,全部都下載完后梯醒,要查看下有沒(méi)有大小為0的ts文件,這些是下載失敗的文件腌紧,刪除后茸习,重新運(yùn)行下下載命令即可。

3壁肋、所有文件都下載完后号胚,要開(kāi)始解密并合并了

同樣也是用php腳本來(lái)解密籽慢,保存下面腳本為decrypt.php:

<?php

// 如果“enc.key”的密鑰是二進(jìn)制的話,就用下面這行
$key = hex2bin("7be5d74d56af87838c3b98f1a2febf8f");
// 如果“enc.key”的密鑰是字符串的話猫胁,就用下面這行
// $key = 'Cibz2Dp3bCnzlmVx';

// 原樣復(fù)制“index.m3u8”里面的IV的0x后面的部分
$iv = hex2bin("00000000000000000000000000000000");

$decrypted_file = 'output.ts'; // 最終要保存的文件

// 882改為ts總數(shù)
for ($i=1; $i<=882; $i++) {
    echo $i,'...',PHP_EOL;
    $encrypted_file = $i.'.ts';
    $data = file_get_contents($encrypted_file);
    $decrypted_data = openssl_decrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
    file_put_contents($decrypted_file, $decrypted_data, FILE_APPEND);
}

echo "解密成功箱亿,已保存為:".$decrypted_file;

運(yùn)行如下命令:

image.png

image.png

這樣,就成功的解密并合并為了output.ts文件杜漠,用支持ts的播放器就可以播放此電影了极景。

有問(wèn)題這邊留言探討下~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市驾茴,隨后出現(xiàn)的幾起案子盼樟,更是在濱河造成了極大的恐慌,老刑警劉巖锈至,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晨缴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡峡捡,警方通過(guò)查閱死者的電腦和手機(jī)击碗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)们拙,“玉大人稍途,你說(shuō)我怎么就攤上這事⊙馄牛” “怎么了械拍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)装盯。 經(jīng)常有香客問(wèn)我坷虑,道長(zhǎng),這世上最難降的妖魔是什么埂奈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任迄损,我火速辦了婚禮,結(jié)果婚禮上账磺,老公的妹妹穿的比我還像新娘芹敌。我一直安慰自己,他們只是感情好垮抗,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布氏捞。 她就那樣靜靜地躺著,像睡著了一般借宵。 火紅的嫁衣襯著肌膚如雪幌衣。 梳的紋絲不亂的頭發(fā)上矾削,一...
    開(kāi)封第一講書(shū)人閱讀 52,821評(píng)論 1 314
  • 那天壤玫,我揣著相機(jī)與錄音豁护,去河邊找鬼。 笑死欲间,一個(gè)胖子當(dāng)著我的面吹牛楚里,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播猎贴,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼班缎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了她渴?” 一聲冷哼從身側(cè)響起达址,我...
    開(kāi)封第一講書(shū)人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎趁耗,沒(méi)想到半個(gè)月后沉唠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苛败,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年满葛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罢屈。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嘀韧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缠捌,到底是詐尸還是另有隱情锄贷,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布鄙币,位于F島的核電站肃叶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏十嘿。R本人自食惡果不足惜因惭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绩衷。 院中可真熱鬧蹦魔,春花似錦、人聲如沸咳燕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)招盲。三九已至低缩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咆繁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工讳推, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玩般。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓银觅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親坏为。 傳聞我的和親對(duì)象是個(gè)殘疾皇子究驴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 工作中的一個(gè)項(xiàng)目需要實(shí)現(xiàn)視頻在線播放并防止下載。研究目前主流方案以后匀伏,決定采用HLS生成視頻分片并手動(dòng)加密的方案洒忧。...
    李桐2000閱讀 1,485評(píng)論 0 0
  • 定義 定義 視頻除了常見(jiàn)格式mp4、flv之外够颠,還有m3u8格式跑慕。m3u8是蘋(píng)果公司推出一種視頻播放標(biāo)準(zhǔn),是m3u...
    敏捷Studio閱讀 5,064評(píng)論 0 6
  • 今天把官網(wǎng)流程全部看了一遍按照這樣操作了摧找,看了一下數(shù)據(jù)正在下載核行,明天看一下有沒(méi)有報(bào)錯(cuò)產(chǎn)生,不知道會(huì)有啥問(wèn)題等待解決...
    小桃學(xué)生信閱讀 11,117評(píng)論 3 7
  • 常規(guī)網(wǎng)站視頻存儲(chǔ)方式 這樣播放是不行的蹬耘,因?yàn)槊看尾シ哦际钦w視頻下載下來(lái)芝雪,10G就下載10G,慢而且消耗帶寬 一般...
    強(qiáng)某某閱讀 2,932評(píng)論 0 2
  • 加密算法 對(duì)稱加密算法 加密和解密使用同一個(gè)密鑰 DES综苔、3DES惩系、AES、Blowfish如筛、Twofish堡牡、ID...
    毛利卷卷發(fā)閱讀 1,603評(píng)論 0 4