共计 3360 个字符,预计需要花费 9 分钟才能阅读完成。
免费玩转 Cloudflare-08:用 Cloudflare 搭建你的专属 EPG 节目单接口
哈喽大家好,我是 星哥。玩 IPTV 和直播源的朋友都知道,没有 EPG(Electronic Program Guide 电子节目单)的直播是没有灵魂的。
看着黑乎乎的播放界面,连当前在播什么、下一集是什么都不知道,体验直接大打折扣。
很多小伙伴想自己搭个 EPG 服务,但一听说要买 VPS、配环境、搞数据库,瞬间就劝退了。
今天星哥教大家一招 “白嫖”大法 : 无需服务器、无需买 VPS,只需一个 Cloudflare 账号,几分钟就能搭建一个属于你自己的 112114 镜像 EPG 接口!

课前科普:为什么选 Cloudflare Workers?
在开始动手前,星哥先简单给大家科普一下今天的主角。
Cloudflare 大家应该不陌生了,全球顶级的 CDN 和安全服务商。而我们要用的 Workers,是它提供的一种“无服务器(Serverless)”边缘计算服务。
通俗点说: 你只需要写几行 JavaScript 代码,Cloudflare 就会把它运行在全球各地的边缘节点上。
- • 不用管服务器:不用装系统、不用配环境。
- • 速度飞快:代码在全球节点运行,延迟极低。
- • 免费额度够用:免费版每天有 10 万次 请求额度,个人当 EPG 接口用,简直绰绰有余!
保姆级部署教程
准备工作
- 1. 注册一个 Cloudflare 账号免费。
- 2. 准备一个 自己的域名,并将其 DNS 托管到 Cloudflare(因为 CF 默认分配的
workers.dev域名在国内访问不稳定,绑定自己的域名是必须的)。
步骤 1:进入 Workers 控制台
登录 Cloudflare 后台,在左侧菜单栏找到并点击 “计算和 AI”(Compute & AI) -> “Workers 和 Pages”(Workers & Pages)。

步骤 2:创建 Worker 应用
- 1. 点击右上角的 “创建应用程序”(Create application)。
- 2. 选择 “从 Hello World! 开始”(Create Worker)。
- 3. 给你的 Worker 起个名字,比如
my-epg或diyp-epg,然后点击 “部署”(Deploy)。(此时 CF 会帮你生成一个默认的示例项目)
点击部署
步骤 3:注入 EPG 核心代码
- 1. 部署完成后,点击右上角的 “编辑代码”(Edit code)。
- 2. 将左侧编辑器里的默认代码 全部删除。
- 3. 把下面这段星哥为大家准备好的 EPG 镜像核心代码 完整复制粘贴进去:
addEventListener('fetch', event => {event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {const url = new URL(request.url);
// 目标镜像源:112114 EPG
let originalUrl = 'http://epg.112114.xyz' + url.pathname + url.search;
// 如果 URL 后参数为空,则设置默认参数为当前日期(上海时区)和默认频道 CCTV1
if (url.search === '') {originalUrl += `?ch=CCTV1&date=${getCurrentDateInShanghaiTimezone()}`;
}
const response = await fetch(originalUrl);
const {status, statusText, headers} = response;
const body = await response.arrayBuffer();
// 根据请求 URL 是否包含 ".xml" 自动设置响应的 Content-Type
const contentType = url.pathname.includes('.xml') ? 'text/xml' : 'application/json';
return new Response(body, {
status,
statusText,
headers: {
...headers,
'Content-Type': contentType,
'Access-Control-Allow-Origin': '*', // 允许跨域,方便各类播放器调用
},
});
}
// 获取当前日期,格式为 yyyy-MM-dd,以上海时区(UTC+8:00)为准
function getCurrentDateInShanghaiTimezone() {const dateObj = new Date();
dateObj.setHours(dateObj.getHours() + 8);
const year = dateObj.getFullYear();
const month = ('0' + (dateObj.getMonth() + 1)).slice(-2);
const day = ('0' + dateObj.getDate()).slice(-2);
return `${year}-${month}-${day}`;
}
步骤 4:保存并部署
代码粘贴好后,点击右上角的 “部署”(Deploy) -> “保存并部署”(Save and Deploy)。看到下方出现绿色的成功提示,你的 EPG 核心逻辑就上线啦!🎉
步骤 5:绑定自定义域名(关键!)
前面说了,CF 默认域名国内不好访问,所以必须绑定自己的域名。
- 1. 在 Worker 设置页面,找到 “设置”(Settings) -> “域和路由”(Domains & Routes)。
- 2. 点击 “添加”(Add) -> 选择 “自定义域”(Custom Domain)。
- 3. 输入你的子域名,比如
epg. 你的域名.com,然后保存。 - 4. 等待 DNS 解析生效(通常几分钟)。

播放器接入指南
电视节目预告数据,本身不能直接播放视频;你需要直播源(m3u/m3u8)+ 支持 EPG 的播放器,把这个 xml 地址填进播放器的节目指南栏,才能显示节目时间表。
绑定好域名后,你的专属 EPG 接口就诞生了!假设你的域名是 epg. 你的域名.com,以下是不同播放器的接入地址:

1. XML 格式(适合 Kodi、OK 影视、酷 9、TiviMate 等)
https://epg. 你的域名.com/pp.xml
2. DIYP 类播放器 / 影视壳
http://epg. 你的域名.com
3. 测试单频道节目表(浏览器直接访问测试)
https://epg. 你的域名.com/?ch=CCTV14&date=2026-06-29
(把 CCTV14 换成你想查的频道拼音或名称,日期换成 yyyy-MM-dd 格式)

星哥温馨提示
虽然这个方案很香,但有几个注意事项大家一定要看:
- 1. 免费额度限制 :Cloudflare 免费版每天限制 10 万次请求。个人家庭使用绝对够,但 千万不要把接口公开分享到大群或论坛,否则一旦被刷爆,你的账号可能会被限制。
- 2. 默认参数:代码里设置了默认频道为
CCTV1,默认日期为当天(上海时区)。如果你不传参数,它就会返回 CCTV1 当天的节目单。 - 3. 格式自适应:代码做了智能判断,请求
.xml后缀就返回 XML 格式,否则返回 JSON 格式,完美兼容各种播放器。 - 4. 扩容方案:如果以后你的 IPTV 圈子做大了,10 万次不够用,可以在 CF 后台开启 Worker 的付费计划(按量计费,非常便宜)。
总结
通过 Cloudflare Workers,我们完美实现了 “零服务器、零成本、高可用” 的 EPG 接口搭建。
无论你是 IPTV 直播源爱好者,想给自己的电视盒子做个漂亮的节目单;
还是单纯想学习一下 Serverless 边缘计算,这个项目都是绝佳的练手实践!
赶紧动手搭一个,让你的播放器告别“盲看”吧!
觉得文章有用的话,别忘了给星哥点个 “赞” 和 “在看”,你的支持是我持续更新的最大动力!我们下期见!👋
(本文技术思路源自恩山无线论坛,星哥进行了重新梳理与代码优化,仅供技术交流与学习使用。)






