获取斗鱼直播视频的下载地址

斗鱼直播应该火了好一阵了,和每一个互联网新兴业务一样,人气激增到国家都专门为其制定管理政策了。对流行节拍有意而为之的后知后觉,让我近一两个月才关注了几个主播。女主播看脸蛋,也插科打诨来几个污段子,才美兼备的自是不多。男主播的话,就看他套路其他女主播的真人秀,或视频或夜店。

只是直播时间都太晚,看几次就觉得严重影响睡眠,能自动录播就好了。

网页里的播放器自然是用Flash开发的,P2P式的NetStream。如果找到主播房间号对应的NetStream传输地址就可以使用第三方软件去下载视频流了。虽然播放器的主程序是加密传输到本地后载入内存的,但毕竟Loader真正开始加载的时候,该解密的都解了。播放器外部代码还做了混淆,但主程序因为加密放下戒备,真Dump下来的话,可读性极高。

开源的FFDEC出现以后,SWF Decompiler和As3 Sorcerer都再没用过。直播开始后,FFDEC去Dump浏览器进程中的Flash文件,大小1.5M左右的就是解密后的播放器主程序。反编译可以看见代码本身包含调试信息,只要当前页面的URL中包含dydebug的字样,播放器就会调用浏览器的console.log输出不同阶段的中间结果,这当中就包含了NetStream流的地址,形如:

组合RtmpUrl和LiveID就得到了视频地址,直接粘贴到浏览器地址栏就下载视频到本地了。

正好新装了Visual Studio 2015,就写了个下载地址解析的工具,距离上一次使用C#写点什么已经四五年了。Anyway,webBrowser控件很方便,可以自动调用IE引擎打开附加dydebug的直播地址。由于console是浏览器自定义的调试模块,webBrowser作为一个控件需要自行实现一个console供Flash调用。其实也就是在页面加载完毕后,添加一段javascript,声明一个window.console.log,内部调用external.log就能传递消息调试信息给C#代码了。

解析程序是Windows 10的VS2015编译的,其他系统可能要安装.net运行时才能正常运行。输入房间号后,视网络状况,一分钟内可以解析出直播地址并放入剪贴板。

斗鱼直播地址解析程序下载:douyu

douyu

更多实现细节可参考主窗口的代码,为了运行清爽,webBrowser控件会隐藏,视频页面加载时会静音。

 

Tagged , . Bookmark the permalink.

31 Responses to 获取斗鱼直播视频的下载地址

  1. 哈哈 says:

    清晰度是720P能不能上1080的呢

  2. lipinghao says:

    貌似又被封杀了,博主重新看看~

  3. PPD says:

    貌似现在都不能用了,我想请问楼主,要是可以我只是想在UWP中播放,UWP不支持Flash,有没有其他的办法?

    • hhjack says:

      刚刚试了一下,输入房间号能正常获得下载地址,然后用迅雷下载就可以。
      UWP什么东西,windows客户端吗,如果你能看到房间号的话,输入这个下载工具还是可以一样获取下载地址啊。

      • PPD says:

        UWP中没有WebBrowser控件 我可以用WebView吗

        • hhjack says:

          用webBrowser实际上是调用IE来渲染显示指定的网页(Flash加载视频时可以泄露视频流媒体的地址出来)。没做过UWP的开发,但WebView既然不能加载Flash,也就没办法用我的方法泄露视频地址了。

          如果一定要用WebView的,可以访问房间页面后解析页面中的m3u文件,取得视频片段的分片地址,形如817683.ts,817684.ts…然后逐个播放或下载

  4. 缘故梦 says:

    博主你好,用嗅探软件找到播放地址后我把它放到播放器中,但播放一段时间后就不能播放了,怎么解决这个问题?

  5. justso says:

    https://github.com/soimort/you-get/

    这个项目用python写的,斗鱼,其他很多视频站都能抓,你们也去看看。而且模板的脚本很简单,很容易扩展到所有直播和视频站。

  6. justso says:

    少写了两句: you-get命令行直接带mpv,vlc,就能播放(或者下载)直播流,不用再提取url,很方便,本地软件解压,比html5效率还要高30%以上。gpu利用率非常高。

  7. justso says:

    另外, https://github.com/rg3/youtube-dl 也支持解析斗鱼,国外网站多些。都是python写的

    • hhjack says:

      这个比上一个看起来更灵活一些~试试看,这类脚本只要经常有人维护就好~网站总在变

      • brlala says:

        请问如何使用这一个?我是电脑白痴。下载了.EXE就不知道接下来应该如何了,能请教吗?

        • hhjack says:

          不知道还能不能用了~你输入房间号,然后点按钮,就会显示视频地址了,并且自动复制到你的剪贴板了。
          不过现在已经有更全面好用的工具you-get,就是上面留言的说到的

      • hehe says:

        确实很好用啊,斗鱼技术再强大,也搞不过开源团队。哈哈

  8. xo says:

    请问下dump flash 用的是什么软件

  9. glc says:

    这个exe不能用,能更新下吗

    • hhjack says:

      dydebug的接口已经封了~所以这个方法不能用了,但是评论区看到有you-get工具,更通用的解决方案

      • xo says:

        you-get的已经不能用了
        douyu.com/lapi/live/getPlay/ 这个请求的生成sign的密匙已经变了,不了解as3看了dump出来的flash,目前还没找到是怎么生成的,楼主可以看看能不找到

hhjack进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注