nilaoda / N_m3u8DL-CLI

[.NET] m3u8 downloader 开源的命令行m3u8/HLS/dash下载器,支持普通AES-128-CBC解密,多线程,自定义请求头等. 支持简体中文,繁体中文和英文. English Supported.
https://nilaoda.github.io/N_m3u8DL-CLI/
MIT License
14.37k stars 2.17k forks source link

BUG: Cookie设定在嵌套M3U8中可能无效 #603

Open pjarayuzu opened 2 years ago

pjarayuzu commented 2 years ago

部分M3U8采用Cookie鉴权的同时使用了master m3u8,且在所有流获取时全部鉴权。 此时在重解析和下载时可能出现失败。

xingyunjohn1 commented 2 years ago

我遇到同样的问题,请求master m3u8获取的响应包含set-cookie,而子m3u8链接在请求时仅继承了原先的cookies,并未刷新,导致鉴权失败403

nilaoda commented 2 years ago

@xingyunjohn1 可提供测试链接?目前程序没有维持会话,不会处理响应中的set-cookie,遇到这种网站确实会下载不了。

另外,手动设置cookie是否能够下载?

xingyunjohn1 commented 2 years ago

@xingyunjohn1 可提供测试链接?目前程序没有维持会话,不会处理响应中的set-cookie,遇到这种网站确实会下载不了。

另外,手动设置cookie是否能够下载?

测试链接:F12抓取 https://news.tvb.com/ 中的视频,获取子m3u8文件、视频分片均需鉴权。

我今天浅学C#并粗略修改了部分源码(GetWebSource),是能够获取到子m3u8文件的,不过dalao的代码我还没完全看懂,不知如何传递Header给Down部分。

另外,刚刚通过抓包获取到set-cookie,直接指定子m3u8和人工修改的cookies,是能够下载的。

nilaoda commented 2 years ago

@xingyunjohn1 抓包浏览器请求子m3u8的cookie应该就可以下载吧? 现在下载器的代码可维护性比较差,要维持session的话修改点比较多,懒得弄了🫠

xingyunjohn1 commented 2 years ago

@xingyunjohn1 抓包浏览器请求子m3u8的cookie应该就可以下载吧? 现在下载器的代码可维护性比较差,要维持session的话修改点比较多,懒得弄了🫠

我随便写了点好像可以了(仅满足我自己的情况,不满足维持会话)。

放上来需要的自取罢https://github.com/xingyunjohn1/N_m3u8DL-CLI/releases/tag/3.0.1