iptv-proxy 电子节目单(EPG)代理教程:player_api.php 与 xmltv.php 完整接入

📅 2026/8/19 18:44:09
iptv-proxy 电子节目单(EPG)代理教程:player_api.php 与 xmltv.php 完整接入
iptv-proxy 电子节目单EPG代理教程player_api.php 与 xmltv.php 完整接入【免费下载链接】iptv-proxyReverse proxy on iptv m3u and m3u8 file and xtream codes client api项目地址: https://gitcode.com/gh_mirrors/ip/iptv-proxy很多 IPTV 用户在把 Xtream Codes 源接入播放器时都会遇到同一个痛点节目单EPG对不上、频道名对不上、账号密码暴露在公网。而 iptv-proxy 正是解决这些问题的开源 EPG 代理神器。本文是一篇面向新手的iptv-proxy 电子节目单EPG代理教程带你彻底搞懂player_api.php与xmltv.php两个关键接口的接入方法让 TiviMate、IPTV Smarters 等播放器轻松识别你的代理源。iptv-proxy 是一个用 Go 编写的 IPTV 反向代理它既能代理 m3u / m3u8 播放列表也能完整代理Xtream Codes 客户端 API包括直播、点播、剧集以及完整的 EPG 节目单。它的核心价值在于上游账号密码被隐藏所有流媒体与节目单请求都经过代理转发你只需要把代理地址分发给用户即可。为什么需要 EPG 代理先搞清楚「EPG」是什么。EPGElectronic Program Guide电子节目单就是电视节目预告播放器靠它显示「现在播什么、接下来播什么」。Xtream Codes 源通常通过两个接口提供 EPG接口作用返回格式player_api.php账号信息、频道列表、EPG 数据查询JSONxmltv.php全量节目单文件XML直接把这些原始接口发给用户有三大隐患上游账号密码泄露、域名直连被风控、节目单接口被滥用。通过iptv-proxy EPG 代理后用户只能看到你的代理地址完全接触不到上游信息这就是它最大的价值点。iptv-proxy 快速部署两条路任选方式一Docker 一键部署推荐新手仓库根目录自带 docker-compose.yml编辑其中的环境变量即可environment: M3U_URL: /root/iptv/iptv.m3u PORT: 8080 HOSTNAME: localhost # Xtream Codes 代理配置EPG 代理的关键 XTREAM_USER: xtream_user # 上游账号 XTREAM_PASSWORD: xtream_password # 上游密码 XTREAM_BASE_URL: http://example.tv:8080 # 对外暴露的新账号播放器填这个 USER: test PASSWORD: testpassword然后执行启动命令docker-compose up -d方式二二进制 / 源码运行想自己编译先拉取仓库git clone https://gitcode.com/gh_mirrors/ip/iptv-proxy再按以下参数启动所有配置项见 cmd/root.goiptv-proxy --m3u-url http://上游地址:端口/get.php?usernameuserpasswordpasstypem3u_plusoutputm3u8 \ --port 8080 \ --hostname proxy.example.com \ --xtream-user xtream_user \ --xtream-password xtream_password \ --xtream-base-url http://上游地址:端口 \ --user test \ --password testpassword启动后player_api.php、xmltv.php等接口就自动在代理地址上生效了。完整的路由清单定义在 pkg/server/routes.go。player_api.php 接入从账号登录到 EPG 查询player_api.php是 Xtream Codes 客户端的「总入口」播放器登录、拉频道、查节目单都走它。iptv-proxy 对它的代理逻辑封装在 pkg/server/xtreamHandles.go而 action 的具体转发实现位于 pkg/xtream-proxy/xtream-proxy.go。第一步认证方式代理后的player_api.php支持两种认证GET 请求?usernametestpasswordtestpasswordaction...参数放 URL 上POST 请求username和password放在表单 Body 里部分 Android 播放器习惯用 POST两种方式对应源码中的c.authenticate与c.appAuthenticate两个中间件。第二步登录接口action 缺省播放器首次连接时不带action参数请求就会触发默认的login 逻辑。它返回user_info和server_info两部分而server_info中的url、port会被自动替换成你的代理地址——播放器拿到后后续所有流地址都会指向代理完美隐藏上游{ user_info: { username: test, password: testpassword, exp_date: 1735689600, ... }, server_info: { url: proxy.example.com, port: 8080, https_port: 8080, ... } }第三步EPG 相关 action 一览iptv-proxy 完整支持下列 Xtream Codes action其中加粗的两个是 EPG 代理的核心action用途必需参数get_live_categories直播分类无get_live_streams直播频道列表category_id可选get_vod_categories点播分类无get_vod_streams点播列表category_id可选get_vod_info点播详情vod_idget_series_categories剧集分类无get_series剧集列表category_id可选get_series_info剧集详情series_idget_short_epg短节目单近几集stream_idlimit可选get_simple_data_table完整节目单stream_id完整 EPG 查询示例http://proxy.example.com:8080/player_api.php?usernametestpasswordtestpasswordactionget_simple_data_tablestream_id12345短节目单查询示例limit 控制返回条数不传默认返回接下来 4 条http://proxy.example.com:8080/player_api.php?usernametestpasswordtestpasswordactionget_short_epgstream_id12345limit8返回的 JSON 中包含epg_listings数组每个节目含title、start_timestamp、stop_timestamp等字段播放器据此绘制节目时间轴。xmltv.php 接入全量节目单的终极方案相比player_api.php的按频道查询xmltv.php一次返回全部频道的完整节目单XML 格式适合需要整表导入的场景比如接入 Emby、Jellyfin 或 TiviMate 的 EPG 源设置。代理后的请求非常简单http://proxy.example.com:8080/xmltv.php?usernametestpasswordtestpasswordiptv-proxy 会请求上游的xmltv.php并把原始 XML 原样回传Content-Type: application/xml逻辑见 pkg/server/xtreamHandles.go。也就是说播放器层面你完全不需要改动只是把地址换成代理地址即可。在 TiviMate 中配置示例打开 TiviMate → 设置 → Xtream Codes 播放列表服务器地址填http://proxy.example.com:8080用户名 / 密码填代理侧账号test/testpassword导入完成后节目单数据会自动通过player_api.phpxmltv.php拉取 ✅验证代理是否生效3 个快速检查部署完成后用浏览器或 curl 验证这几个地址# 1. 登录接口是否返回代理地址 curl http://localhost:8080/player_api.php?usernametestpasswordtestpassword # 2. 完整 EPG 是否返回 JSON 节目单 curl http://localhost:8080/player_api.php?usernametestpasswordtestpasswordactionget_simple_data_tablestream_id1 # 3. xmltv.php 是否返回 XML curl http://localhost:8080/xmltv.php?usernametestpasswordtestpassword如果登录接口的server_info.url显示的是你的代理域名说明iptv-proxy EPG 代理已完全生效 。进阶技巧HTTPS、缓存与自定义路径HTTPS 支持在 docker-compose.yml 中设置HTTPS: 1配合 Traefik仓库 traefik/ 目录提供完整配置即可让代理链接自动变成https://。EPG 缓存m3u 列表默认缓存 1 小时可用--m3u-cache-expiration调整减少对上游的频繁请求见 cmd/root.go。自定义入口路径通过--custom-endpoint可以把所有接口挂在统一前缀下方便与现有域名共存。m3u 文件代理EPG 之外iptv-proxy 还能把 m3u 里的频道地址全部改写为代理地址配合tvg-id标签与 EPG 完美对应详见 README.md。结语通过 iptv-proxy你可以在不暴露上游任何凭据的前提下把完整的 Xtream Codes 生态——直播、点播、剧集、player_api.php、xmltv.php——安全地代理给任意数量的播放器。无论你是给家人朋友分享源还是搭建自己的私人 IPTV 服务这套iptv-proxy EPG 代理接入方案都值得一试。现在就 clone 仓库跑起来吧【免费下载链接】iptv-proxyReverse proxy on iptv m3u and m3u8 file and xtream codes client api项目地址: https://gitcode.com/gh_mirrors/ip/iptv-proxy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考