V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Get Google Chrome
Vimium · 在 Chrome 里使用 vim 快捷键
3dwelcome
V2EX  ›  Chrome

使用 chrome devtools protocol,来抓取视频网站的 m3u8 地址。

  •  
  •   3dwelcome · 2021-07-13 01:59:18 +08:00 · 2154 次点击
    这是一个创建于 1229 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正常来说,要获取一个视频网站的 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 来举例

    1. 用 chrome.exe --remote-debugging-port=9222 --disable-gpu about:blank 参数启动浏览器。

    2. 访问 http://127.0.0.1:9222/json,获取 about:blank 页面的[pageid]

    3. 用支持 websocket 的语言写一段控制代码,用 websocket 协议和 chrome 建立后台控制连接 (地址为 ws://127.0.0.1:9222/devtools/page/[pageid]

    4. 发送命令 Network.enable,让 chrome 打开所有网络监控回调(相当于 network 面板监控)

    5. 循环运行 JS 脚本 Runtime.evaluate, 参数为 document.location.href='http://视频网站.com/某电视剧 /第 1 集.html'

    6. 抓取页面里,动态产生的所有 network 事件。用正则对 url 进行过滤,保存当前的 m3u8 真实地址。

    7. 重复执行第 5 步,直到所有电视剧的所有集数保存完毕。

    4 条回复    2021-07-13 13:27:22 +08:00
    chachalover
        1
    chachalover  
       2021-07-13 09:12:36 +08:00
    supermoonie
        2
    supermoonie  
       2021-07-13 09:26:21 +08:00 via iPhone   ❤️ 1
    巧了,我做的是封装 cef,直接监听网络调用
    3dwelcome
        3
    3dwelcome  
    OP
       2021-07-13 10:03:46 +08:00
    @supermoonie cef 以前也玩过,接口很多,特别是和 C++跨语言调用,挺有意思的。

    貌似监听网络,有一大堆方法。可以走 http/https proxy 代理,写 chrome 扩展监听的,有早期 chrome://net-internals,还有直接用 chrome devtool for devtool,把过滤后的 network 面板 url 列表数据导出来的,五花八门。
    supermoonie
        4
    supermoonie  
       2021-07-13 13:27:22 +08:00 via iPhone
    @3dwelcome 其实 cdp 的实现现在很多了,puppeteer 可能是比较有名的了,其他语言也都有实现,不用自己写
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2616 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:04 · PVG 13:04 · LAX 21:04 · JFK 00:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.