目標頁面:https://www.lizhi.fm/#/25734/20075765977745926
直接查看頁面源碼找不到音頻鏈接,但 Chrome DevTools Network 面板可見真實 MP3 地址:
https://cdn.lizhi.fm/audio/2015/05/16/20075765977745926_hd.mp3
現代網站普遍採用前端渲染或動態加載:
data-* 屬性、JSON 數據或 JavaScript 變量中audio、track、play 關鍵字)<div data-url="...mp3">window.__INITIAL_STATE__ = {...} 或 var trackData = {...}// 1. 獲取頁面 HTML
String html = HttpClientUtil.get(pageUrl);
// 2. 提取內聯 JSON 數據
Pattern p = Pattern.compile("window\\.__INITIAL_STATE__\\s*=\\s*(\\{.*?\\});", Pattern.DOTALL);
Matcher m = p.matcher(html);
if (m.find()) {
String jsonStr = m.group(1);
JSONObject json = JSON.parseObject(jsonStr);
// 遍歷提取 audioUrl
}
// 3. 或直接請求 API 接口(需分析參數)
String apiUrl = "https://www.lizhi.fm/api/xxx?trackId=20075765977745926";
String apiResp = HttpClientUtil.get(apiUrl);
JSONObject data = JSON.parseObject(apiResp).getJSONObject("data");
String audioUrl = data.getString("url");
WebDriver driver = new ChromeDriver();
driver.get(pageUrl);
// 等待 JS 執行完成
WebElement audioEl = driver.findElement(By.cssSelector("audio[src]"));
String audioUrl = audioEl.getAttribute("src");
driver.quit();
根據經驗,荔枝 FM 的音頻鏈接通常在:
<script> 標籤中的 data-url 或 JSON 變量/api/audio/... 或 /track/...建議步驟:
data-url 屬性.mp3 關鍵字定位腳本數據track 相關 XHR 請求User-Agent、Referer核心原則:瀏覽器能看到的數據,Java 通過分析網絡請求或執行 JS 同樣能獲取。