前天在網上搜抓取鬥魚直播源的時候,搜到了一個帖子(點擊進入原貼).我按照樓主的方法試了一下用手機端X瀏覽器抓取直播源(用pc端的安卓模擬器實現的),而後按照樓主的思路解析了一下地址,發現大部分直播間仍是有效果的,而後就用java寫了個小程序,實現了這個簡單的功能。php
另外,除了樓主說的這種抓取方式,還能夠用chrome或者firefox瀏覽器的F12抓源,以chrome爲例,把調試終端調成手機模式,在network裏 把size降序排列,那個一直在返回響應不斷增大的就是直播源,測試了好屢次,鬥魚的直播源很怪,有時候抓取到的是能夠直接在potplayer裏播放的,但絕大多數是加密的,並且加密的形式也有區別,這個工具目前只支持兩種格式的解析,這兩種已經能支持多數直播間了,但部分直播間的地址仍是沒法正確解析。
另外,某些直播間利用chrome的12直接抓取獲取到的源後綴是.xs的,這種有的也是能夠直接播放的.html
利用這個工具解析獲得的直播源,能夠直接在potplayer裏播放,不用再看直播間裏亂七八糟的廣告、彈幕、禮物啦。java
經過測試,抓取的直播源的格式各類各樣的都有,因此解析方式確定也各不相同,若是你們發現了其餘的解析方式,能夠在本貼下留言,我也會及時更新工具的解析方法。chrome
下面附上下載:小程序
連接:https://pan.baidu.com/s/1w9OXikdYP19_lX0cdOOb8A
提取碼:al2l瀏覽器
使用介紹:
1.從chrome或firefox的調試模式獲取加密直播源
2.使用工具解析該地址
3.獲取真實直播源
4.potplayer中打開解析獲得的真實直播源
5.實如今播放器裏收看直播
ide
源碼:工具
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#pid26083386this