V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Gr4zy
V2EX  ›  问与答

m3u8 格式视频下载 请教一下各位

  •  
  •   Gr4zy · 2019-02-28 13:55:22 +08:00 · 7402 次点击
    这是一个创建于 2125 天前的主题,其中的信息可能已经有所发展或是发生改变。
    62 条回复    2019-03-02 17:40:27 +08:00
    Gr4zy
        1
    Gr4zy  
    OP
       2019-02-28 13:58:13 +08:00
    各位大佬麻烦一下了,需要完整数据包的话可以跟我讲声

    邮箱:Z3JhenkyMzMzQGdtYWlsLmNvbQ==
    599316527
        2
    599316527  
       2019-02-28 14:23:53 +08:00
    WordTian
        3
    WordTian  
       2019-02-28 14:30:21 +08:00 via Android
    按一般大厂的套路来说的话,你还是先把 signature 字段的生成规则逆出来再说吧
    shuangyeying
        4
    shuangyeying  
       2019-02-28 14:53:23 +08:00
    貌似网课手机端可以离线。
    whwlsfb21
        6
    whwlsfb21  
       2019-02-28 16:02:06 +08:00
    ffmpeg.exe -i "%url%" -bsf:a aac_adtstoasc -codec copy %filename%
    ryanlid
        7
    ryanlid  
       2019-02-28 16:03:54 +08:00
    用 ffmpeg 下载

    放个我的链接 😀
    https://lidong.me/blog/ffmpeg-download-ts/
    lyminghao
        8
    lyminghao  
       2019-02-28 16:45:49 +08:00
    用过下面这个,还不错:
    https://github.com/nilaoda/M3U8-Downloader
    ThirdFlame
        9
    ThirdFlame  
       2019-02-28 17:19:36 +08:00
    idm 自动解析 直接下
    hundan
        10
    hundan  
       2019-02-28 17:23:16 +08:00 via Android
    @WordTian 不用 在签名没过期的时候下载转码就行了
    Valyrian
        11
    Valyrian  
       2019-02-28 17:26:32 +08:00
    Gr4zy
        12
    Gr4zy  
    OP
       2019-02-28 18:51:30 +08:00
    @ThirdFlame 想請教一下 IDM 如何下載 m3u8 的視頻呢,嘗試下載,好像不太會用

    @ryanlid
    @whwlsfb21
    @599316527 好像不太會用 ffmpeg,不會用 m3u8 文件批量下載,可能是因爲每個 ts 文件帶不同簽名?想請教一下
    Gr4zy
        13
    Gr4zy  
    OP
       2019-02-28 23:16:36 +08:00
    使用 FFmpeg 批量下載 ts 的時候是不帶簽名這些參數的,
    請問一下有沒有什麼辦法可以帶參數下載呢?
    Gr4zy
        14
    Gr4zy  
    OP
       2019-02-28 23:23:46 +08:00
    @hundan
    @WordTian 一個視頻有大幾百個 ts 分段,手工下載太麻煩。。


    @whwlsfb21 需要帶簽名什麼的才可以訪問 ts 分段。。求教
    hundan
        15
    hundan  
       2019-02-28 23:26:49 +08:00 via Android
    @Gr4zy 你要下的是 m3u8 文件 不是下载 ts 文件
    Gr4zy
        16
    Gr4zy  
    OP
       2019-02-28 23:27:46 +08:00
    折騰了好幾天了,眼看就快過期了,是不是權重太低大家看不到啊。。。
    Gr4zy
        17
    Gr4zy  
    OP
       2019-02-28 23:30:10 +08:00
    @hundan 下好了 m3u8 文件,但是沒有 ts 文件就無法在本地播放視頻吧

    但 ts 文件帶參,有點難辦,是不是要模擬瀏覽器要簽名呢?
    hundan
        18
    hundan  
       2019-02-28 23:31:18 +08:00 via Android
    @Gr4zy 我解释不动了 你留个联系方式叭 我明天帮你下 ……
    crab
        19
    crab  
       2019-02-28 23:32:44 +08:00
    没必要下载成 ts 格式啊,直接 ffmpeg 指定去下 m3u8 转 mp4。
    crab
        20
    crab  
       2019-02-28 23:33:35 +08:00
    ffmpeg 大了点,可以用 gohls.exe
    hundan
        21
    hundan  
       2019-02-28 23:37:16 +08:00 via Android
    m3u8 打开就是在线播放源 不出意外的话 里面就是带 sign 的 拿到 m3u8 用 ffmpeg 转成 mp4 就可以了
    Gr4zy
        22
    Gr4zy  
    OP
       2019-02-28 23:40:01 +08:00
    @hundan 一樓有我郵箱地址,大佬不介意的話發郵箱可以嗎。。。

    m3u8 文件下載下來大概是長這樣,URI 那裏做了點模糊處理。。。

    https://paste.ubuntu.com/p/6N4jkPrBxd/

    但是把 m3u8 導入 ffmpeg 中會直接訪問 ts 鏈接。。。

    問題描述里抓包是有後綴的。。

    先感謝下大家的熱心
    binux
        23
    binux  
       2019-02-28 23:44:04 +08:00 via Android
    @Gr4zy 你怎么就听不懂呢,ffmpeg 边下载边合并就行了啊
    hundan
        24
    hundan  
       2019-03-01 00:02:30 +08:00 via Android
    O ……明白你的点了…… m3u8 里是不带签名的 是前端带上的……这个要么就是手动把链接换成浏览器里抓到的带签名的,要么调试一下 js,找找加签名的地方,改改自用……
    都是有点麻烦的 我就不掺和了 加油
    hundan
        25
    hundan  
       2019-03-01 00:07:13 +08:00 via Android
    照理说可以用 idm 嗅探视频 ts 批量下载 然后下到本地之后 再把 m3u8 里的视频链接改成本地的 然后用 ffmpeg 转成 mp4
    不知道里面那个 key 有没有带参的 最好把 key 也下载过来
    Gr4zy
        26
    Gr4zy  
    OP
       2019-03-01 00:52:14 +08:00
    @crab
    @hundan
    @binux

    ffmpeg 下載輸出大概如下這樣,不清楚邊下載邊合併會不會不一樣,但是這樣操作完全訪問不了 ts 文件的樣子

    https://paste.ubuntu.com/p/wTNQ6CFVsN/

    如同問題描述裏一樣,實際上要帶後綴才能訪問 ts 文件,像這樣

    https://video.xxx.xxx/yugu-live/yugucamp5PJ4/2018-10-04-18_50_57_2018-10-04-20_02_20_HD_0.ts?OSSAccessKeyId=77VpRAQE2xbIU9LM&Expires=1551390104&Signature=pNPydf1F0CZTmJDWNwCmxT94Bn8%3D

    這裏的 OSSAccessKeyId 應該是阿里的吧,好像這個後綴是不變的

    瀏覽器抓包發現,在訪問 ts 之前有訪問類似下面這樣的鏈接

    https://class.xxx.com.cn/live/signReplay?url=https:%2F%2Fvideo.xxx.xxx%2Fyugu-live%2Fyugucamp5PJ4%2F2018-10-04-18_50_57_2018-10-04-20_02_20_HD_0.ts

    應該是一對一關係。。。

    系統說我回覆太頻繁了,1800s 不能發言,有點想用郵件。。

    手動來操作完全下不完啊。。太多了

    不是很明白前端。。所以也不太清楚是不是前端加的

    有沒有可能寫一個腳本抓包,把瀏覽器訪問的 ts 文件識別並下載呢?
    可是技術棧不太符合。。只會 C/C++應該沒救。。

    idm 嗅探不太會用。key 具體指什麼呢? m3u8 加密用的 key 是在 m3u8 文件裏那項嗎?

    m3u8 裏的 URI 是完整的鏈接,打開會是這樣:
    �Z|F.&�z�QG�۲ �
    Gr4zy
        27
    Gr4zy  
    OP
       2019-03-01 01:18:06 +08:00
    @hundan 剛才用 idm 試過,這種帶簽名的 idm 說是受保護的文件,無法下載

    寫腳本抓包也許可行?只是我太弱不會。。
    Gua
        28
    Gua  
       2019-03-01 02:06:38 +08:00   ❤️ 1
    下载个录屏软件,录!
    cy97cool
        29
    cy97cool  
       2019-03-01 06:00:48 +08:00 via Android
    咦 不科学啊 如果是前端生成 signature 签名的话
    是不是意味着 oss 的密钥也给了前端
    如果真这么蠢的话 就可以直接下载这 oss 所有资源了
    Nasei
        30
    Nasei  
       2019-03-01 07:03:08 +08:00
    就是说这东西的下载并不是通用流程而是访问 ts 时带参数了? 那你得先知道每个 ts 后面的参数是怎么得到的, 然后就可以写脚本了.
    下载完成之后还得用那个 m3u8 里的 key 解下密, 这个我之前找到过可以用的脚本 https://paste.ubuntu.com/p/mgnQRT6wHs/
    binux
        31
    binux  
       2019-03-01 07:07:26 +08:00 via Android
    看起来播放器不是标准 m3u8 播放,还进行了签名
    jiangnanyanyu
        32
    jiangnanyanyu  
       2019-03-01 07:22:40 +08:00 via Android
    我觉得录屏不错
    leis1015
        33
    leis1015  
       2019-03-01 07:27:11 +08:00 via iPhone
    m3u8 直接 chrome 浏览器地址栏输入就可以下载来了啊,直接就能播放…
    只要你的地址正确…
    反正斗鱼虎牙的直播视频都直接下的
    d5
        34
    d5  
       2019-03-01 07:28:50 +08:00 via iPhone
    带上 cookies 和 header 头访问,一般 token 都允许客户端在短时间反复用
    d5
        35
    d5  
       2019-03-01 07:29:55 +08:00 via iPhone
    另外 33 楼说的没错……淘宝的宝贝视频可以直接打开了另存为视频
    bbq777aass
        36
    bbq777aass  
       2019-03-01 08:08:12 +08:00 via Android
    Cốc Cốc 浏览器,直接下载成 mp4
    yingfengi
        37
    yingfengi  
       2019-03-01 08:57:12 +08:00 via Android
    试试 firefox+videodownloadhelper
    okface
        38
    okface  
       2019-03-01 10:53:07 +08:00
    @binux 老哥,问一句 pyspider 的分布式部署的问题,是否是在内网主机上搭建同样的 pyspider 环境然后 slave 监听 master 的任务队列就可以? slave 只启动 fetcher 和 processor 就行。谢谢🙏
    binux
        39
    binux  
       2019-03-01 10:58:27 +08:00   ❤️ 1
    @okface #38 是
    okface
        40
    okface  
       2019-03-01 11:00:06 +08:00
    @binux 那请问如何验证 slave
    okface
        41
    okface  
       2019-03-01 11:02:26 +08:00
    @binux 那请问如何验证 slave 的机器确实在抓 master 的任务呢~,slave 的 processor 的日志确实监听到了队列,master 的任务会收到返回一个字段说哪个任务是 slave 抓取的嘛。什么情况下才会触发 slave 呢,高并发?
    binux
        42
    binux  
       2019-03-01 11:30:50 +08:00   ❤️ 1
    @okface #41 pyspider 不存在 master, 只有 scheduler,你可以认为所有任务都是 slave 抓的
    okface
        43
    okface  
       2019-03-01 11:45:21 +08:00
    @binux 测试成功啦,(访问 httpbin 发现返回的是两个服务器的 IP 地址)
    特别感谢。
    ifxo
        44
    ifxo  
       2019-03-01 11:50:54 +08:00
    这个格式可能下载不了吧
    mingl0280
        45
    mingl0280  
       2019-03-01 13:07:36 +08:00
    firefox 下使用 Video Downloadhelper,下 m3u8 视频毫无压力……
    leexy
        46
    leexy  
       2019-03-01 13:19:49 +08:00
    Gr4zy
        47
    Gr4zy  
    OP
       2019-03-01 13:19:59 +08:00
    @yingfengi
    @mingl0280 之前试过一次,好像不行,应该是签名后缀这些问题,Video Downloadhelper 可以带这些参数访问吗?今晚回去再试一下好了。。


    @d5
    @leis1015
    @binux
    Gr4zy
        48
    Gr4zy  
    OP
       2019-03-01 13:21:37 +08:00
    这个签名好像是访问另一个网站给的,具体链接形式在 26 楼有抓包。。

    每个 ts 文件后面的签名都不同,OSS 的 key 倒是相同
    Gr4zy
        49
    Gr4zy  
    OP
       2019-03-01 13:27:38 +08:00
    @leexy 抱歉没有 52pojie 的账号。。用不了这个
    不过下面第一个回复 逍遥一仙 的下载器之前试过了,用不了

    具体的签名方式应该就是像 26 里的链接和问题描述那样
    mingl0280
        50
    mingl0280  
       2019-03-01 13:31:05 +08:00 via Android
    @Gr4zy VDH 是直接用你当前的 cookie,用浏览器模拟访问的,这个一般都能用……
    Gr4zy
        51
    Gr4zy  
    OP
       2019-03-01 13:39:47 +08:00
    @shuangyeying
    只有网页端呢。。

    @rolitter 这个大概是 ffmpeg 和 aria2 的命令行封装吧。。试过了,不行。不过还是感谢了


    @mingl0280 倒是可以看到文件,但是不能自己下载,要手动一个个下。。感觉和抓包下载一样。
    有大几百个 ts 分段。。手动有点累

    下载下来的 m3u8 文件打开是 22 楼链接里贴的那样
    mingl0280
        52
    mingl0280  
       2019-03-01 13:49:10 +08:00 via Android
    @Gr4zy 他那个插件有个客户端程序,如果你装了的话是可以自动下的
    Gr4zy
        53
    Gr4zy  
    OP
       2019-03-01 13:56:27 +08:00
    @mingl0280 行,我晚上回家去试一下
    iro
        54
    iro  
       2019-03-01 14:08:00 +08:00
    macOS 下面的 Downie 可以自动下载并合并
    Telegram
        55
    Telegram  
       2019-03-01 14:15:01 +08:00
    我感觉楼上有几位可能想的简单了,我也搞过几个类似的网课视频下载,有些很简单,可以直接抓到 m3u8 地址,然后批量下载片段 ts 合并就行了。
    像楼主这种,可能是服务器用了签名认证的,就算下载来了,也不一定在本地能播放,网站那个播放器貌似自带解密的
    d5
        56
    d5  
       2019-03-01 14:36:16 +08:00 via iPhone
    总之,客户端能正常播放的,一定有办法弄下来的,也有很多浏览器插件,最不济屏幕录像成了吧
    goodan
        57
    goodan  
       2019-03-01 14:58:03 +08:00
    ios 不是自带录屏功能么
    安卓早就有了吧
    liuguang
        58
    liuguang  
       2019-03-01 17:23:45 +08:00   ❤️ 1
    heiyutian
        59
    heiyutian  
       2019-03-02 12:57:53 +08:00
    @liuguang 你好,商店下不了了,能导出一下吗?
    liuguang
        60
    liuguang  
       2019-03-02 13:23:57 +08:00   ❤️ 1
    上面的地址可能有问题,用这个地址
    https://chrome.google.com/webstore/detail/iogidnfllpdhagebkblkgbfijkbkjdmm

    插件名叫 stream recorder,使用的很简单先打开页面,播放视频,他的图标会变成大红点,点击进行下载
    会弹出一个新页面,慢慢的下载,页面注意别关了,然后所有的 ts 文件下载好了之后,点击 save 保存
    只支持 m3u8
    liuguang
        61
    liuguang  
       2019-03-02 13:33:09 +08:00   ❤️ 2
    插件好像下线了。。。。这是目录打包
    链接: https://pan.baidu.com/s/1YzmHzH2Q4iEr05kOvAesVA 提取码: 5ivt
    heiyutian
        62
    heiyutian  
       2019-03-02 17:40:27 +08:00
    @liuguang 非常感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:19 · PVG 06:19 · LAX 14:19 · JFK 17:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.