Python中如何嗅探视频m3u8地址

最近在看一个视频,网址为 https://tv.line.me/embed/4031374?isAutoPlay=false。(需自备梯子,当日有效)。想用 Python 把视频下载下来。

但是一直嗅探不到视频的地址,似乎是用 js 脚本动态加载的。用 Chrome 的 F12,可以看到最终的视频地址为 https://tv-line.pstatic.net/global/read/navertv_2018_09_12_530/hls/dade610c-b66c-11e8-8370-0000000049b9.m3u8?gda=1540222364_df9af062fc7aeaa9bca0cf1b4a53a36e。

这个有好用的模块或者思路吗?

谢谢先。


Python中如何嗅探视频m3u8地址

11 回复

py 写个代理,客户端通过代理访问目标页面,代理直接记录 m3u8 的信息。这个最方便


要嗅探视频的m3u8地址,最直接的方法就是分析网络请求。浏览器开发者工具是首选工具。

在Chrome或Edge中,打开开发者工具(F12),切换到Network(网络)标签页,然后刷新或播放视频页面。在请求列表里,使用搜索功能(Ctrl+F)直接搜索“.m3u8”这个关键词。通常很快就能找到包含这个后缀的请求,其URL就是你要找的m3u8地址。

如果页面比较复杂,视频是动态加载的,可以尝试过滤XHR(Fetch/XHR)类型的请求,m3u8文件有时会通过这类请求获取。找到后,右键点击该请求,选择“Copy” -> “Copy link address”即可获取完整地址。

对于简单的页面,直接查看网页源代码(Ctrl+U)然后搜索“m3u8”也可能成功,但现在很多网站都是动态加载,这招不一定管用。

总结:用浏览器开发者工具抓网络请求最靠谱。

方法二,用 chrome less

step 1. open url in chrome or chromium
step 2. open chrome://media-internals/ in new tab
step 3. click media item, copy and paste to your favor downloader

Selenium with Python
控制浏览器打开找出真实地址

idm,视频旁自动出现下载按钮,点下载就了

python 不知道,我下载 m3u8 用的 ffmpeg 这个工具,只要找到 m3u8 第一个片段的请求,就能把所有的片段下载下来

不需要批量下载的话,idm、迅雷,或者直接右键视频下载都可以

#6 +1 ffmpeg 下载吧, m3u8 只是个壳子

谢谢楼上的回复。

F12,IDM, Wireshark 都能看到地址,但只是一次性的。要批量爬取就麻烦了。
Selenium 应该可以爬取这种 JS 动态网页,只是我不太精通。
找了一圈,也没有找到相应的模块。

回到顶部