正常来说,要获取一个视频网站的 m3u8 地址,需要先用 F12 进入 developer tool,再从 Network 面板里,按照 m3u8 关键字过滤一下,最后导出 https://t.wdubo.com/20210617/YyqGH3Ne/hls/index.m3u8 之类的地址。
然而,现在网站为了防止爬虫,中间那串 YyqGH3Ne 是随机数。一个视频还好,几十集的电视连续剧,用这种方法挨个去点每一集,就很繁琐。
可以改用 Chrome Devtools Protocal 接口,用后台来控制 chrome 的 url 访问,network 监控和全自动化 url 过滤和记录。
以 chrome v88 来举例
用 chrome.exe --remote-debugging-port=9222 --disable-gpu about:blank 参数启动浏览器。
访问 http://127.0.0.1:9222/json,获取 about:blank 页面的[pageid]
用支持 websocket 的语言写一段控制代码,用 websocket 协议和 chrome 建立后台控制连接 (地址为 ws://127.0.0.1:9222/devtools/page/[pageid]
发送命令 Network.enable,让 chrome 打开所有网络监控回调(相当于 network 面板监控)
循环运行 JS 脚本 Runtime.evaluate, 参数为 document.location.href='http://视频网站.com/某电视剧 /第 1 集.html'
抓取页面里,动态产生的所有 network 事件。用正则对 url 进行过滤,保存当前的 m3u8 真实地址。
重复执行第 5 步,直到所有电视剧的所有集数保存完毕。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.