廢話
電腦使用谷歌瀏覽器或者QQ瀏覽器的時候。。。。。。。說不清楚,還是看圖吧
大概意思就是,只要網頁上需要播放,只要能播放並且開始播放,這個過程就肯定會請求到相關的音樂資源,然後就可以拿到下載地址了。
當然,問題也有,1是防盜鏈,下載地址肯定是有時效的,但影響不大,2是清晰度,這個應該沒得挑了,標清無疑,3是全自動問題,偶然打開網頁的源代碼,看到了“禁止js模擬點擊等字樣的註釋”,預測是有相關防護操作,具體也懶得測試了,就假設不能全自動。
整體解決方案用一句廢話來形容就是“音樂一響,黃金萬兩”。。。。。。。。
解決思路
其實邏輯很簡單,就是在頁面上嵌套一個WebView,然後打開音樂網站,由用戶自由操作,只需要監聽WebView訪問的所有的url即可,這樣的話,只要用戶操作一下播放,音樂一響,url裏面肯定會有一條是這個音樂的臨時資源地址,就是帶有.mp3或者是.m4a的url,這個就是我們想要的。。。
其他注意事項
Android原生的WebView播放不了網易雲音樂,其他的我也就沒試了,就假設都播放不了的,解決方案:找個第三方的WebView的升級版,一抓一大把吧,然後就找到了這個:AdvancedWebView
傳送門:https://github.com/delight-im/Android-AdvancedWebView
用法與WebView基本無二,就不多廢話了,核心代碼在一段:
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
ALog.e("訪問的URL1:" + request.getUrl());
if(request.getUrl().toString().indexOf("orpheus")>=0){
ALog.e("屏蔽跳轉");
return true;
}
return false;
}
});
wv.loadUrl("https://y.qq.com");
屏蔽跳轉這裏主要是網易雲音樂會自動嘗試調起app,這個是禁止的,否則播放的時候就會顯示無法訪問了,而這個“orpheus”就是調起網易APP的暗號,QQ音樂也會有對應的暗號,但是QQ音樂沒有強制調起,所以就懶得理了。
所以,在所有打印出來的url中找到.mp3結尾或者.m4a等結尾的url,那就是下載地址了,原理就是迅雷的嗅探視頻是一個道理。