斗魚直播源解析工具


前天在網上搜抓取斗魚直播源的時候,搜到了一個帖子(點擊進入原貼).我按照樓主的方法試了一下用手機端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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM