需求

  • 在網路上要下載影片時,遇到影片嵌入在網頁裡無法下載的問題。

  • 使用過 yt-dlp "在網站中的影片嵌入連結" --referer "該網站的網址" 無效。

解法

  • 前往放有目標影片的網站。

    如果該影片是需要登入會員才可以取得的,必須要先登入好網站,讓瀏覽器和後續使用的下載工具能取得確認登入狀態的 Cookie,才能成功下載。

  • 用 F12 開啟網頁開發工具後切換到 Network 的網路頁籤。

  • 點擊左上角的禁止圖示清除目前的網路紀錄。

  • 重新整理網頁並觀察所有的網路請求,仔細觀察其中 .m3u8 的檔案請求。

  • 點擊重新整理後出現的第一個 .m3u8 的檔案請求,查看右邊的回應頁籤。

    這個檔案中記載著這支影片有哪些相關的檔案可以請求。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-INDEPENDENT-SEGMENTS
    #EXT-X-STREAM-INF:BANDWIDTH=664768,AVERAGE-BANDWIDTH=298958,CODECS="avc1.64001f,mp4a.40.5",RESOLUTION=480x270,FRAME-RATE=15.000
    c74f43166cf91fa68d78e5c446527f70_480x270.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=2231434,AVERAGE-BANDWIDTH=539318,CODECS="avc1.64001f,mp4a.40.5",RESOLUTION=640x360,FRAME-RATE=30.000
    c74f43166cf91fa68d78e5c446527f70_640x360.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=7555093,AVERAGE-BANDWIDTH=1729705,CODECS="avc1.640028,mp4a.40.5",RESOLUTION=1280x720,FRAME-RATE=30.000
    c74f43166cf91fa68d78e5c446527f70_1280x720.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=11995904,AVERAGE-BANDWIDTH=4292701,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=30.000
    c74f43166cf91fa68d78e5c446527f70_1920x1080.m3u8
    
  • 依照需求複製其中一個 .m3u8 檔案的檔名,先貼上到記事本。

    1
    
    c74f43166cf91fa68d78e5c446527f70_1920x1080.m3u8
    
  • 回到原本記載影片檔名清單的 .m3u8 的檔案請求,查看右邊的請求頁籤中的請求網址。

    這個代表我們要去哪可以下載到影片,一般情況下清單的下載路徑跟影片的是相同的。

    1
    
    https://video.movie.com/147c0455/attachments/765cc9dd/hls/c74f43166cf91fa68d78e5c446527f70.m3u8?v=50d7
    
  • 查看清單的請求網址,把清單的檔名替換為影片的檔名。

    1
    
    https://video.movie.com/147c0455/attachments/765cc9dd/hls/c74f43166cf91fa68d78e5c446527f70_1920x1080.m3u8
    
  • 開啟終端機依照語法輸入指令。

    語法:

    1
    
    yt-dlp "影片請求網址"
    

    範例:

    1
    
    yt-dlp "https://video.movie.com/147c0455/attachments/765cc9dd/hls/c74f43166cf91fa68d78e5c446527f70_1920x1080.m3u8"