|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 461|回復: 0
打印 上一主題 下一主題

使用 Powershell 下載 XVideos 影片

[複製鏈接]

2163

主題

1

好友

352

積分

中學生

Rank: 3Rank: 3

  • TA的每日心情
    慵懶
    2024-9-15 03:09
  • 簽到天數: 2 天

    [LV.1]初來乍到

    推廣值
    0
    貢獻值
    0
    金錢
    780
    威望
    352
    主題
    2163
    跳轉到指定樓層
    樓主
    發表於 2024-5-30 03:29:48 |只看該作者 |正序瀏覽
    一般的HLS串流伺服器,將完整影片切段時,都會產生一個 .m3u8 的影片清單檔案

    XVideos 的串流伺服器以及處理播放影片的 JavaScript  會先輸出一個 hls.m3u8 檔案
    裡面會列出不同解析度影片的影片清單檔案
    再下載你想要的解析度清單檔案後,可以得到影片的網址,而且影片長度、影片網址是有規則的
    我們就從這規則來下載影片

    $Min 是影片分鐘數(只取分鐘)
    $Sec 是影片不足一分鐘的秒數
    $Last 是計算總共有多少影片,我要用 For Loop 來進行批次下載
    Round() 是四捨五入函式,數值加上 0.5 ,再進行四捨五入就會變成無條件進位;如果要變成無條件捨去,就改成減 0.5

    $BasePath 是收集影片的目錄
    $Folder 是要存放目前抓取影片的目錄名稱
    $Referer 是這部影片的網頁
    $BaseURL 就是前面講的影片網址

    PS.這個程式的前題是,你要先用瀏覽器找到 任一 .ts 影片網址。當然,要解析網頁內容,取得 hls.m3u8 網址及內容,也不困難就是了(這部分有時間再說)
    • # Download xvideos 影片
    • # 從影片網址取得批次網址
    • # 每段影片都是 10秒,所以從影片長度可以計算出迴圈批次數量 $Last = 分鐘數 * 6 + 秒數/10(無條件進位)
    • $Min = 36
    • $Sec = 34
    • $Last = $Min * 6 + [Math]::Round($Sec/10+0.5)
    • $BasePath = "C:TEMPAV"
    • $Folder = "紗凪美羽 前AKB48偶像下海拍AV"
    • $Referer = "https://www.xvideos.com/video51328297/_-_-_akb48_av"
    • $BaseURL = "https://hls-hw.xvideos-cdn.com/videos/hls/df/fc/87/dffc8767f17e4e4b04e201cc40da752f/hls-720p-6875f0.ts?e=1613299588&l=0&h=2373aaf0681fcf309163f6005f1b2d1c"
    • $BaseURL = $BaseURL -Replace [regex]"0.ts","{0}.ts"
    • $AllProtocols = [System.Net.SecurityProtocolType]"Ssl3,Tls,Tls11,Tls12"
    • [System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
    • If(Test-Path -Path "$BasePath$Folder"){
    •     Write-Host "目錄已存在" -ForegroundColor Cyan
    • }Else{
    •     Write-Host "建立目錄"
    •     New-Item -Path $BasePath -Name $Folder -ItemType Container
    • }
    • # 因為影片編號是 0 開始,所以最後一個影片會小於 $Last ,而不是小於等於 $Last
    • For($Loop=0; $Loop -lt $Last ;$Loop++){
    •     $Download = New-Object System.Net.WebClient
    •     $URL = $BaseURL -f $Loop
    •     $URL
    •     $Download.Headers.Add("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36")
    •     $Download.Headers.Add("Referer",$Referer);
    •     $FileName = "{0:d4}.mp4" -f $Loop
    •     $Download.DownloadFile($URL , "$BasePath$Folder$FileName")
    • }


    [color=rgb(99, 152, 5) !important]複製代碼


    您需要登錄後才可以回帖 登錄 | 按這成為會員

    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-12-21 00:46 , Processed in 0.016438 second(s), 17 queries , Gzip On, Memcache On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部