大家好,在解析网站https://akniga.org/时,我首先遇到了缺少媒体内容链接的问题。 
快速谷歌让我查看页面代码,发现数据是在网络选项卡的请求中从服务器加载的。您需要获得此文件 (pl.m3u8) 的链接,在其帮助下您可以下载整个音轨并使用 ffmpeg 将其保存在您的 PC 上。
我将不胜感激任何帮助!
大家好,在解析网站https://akniga.org/时,我首先遇到了缺少媒体内容链接的问题。 
快速谷歌让我查看页面代码,发现数据是在网络选项卡的请求中从服务器加载的。您需要获得此文件 (pl.m3u8) 的链接,在其帮助下您可以下载整个音轨并使用 ffmpeg 将其保存在您的 PC 上。
我将不胜感激任何帮助!
从本质上讲,您处理的不是您习惯看到的媒体文件,而是流格式,换句话说,媒体流。
我确信有一些库可以自动执行此过程,但我只会向您展示它是如何工作的,因为我自己没有太多使用它,但我只是自己分析了它。
在该网站上,您可以找到
HLS (M3U8)一个包含有关现有子流的元数据的文件。要下载它,您只需点击浏览器中的链接即可;它可以直接在开发者控制台中看到:https://h7.akniga.club/b/86477/pl.m3u8?res=your_key&expires=1704007036输出是一个包含嵌套段的文件。以下是该文件的示例:
本质上来说,这种情况下的流是使用
AES-128.您通过链接收到密钥
https://h11.akniga.club/datakeys/enc.key,并且初始化向量(IV)已明确写入文件中。无需在文件中显式写入任何内容,因为 ffmpeg 本身将接收此密钥并解码段,但如果需要,可以手动指定它的路径。然后您需要下载扩展名为
*.ts. 根据.M3U8我的示例中的文件 - 其中有 94 个,您可能有不同的值。但既然你说它会ffmpeg自行卸载,那么这一步就可以跳过。尽管如此,还是如何快速上传这些文件的一个简单示例:
您可以自动化此过程并改进代码,因为这只不过是一个简单的视觉示例,用于展示如何快速手动下载所有文件 - 我的任务是向您传达工作的概念。我确信有更好的方法,或者甚至可以
ffmpeg自行下载 - 值得您研究。之后,用它
ffmpeg来将媒体流收集到媒体文件中。我使用了
Windows,并且没有使用ffmpeg,所以我mp3无法转换,但在mp4我的情况下,这些片段被收集到一个媒体文件中。如果我没记错的话,那么必须有一些额外的驱动程序,以便您可以重新编码为mp3. 无论如何,您可以通过其他服务mp4进行转换。mp3由于我只是展示如何快速组装此媒体文件的示例,因此我使用了以下命令:
我建议您使用更精细的设置
ffmpeg并弄清楚每个标志的含义。更新:
我没有在评论中写到使用
seleniumwire是一个很好的解决方案。更好的是,我写道,最好的解决方案是在常规请求上执行此操作,您只需要弄清楚 -request是如何生成的,即为您检查 -coderes,但这完全取决于您的偏好。XHRjs但是,选项 c
seleniumwire有效。正如我所写,您需要设置轻微的延迟,因为响应XHR不会立即出现。为了减少处理器的负载,您可以selenium在headless模式下打开它 - 这本质上会隐藏浏览器的图形界面。这是第一本书中最简单的例子:该选项并不理想,因为隐式等待概率
selenium而不是精确的链接搜索,但是,出于演示目的,代码可以工作,您只需要改进它即可。