• 管理
  • 斗鱼直播源解析工具

    前天在网上搜抓取斗鱼直播源的时候,搜到了一个帖子(点击进入原贴).我按照楼主的方法试了一下用手机端X浏览器抓取直播源(用pc端的安卓模拟器实现的),然后按照楼主的思路解析了一下地址,发现大部分直播间还是有效果的,然后就用java写了个小程序,实现了这个简单的功能。

    另外,除了楼主说的这种抓取方式,还可以用chrome或者firefox浏览器的F12抓源,以chrome为例,把调试终端调成手机模式,在network里 把size降序排列,那个一直在返回响应不断增大的就是直播源,测试了好多次,斗鱼的直播源很怪,有时候抓取到的是可以直接在potplayer里播放的,但绝大多数是加密的,而且加密的形式也有区别,这个工具目前只支持两种格式的解析,这两种已经能支持多数直播间了,但部分直播间的地址还是无法正确解析。
    另外,某些直播间利用chrome的12直接抓取获取到的源后缀是.xs的,这种有的也是可以直接播放的.

    利用这个工具解析得到的直播源,可以直接在potplayer里播放,不用再看直播间里乱七八糟的广告、弹幕、礼物啦。

    通过测试,抓取的直播源的格式各种各样的都有,所以解析方式肯定也各不相同,如果大家发现了其他的解析方式,可以在本贴下留言,我也会及时更新工具的解析方法。

    下面附上下载:

    链接:https://pan.baidu.com/s/1w9OXikdYP19_lX0cdOOb8A
    提取码:al2l

    使用介绍:
    1.从chrome或firefox的调试模式获取加密直播源

    2.使用工具解析该地址

    3.获取真实直播源

    4.potplayer中打开解析得到的真实直播源

    5.实现在播放器里收看直播

    源码:

    public class Test implements ActionListener {
        private  JButton btn1 ;//开始解析按钮
        private  JButton btn2 ;//退出程序按钮
        private TextField url1;//输入解析文本框
        private  TextField result;//输出解析地址文本框
    
        //程序运行入口
        public static void main(String[] args) {
            new Test();
        }
        public Test(){
            //界面设置
            JFrame frame = new JFrame();
            frame.setVisible(true);
            frame.setTitle("斗鱼直播源解析 by故事而已");
            frame.setLocation(700,400);
            frame.setSize(400,200);
    
            //生成容器
            Container con = frame.getContentPane();//生成容器
            con.setLayout(new GridLayout(3,1));
    
            //版面设置
            JPanel pan1 = new JPanel();//生成一个新的版面
            JLabel urlStr = new JLabel("解析");
            pan1.add(urlStr);
            url1 = new TextField(40);
            url1.setText("在此输入需要解析的直播源地址");
            pan1.add(url1);
            con.add(pan1);
    
            JPanel pan2 = new JPanel();//版面2
            JLabel urlResult = new JLabel("解析结果");
            pan2.add(urlResult);
            result = new TextField(40);
            pan2.add(result);
            con.add(pan2);
    
            JPanel pan3 = new JPanel();//版面3
            btn1 = new JButton("开始解析");
            btn2 = new JButton("退出");
            btn1.addActionListener(this);//绑定监听
            btn2.addActionListener(this);//绑定监听
            pan3.add(btn1);
            pan3.add(btn2);
            con.add(pan3);
            //关闭窗口事件
            frame.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
        }
        //按钮事件
        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==btn1){
                method();//点击开始解析按钮,调用解析方法
            }else if(e.getSource()==btn2){
                System.exit(1);//点击关闭按钮,退出程序
            }
        }
        //解析地址的方法
        private void method() {
            try {
    
                //x浏览器嗅探到直播源解析
                String url = url1.getText();
                if(url.startsWith("http://")){
                    //解析方案1
                    String[] split = url.split("\\?");
                    String sub = split[0].substring(split[0].indexOf("."));
                    String source = "http://tx2play1"+sub+"?"+split[1].substring(split[1].indexOf("token"));
                    source = source.replace("/playlist.m3u8",".flv");
                    //输出解析地址
                    result.setText(source);
                }
                //chrome获取到的直播源解析
                if(url.startsWith("https://")){
                    //解析方案2
                    String regex = "\\.flv";
                    String[] split = url.split(regex);
                    String part1 = split[0].substring(split[0].lastIndexOf("/"));
                    String part2 = split[1].substring(split[1].indexOf("token"));
                    String source = "https://tx2play1.douyucdn.cn/live"+part1+".flv?"+part2;
                    result.setText(source);
                }
            } catch (Exception e) {
                result.setText("该地址暂时无法解析");//输出异常信息
            }
        }
    }
    
    

    其实这个实现很简单,就是对加密的直播源url进行还原,变成未加密的状态,但是斗鱼的加密形式很多,目前我只发现了这两种。后续如果再有新的发现,我会继续更新本工具。

    这个工具我也分享到了吾爱破解论坛中,地址:https://www.52pojie.cn/forum.php?mod=viewthread&tid=958915&page=1#pid26083386

    posted @ 2019-05-18 09:18  故事而已zzz  阅读(8587)  评论(0)    收藏  举报