免费玩转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域名在国内访问不稳定,绑定自己的域名是必须的)。
登录 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 镜像核心代码 完整复制粘贴进去:
步骤 4:保存并部署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}`;
}
代码粘贴好后,点击右上角的 “部署” (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.xml2. DIYP 类播放器 / 影视壳
http://epg.你的域名.com3. 测试单频道节目表(浏览器直接访问测试)
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 边缘计算,这个项目都是绝佳的练手实践!
赶紧动手搭一个,让你的播放器告别“盲看”吧!
觉得文章有用的话,别忘了给星哥点个 “赞” 和 “在看”,你的支持是我持续更新的最大动力!我们下期见!
(本文技术思路源自恩山无线论坛,星哥进行了重新梳理与代码优化,仅供技术交流与学习使用。)
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.