You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python重放IHeartRadio电台URL:捕获有效URL遇阻求助

如何捕获当前版本IHeartRadio的可重放电台流URL

解决思路:绕过TLS解密+定位API流地址

新版IHeartRadio的流量加密逻辑和接口结构已经更新,老抓包规则不再适用,你可以按以下步骤操作:

  • 第一步:解密TLS流量
    不管用Fiddler还是Burp,必须把工具的根证书安装到设备(或模拟器)的系统信任证书列表里,否则只能看到加密的TLS握手包,拿不到明文请求内容:

    • Fiddler:通过Tools > Options > HTTPS导出证书,安装到系统/手机信任区
    • Burp:导出CA证书后完成信任配置
  • 第二步:精准过滤流媒体请求
    启动抓包工具后打开目标电台播放,用以下规则定位关键请求:

    • 抓包过滤器: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}就是电台的唯一标识(多为数字或字符串组合)
  • 第四步:直接调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 15:43:31