Python重放IHeartRadio电台URL:捕获有效URL遇阻求助
如何捕获当前版本IHeartRadio的可重放电台流URL
解决思路:绕过TLS解密+定位API流地址
新版IHeartRadio的流量加密逻辑和接口结构已经更新,老抓包规则不再适用,你可以按以下步骤操作:
第一步:解密TLS流量
不管用Fiddler还是Burp,必须把工具的根证书安装到设备(或模拟器)的系统信任证书列表里,否则只能看到加密的TLS握手包,拿不到明文请求内容:- Fiddler:通过
Tools > Options > HTTPS导出证书,安装到系统/手机信任区 - Burp:导出CA证书后完成信任配置
- Fiddler:通过
第二步:精准过滤流媒体请求
启动抓包工具后打开目标电台播放,用以下规则定位关键请求:- 抓包过滤器:
http contains "m3u8"或http.request.uri contains "stream"
新版流地址域名多为stream.iheart.com或cdn.iheart.com这类,重点关注返回内容是m3u8播放列表的GET请求。
- 抓包过滤器:
第三步:获取电台唯一ID
若找不到直接的流请求,先打开网页版IHeartRadio的目标电台,在浏览器开发者工具Network面板:- 过滤XHR请求,找包含
station的接口(比如/api/v1/stations/{ID}),这里的{ID}就是电台的唯一标识(多为数字或字符串组合)
- 过滤XHR请求,找包含
第四步:直接调用API获取流地址
拿到电台ID后,模拟官方APP的请求头构造API请求(避免被拦截):import requests station_id = "你的目标电台ID" headers = { "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 iHeartRadio/10.1.0", "Accept": "application/json" } url = f"https://api.iheart.com/api/v1/stations/{station_id}/streams" response = requests.get(url, headers=headers) streams = response.json() # 取可用的HLS流地址 play_url = streams['hls_stream']接口会返回不同码率的流地址,直接用
play_url就能在你的Python重放代码中使用。
注意事项
- 部分电台有地域限制,需要搭配对应地区的IP,或在请求头添加
X-Forwarded-For模拟地区IP User-Agent尽量使用官方APP的标识,降低被接口拦截的概率
内容的提问来源于stack exchange,提问作者Bigbear
相关产品推荐
相关产品推荐

