僅限于學習交流,請勿用于非法用途,否則產(chǎn)生的后果與本人無關(guān)!
還有,年輕人請培養(yǎng)高尚的情操
周末晚上,看到群里這么一條消息
?心想這他喵的什么嬌貴視頻,還值50塊錢1條,所以就好奇點擊了鏈接看了下
好家伙,差點流鼻血了
?這少兒不宜的畫面,,,,,,
后來發(fā)布這個信息的兄弟馬上就被群主給踢了,給群主點贊,哈哈哈哈
隨便點點發(fā)現(xiàn)基本上都是會員才能觀看,比較好奇,想著看能不能找找什么bug之類的,就有了下面的故事
首先是要登錄,這里就隨便注冊了一個賬號(這里注冊賬號是需要用到郵箱,但是他沒有進行驗證,因此隨便輸入個郵箱便完成了注冊)
發(fā)現(xiàn)基本上都是要充錢才能觀看:
點擊試看也只有大約30秒左右的時間:
然后在點擊試看的時候抓包發(fā)現(xiàn)有趣的參數(shù):
?這里有個segments,據(jù)我所知,中文意思是片段,那就把它改空,然后發(fā)過去
我去,就很離譜。。。。。
好的,50塊錢1條的視頻就免費搞定了。
我以為我要收工了,突然發(fā)現(xiàn),這是沒有下載鏈接的,想到最近學習的爬蟲,就興趣來了研究研究是如何下載
百度一下發(fā)現(xiàn)這種是動態(tài)加載ts文件來顯示,請求完不停的加載ts片段來執(zhí)行播放動作
?因此重新編輯請求重發(fā),修改segments參數(shù)
?可以看到響應的文件大小不一樣了,已經(jīng)加載出了全部的ts 片段地址
但是下載單個ts文件后發(fā)現(xiàn)內(nèi)容被加密了,無法直接播放,可以看出這里是加密了的,但是這里的key的地址卻暴露了
?接著就是批量下載并解密,然后將所有的解密后ts文件進行合并
# 作者:juju# 日期:2021/9/27 18:57import osimport requestsfrom Cryptodome.Cipher import AESdef get_ts_key(url): # 獲取ts片段和key headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "none", "Sec-Fetch-User": "?1", } response = requests.get(url=url, headers=headers) return response.contentif __name__ == "__main__": url = "*********************************" # 解析獲取的m3u8文件 with open(r"C:/Users/juju/Desktop/result.txt", "rb+") as f: txt = f.readlines() f.close() os.chdir(r"C:/Users/juju/Desktop/new") urls = [] key = "" # 下載key并初始化解密 for line in txt: # print(type(line)) if "URI" in line.decode(): key = line.decode().split(",")[1].split(""")[1] key = get_ts_key(url+key) cryptor = AES.new(key=key, mode=AES.MODE_CBC) break # 提取全部ts鏈接 for line in txt: if line.decode()[0] == "/": urls.append(line.decode().replace("/r/n", "")) # 將全部提取的ts鏈接寫到本地 for i, line in enumerate(urls[:40]): with open(str(i + 1) + ".ts", "wb") as file: file.write(cryptor.decrypt(get_ts_key(url+line))) # 將解密后的視頻寫入文件 print("正在寫入第{}個文件".format(i + 1)) # 將全部ts片段寫入本地mp4文件 target = open(r"C:/Users/juju/Desktop/new.mp4", "ab+") # 依次將數(shù)據(jù)寫入目標文件 for i, temp in enumerate(os.listdir(r"C:/Users/juju/Desktop/new")): print("正在合并第{}個文件".format(i + 1)) temp_file = open(str(i+1) + ".ts", "rb+") target.write(temp_file.read()) temp_file.close() target.close()
因為只是測試代碼,所以就限定了部分片段
?
?
可以看到全部已經(jīng)合成完畢
結(jié)束
本次記錄僅用來探討學習相關(guān)技術(shù),請勿從事其他非法活動。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/121546.html
摘要:如何選擇穩(wěn)定的和實用的空間是每個消費者心中最滿意產(chǎn)品。三網(wǎng)頁制作上面兩步做好之后最重要的就是如何規(guī)劃好自己的網(wǎng)站做個好的網(wǎng)站。 現(xiàn)在制作一個網(wǎng)站已經(jīng)越來越容易了,只要知道清晰的流程之后都是可以很快的建好一個企業(yè)或者個人網(wǎng)站的!免費的建站程序很多,下面聽哥給你亮出來,建站一般來說分主要有這四步:申請域名、申請?zhí)摂M主機、制作網(wǎng)頁,網(wǎng)站宣傳推廣! 一;域名注冊 選個好的域名是一個成功網(wǎng)站的開...
摘要:租用海外服務器要多少錢關(guān)鍵在于你的網(wǎng)站類型像普遍的個人網(wǎng)站或是僅做展示型的企業(yè)網(wǎng)站,需要的配置不需要太高,早期可以使用海外云服務器,年下來可能也就一兩千,再簡單些的,幾百元就能搞定。 近些年,互聯(lián)網(wǎng)獲客成本也越來越高,再加上新冠疫情對線下實體行業(yè)的嚴厲打擊,線上獲客成本中的海外服務器成本更加引人注意。影響到海外服務器租用價格的基本原因便是配置了,隨后便是海外服務...
摘要:與類型庫相比,設(shè)計模式是一個更為普遍的概念。是在年,由建筑設(shè)計大師亞力山大建筑的永恒之道描述模式是一條由三部分組成的通過規(guī)則它表示了一個特定環(huán)境一類問題和一個解決方案之間的關(guān)系。設(shè)計模式是在這方面開始探索的一塊里程碑。 設(shè)計模式并非類庫 為了方便地編寫java程序,我們會使用類庫,但設(shè)計模式不是類庫。 與類型庫相比,設(shè)計模式是一個更為普遍的概念。類庫是由程序組合...
摘要:為啥你天天刷抖音一點都不煩,因為你覺得視頻好看你有興趣啊。比如我們說你玩是不是要開始搭建一個自己的網(wǎng)站,是不是可以自己寫一個小的腳本來自動發(fā)消息給你的女朋友等等,通過這樣的小例子來慢慢的培養(yǎng)自己的學習的興趣。學習,切勿貪快貪多。 大家好,我是菜鳥哥! 周末啦,跟大家聊一下我們粉絲團的情況...
摘要:不過最大的好處就是用在流體布局上,可以通過計算得到元素的寬度。于是,就是瀏覽器滾動條的寬度大小如果有,如果沒有滾動條則是左右都有一個滾動條寬度或都是被占用,主體內(nèi)容就可以永遠居中瀏覽器啦,從而沒有任何跳動參考的使用 什么是calc()? calc()從字面我們可以把他理解為一個函數(shù)function。其實calc是英文單詞calculate(計算)的縮寫,是css3的一個新增的功能,用來...
閱讀 2121·2023-04-26 02:19
閱讀 1913·2021-11-19 09:40
閱讀 1704·2021-09-29 09:35
閱讀 3574·2021-09-29 09:34
閱讀 4297·2021-09-07 10:16
閱讀 5529·2021-08-11 11:14
閱讀 3578·2019-08-30 15:54
閱讀 1629·2019-08-30 15:53