展完整指南:把“不能下載“的網(wǎng)頁(yè)視頻變成可保存的文件)
貓抓Cat-Catch瀏覽器資源嗅探擴(kuò)展完整指南把不能下載的網(wǎng)頁(yè)視頻變成可保存的文件【免費(fèi)下載鏈接】cat-catch貓抓 瀏覽器資源嗅探擴(kuò)展 / cat-catch Browser Resource Sniffing Extension項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch貓抓Cat-Catch是一款開源的瀏覽器資源嗅探擴(kuò)展解決的核心痛點(diǎn)是網(wǎng)頁(yè)上的視頻明明在播放右鍵菜單和下載按鈕卻被禁用用戶拿不到文件。它不去破解頁(yè)面而是把瀏覽器網(wǎng)絡(luò)層發(fā)生的每一次請(qǐng)求都記錄下來(lái)把媒體資源從復(fù)雜的網(wǎng)頁(yè)加載流程中直接撈出來(lái)。雙引擎嗅探網(wǎng)絡(luò)監(jiān)聽(tīng)與MediaSource代理第一個(gè)引擎是網(wǎng)絡(luò)請(qǐng)求攔截。白話定義擴(kuò)展掛鉤瀏覽器的請(qǐng)求管道頁(yè)面每發(fā)出一個(gè) HTTP 請(qǐng)求都會(huì)經(jīng)過(guò)一次檢查URL 或響應(yīng)頭里的Content-Type命中媒體規(guī)則時(shí)這個(gè)地址就被登記進(jìn)當(dāng)前標(biāo)簽頁(yè)的資源列表。類比一下它相當(dāng)于在電話局里裝了一臺(tái)錄音機(jī)——頁(yè)面和服務(wù)器之間通的每一句話都被留下底稿而你自己完全無(wú)感。這一層的監(jiān)聽(tīng)邏輯寫在 js/background.jschrome.webRequest.onSendHeaders和onResponseStarted兩個(gè)鉤子把請(qǐng)求頭和響應(yīng)頭都截留下來(lái)交給findMedia()函數(shù)做媒體類型判定。靜態(tài)的 mp4、圖片、音頻基本在這一層就被發(fā)現(xiàn)。第二個(gè)引擎是 MediaSource 代理。白話定義現(xiàn)在很多視頻并不加載一個(gè)完整的 mp4而是通過(guò)MediaSource接口把視頻數(shù)據(jù)分片追加進(jìn)video標(biāo)簽網(wǎng)絡(luò)層根本看不到完整文件擴(kuò)展在注入頁(yè)面的腳本里重寫了addSourceBuffer方法逐片記錄追加過(guò)程把流還原成可下載的資源。類比普通嗅探工具只能聽(tīng)快遞員的電話號(hào)碼而貓抓站在收發(fā)室門口把每只小箱子拆開記錄一遍。這一邏輯在 catch-script/catch.js 的CatCatcher類中實(shí)現(xiàn)proxyMediaSourceMethods是關(guān)鍵入口。兩層機(jī)制合起來(lái)回答了那個(gè)關(guān)鍵問(wèn)題為什么只盯網(wǎng)絡(luò)層的工具抓不到的動(dòng)態(tài)流媒體貓抓能抓到。分片流媒體處理m3u8解析器的三步工作流進(jìn)階情況是頁(yè)面上只有一個(gè).m3u8地址。它本質(zhì)上是一份菜單——不含視頻內(nèi)容只列出幾十甚至上千個(gè).ts分片的地址還可能聲明 AES-128 加密密鑰。這時(shí)普通下載毫無(wú)意義需要的是解析器它的流程分三步解析與校驗(yàn)js/m3u8.js 從早期的正則解析升級(jí)為基于 hls.js 的解析內(nèi)核2.2.2 版本起拉取播放列表后讀取總時(shí)長(zhǎng)、分辨率、預(yù)估大小識(shí)別密鑰與加密方式密鑰處理catch-script/search.js 深度搜索腳本會(huì)在頁(yè)面數(shù)據(jù)里翻找疑似密鑰也支持手動(dòng)上傳 Key 或填寫十六進(jìn)制/base64 密鑰并發(fā)下載js/m3u8.downloader.js 默認(rèn)最多6 個(gè)下載線程2.4.7 版本起支持?jǐn)帱c(diǎn)重試、任意切片勾選、合并下載還能把結(jié)果推給 Aria2、N_m3u8DL-CLI 或在線 ffmpeg 轉(zhuǎn)成 mp4場(chǎng)景回扣機(jī)制在哪些環(huán)節(jié)發(fā)力剪輯師保存被屏蔽的網(wǎng)頁(yè)樣片客戶發(fā)來(lái)一個(gè)網(wǎng)頁(yè)樣片鏈接右鍵被攔截、沒(méi)有下載按鈕。裝好貓抓后打開頁(yè)面點(diǎn)工具欄貓爪圖標(biāo)彈窗里資源列表已經(jīng)備好勾上視頻文件點(diǎn)下載即可。起作用的是網(wǎng)絡(luò)監(jiān)聽(tīng)引擎那個(gè) mp4 請(qǐng)求在發(fā)出的瞬間就被onSendHeaders鉤子記錄了下來(lái)頁(yè)面怎么屏蔽 UI 都攔不住網(wǎng)絡(luò)層的底稿。學(xué)生保存只給m3u8地址的公開課回放頁(yè)面上播的是直播回放只有播放列表地址。把地址丟給解析器hls.js 內(nèi)核先讀懂菜單深度搜索腳本從頁(yè)面翻出 AES-128 密鑰隨后 6 個(gè)線程并發(fā)抓取分片、解密、合并成一個(gè) mp4。全程不需要手動(dòng)執(zhí)行任何命令。開發(fā)者抓WebRTC通話流做協(xié)議分析走 WebRTC 的流連 m3u8 都沒(méi)有這是最極端的場(chǎng)景。貓抓提供 catch-script/webrtc.js 錄制腳本直接錄制通話流屬于 MediaSource 代理思路的延伸——在網(wǎng)絡(luò)層無(wú)米下鍋時(shí)直接到媒體層取數(shù)。設(shè)計(jì)取舍為穩(wěn)定性讓步的地方攤開 CHANGELOG.md 看貓抓的演進(jìn)史是一次次限制與反限制的博弈每個(gè)決策都寫著理由和代價(jià)版本決策為什么這么做犧牲了什么1.0.17遷移 Manifest V3Chrome 強(qiáng)制新規(guī)范后臺(tái)從常駐腳本變成會(huì)休眠的 Service Worker狀態(tài)隨時(shí)可能丟失1.0.24加入 Heart Beat 心跳用低頻通信阻止后臺(tái)休眠保住捕獲狀態(tài)不丟2.4.7下載線程封頂 6 個(gè)m3u8 解析器 最大下載線程調(diào)整為 6——線程越多越快但對(duì)目標(biāo)服務(wù)器壓力越大社區(qū)驗(yàn)證的平衡點(diǎn)2.5.3存儲(chǔ)換到 sessionstorage.local 更改為 storage.session 以減少 IO 錯(cuò)誤導(dǎo)致擴(kuò)展無(wú)法使用代價(jià)是配置不再跨會(huì)話持久化2.7.0從瀏覽器緩存讀 m3u8專門解決一次性 URL每次訪問(wèn)即失效的問(wèn)題代價(jià)是依賴瀏覽器緩存行為其中 2.0.0 的更新日志原話尤其誠(chéng)實(shí)該死的 Service Worker... 現(xiàn)在后臺(tái)被殺死能立刻喚醒自己... 繼續(xù)用骯臟的手段對(duì)抗 Manifest V3——把工程現(xiàn)實(shí)寫在日志里比任何營(yíng)銷話術(shù)都有說(shuō)服力。安裝與源碼入口普通用戶只需兩步在 Chrome 網(wǎng)上應(yīng)用店、Edge 插件商店或 Firefox 附加組件中搜索 Cat-Catch 安裝然后打開含媒體內(nèi)容的頁(yè)面點(diǎn)工具欄貓爪圖標(biāo)在資源列表里勾選、下載完事。想讀源碼或自己改的開發(fā)者git clone https://gitcode.com/GitHub_Trending/ca/cat-catch在瀏覽器擴(kuò)展程序頁(yè)開啟開發(fā)者模式加載已解壓的擴(kuò)展程序選中項(xiàng)目文件夾即可。閱讀入口嗅探核心在 catch-script/catch.js播放列表解析在 js/m3u8.js請(qǐng)求監(jiān)聽(tīng)在 js/background.js。適用人群與一個(gè)開放問(wèn)題它適合需要離線存課的學(xué)生、存素材的剪輯師、研究流媒體協(xié)議的開發(fā)者以及想看 MV3 擴(kuò)展工程化實(shí)踐的架構(gòu)師。留一個(gè)問(wèn)題當(dāng)越來(lái)越多網(wǎng)站轉(zhuǎn)向 DRM 加密和主動(dòng)反嗅探在瀏覽器里撈文件這條路還能走多遠(yuǎn)——答案也許不在更強(qiáng)的嗅探而在更聰明的協(xié)作?!久赓M(fèi)下載鏈接】cat-catch貓抓 瀏覽器資源嗅探擴(kuò)展 / cat-catch Browser Resource Sniffing Extension項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考