免费玩转Cloudflare-08:用Cloudflare搭建你的专属 EPG 节目单接口
免费玩转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 接口用,简直绰绰有余!
保姆级部署教程
准备工作
- 注册一个 Cloudflare 账号免费。
- 准备一个自己的域名,并将其 DNS 托管到 Cloudflare(因为 CF 默认分配的
workers.dev域名在国内访问不稳定,绑定自己的域名是必须的)。
步骤 1:进入 Workers 控制台
登录 Cloudflare 后台,在左侧菜单栏找到并点击“计算和 AI” (Compute & AI)->“Workers 和 Pages” (Workers & Pages)。
步骤 2:创建 Worker 应用
- 点击右上角的“创建应用程序” (Create application)。
- 选择“从 Hello World! 开始” (Create Worker)。
- 给你的 Worker 起个名字,比如
my-epg或diyp-epg,然后点击“部署” (Deploy)。(此时 CF 会帮你生成一个默认的示例项目)
点击部署
步骤 3:注入 EPG 核心代码
- 部署完成后,点击右上角的“编辑代码” (Edit code)。
- 将左侧编辑器里的默认代码全部删除。
- 把下面这段星哥为大家准备好的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 默认域名国内不好访问,所以必须绑定自己的域名。
- 在 Worker 设置页面,找到“设置” (Settings)->“域和路由” (Domains & Routes)。
- 点击“添加” (Add)-> 选择“自定义域” (Custom Domain)。
- 输入你的子域名,比如
epg.你的域名.com,然后保存。 - 等待 DNS 解析生效(通常几分钟)。
播放器接入指南
电视节目预告数据,本身不能直接播放视频; 你需要直播源(m3u/m3u8)+ 支持 EPG 的播放器,把这个 xml 地址填进播放器的节目指南栏,才能显示节目时间表。
绑定好域名后,你的专属 EPG 接口就诞生了!假设你的域名是epg.你的域名.com,以下是不同播放器的接入地址:
1. XML 格式(适合 Kodi、OK影视、酷9、TiviMate 等)
https://epg.你的域名.com/pp.xml2. DIYP 类播放器 / 影视壳
http://epg.你的域名.com3. 测试单频道节目表(浏览器直接访问测试)
https://epg.你的域名.com/?ch=CCTV14&date=2026-06-29(把 CCTV14 换成你想查的频道拼音或名称,日期换成 yyyy-MM-dd 格式)
星哥温馨提示
虽然这个方案很香,但有几个注意事项大家一定要看:
- 免费额度限制:Cloudflare 免费版每天限制10 万次请求。个人家庭使用绝对够,但千万不要把接口公开分享到大群或论坛,否则一旦被刷爆,你的账号可能会被限制。
- 默认参数:代码里设置了默认频道为
CCTV1,默认日期为当天(上海时区)。如果你不传参数,它就会返回 CCTV1 当天的节目单。 - 格式自适应:代码做了智能判断,请求
.xml后缀就返回 XML 格式,否则返回 JSON 格式,完美兼容各种播放器。 - 扩容方案:如果以后你的 IPTV 圈子做大了,10 万次不够用,可以在 CF 后台开启 Worker 的付费计划(按量计费,非常便宜)。
总结
通过 Cloudflare Workers,我们完美实现了“零服务器、零成本、高可用”的 EPG 接口搭建。
无论你是 IPTV 直播源爱好者,想给自己的电视盒子做个漂亮的节目单;
还是单纯想学习一下 Serverless 边缘计算,这个项目都是绝佳的练手实践!
赶紧动手搭一个,让你的播放器告别“盲看”吧!
觉得文章有用的话,别忘了给星哥点个“赞”和“在看”,你的支持是我持续更新的最大动力!我们下期见!👋
(本文技术思路源自恩山无线论坛,星哥进行了重新梳理与代码优化,仅供技术交流与学习使用。)
