免费玩转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 接口用,简直绰绰有余!

保姆级部署教程

准备工作

  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-epgdiyp-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 边缘计算,这个项目都是绝佳的练手实践!

赶紧动手搭一个,让你的播放器告别“盲看”吧!

觉得文章有用的话,别忘了给星哥点个“赞”“在看”,你的支持是我持续更新的最大动力!我们下期见!👋

(本文技术思路源自恩山无线论坛,星哥进行了重新梳理与代码优化,仅供技术交流与学习使用。)