白嫖全球 TV:一行命令搭建私有 IPTV 直播源管理器
📅 2026-03-28 | 🏷️ #全球IPTV #IPTV实战 #iptv-scraper #Docker #自动化 | 🐴 赛博牛马出品
文章系列:[全球 IPTV 直播源实战系列①]
一、前言
上周想看个香港新闻频道,打开收藏了两周的 IPTV 播放列表——
此频道无法播放
此频道无法播放
此频道无法播放三个红叉,一个能看的都没有。
这大概是每个 IPTV 玩家都经历过的日常。满世界找源、群里跪求分享、存到本地文档里……结果不是源挂了,就是速度慢成 PPT。最后只能安慰自己:"凑合看吧。"
问题不在源本身,而在于没有人帮你持续维护。
今天介绍的这套方案,用 Docker + iptv-scraper 搭建一个私有 IPTV 直播源管理器,支持抓取全球 100+ 国家的频道,自动测速、自动过滤、自动去重,还能自动注入台标。源挂了?系统每天自动换一批新的,完全不用你管。
二、原理介绍
IPTV 播放原理
IPTV 的播放原理其实很简单。你只需要两个东西:
m3u8 播放列表文件:记录了频道名称和对应的视频流地址
支持流媒体的播放器:如 VLC、NPlayer、IPTV Pro
一个典型的 m3u8 文件内容大概长这样:
#EXTINF:-1 tvg-name="ViuTV" tvg-logo="https://example.com/viutv.png",ViuTV 超清
https://stream.example.com/viutv/live.m3u8播放器读取这个列表,把视频流地址交给解码器解码,就能在屏幕上播出画面了。整个链路是:m3u8 列表 → 播放器 → 解码 → 屏幕。
iptv-scraper 工作流程
那么 iptv-scraper 做了什么?它的完整工作流程是这样的:
① 抓取全球源 → ② 验证去重 → ③ 速度测试 → ④ 台标注入 → ⑤ 输出 m3u
第一步:抓取全球源。 iptv-scraper 从 GitHub 上公开的 IPTV 源列表中抓取频道,支持 100+ 国家和地区,包括香港、台湾、日本、韩国、东南亚、欧美、中东等地区。
第二步:验证去重。 合并所有来源,剔除重复频道,规范化频道名称。
第三步:速度测试。 用 curl 下载视频流的前 512KB,计算实时带宽,自动过滤掉速度低于阈值(默认 500KB/s)的卡顿源。
第四步:台标注入。 自动匹配频道台标 URL,注入到 m3u 文件,让播放列表看起来更专业。
第五步:输出 m3u。 生成 all_merged.m3u 和按地区分类的 m3u 文件,直接导入播放器使用。
整个过程完全自动化,无需人工干预。

三、环境准备
在开始之前,你需要确保 Docker 已经安装在你的机器上。以下是几种常见环境的安装方式:
iptv-scraper 对硬件要求很低,1 核 1G 足以运行,但建议在网络条件较好的服务器上部署,速度测试结果会更准确。
如果你已经有《Docker 系列》里搭建好的环境,可以直接跳过这一步。
四、核心部署
步骤 1:克隆项目
git clone https://github.com/xJEYDAin/iptv-scraper.git
cd iptv-scraper目录结构如下:
iptv-scraper/
├── main.py # 主程序入口
├── config.py # 配置文件
├── requirements.txt # Python 依赖
├── sources/ # 原始源目录(抓取后存放)
├── filtered/ # 过滤后数据
├── cache/ # 缓存目录(测速缓存/验证缓存)
├── output/ # 最终输出目录
│ ├── all_merged.m3u # 全球合集
│ ├── asia.m3u # 亚洲频道
│ ├── europe.m3u # 欧洲频道
│ └── ...
├── alias.txt # 频道别名映射表
├── logo_map.py # 台标映射规则
└── docker-compose.yml # Docker 部署文件

步骤 2:配置环境变量
创建一个 .env 文件,填入以下关键配置:
# 最低速度阈值(KB/s),低于此速度的频道会被过滤
MIN_SPEED_KB=500
# 是否启用速度测试(1=启用,0=跳过)
ENABLE_SPEEDTEST=1
# 速度测试超时时间(秒)
SPEEDTEST_TIMEOUT=10
# 按国家过滤(留空则抓取所有国家)
# 例如:COUNTRIES=HK,TW,JP,KR
COUNTRIES=
# GitHub Actions 模式下自动提交结果
GITHUB_ACTIONS=false速度阈值 MIN_SPEED_KB=500 的含义是:每秒传输速率低于 500KB 的频道会被自动过滤。这个数值可以按需调整——如果你网络较好,可以降到 300KB 保留更多频道;如果觉得卡顿明显,可以提高到 800KB 甚至 1000KB。
步骤 3:运行抓取
方式一:Docker 一键启动(推荐)
docker-compose upDocker Compose 会自动安装 Python 环境和所有依赖,全程无需手动配置。
方式二:本地直接运行
pip install -r requirements.txt
python main.py首次运行会从 GitHub 下载源列表并开始测速,整个过程大概需要 5~15 分钟(取决于网络和频道数量)。运行日志会实时输出到终端:
[INFO] 正在抓取全球源...
[INFO] 发现 1247 个频道来源
[INFO] 开始速度测试...
[TEST] ViuTV HD ............ 2567 KB/s ✅
[TEST] TVB Pearl ........... 1892 KB/s ✅
[TEST] NHK World ........... 345 KB/s ❌ 低于阈值
[INFO] 测速完成:312 通过 / 89 失败 / 超时 23
[INFO] 正在生成 all_merged.m3u...
[INFO] ✅ 完成!共 312 个可用频道步骤 4:获取 m3u 文件
抓取完成后,在 output/ 目录下会生成以下文件:
通过局域网访问或上传到服务器,即可获取稳定的 m3u 链接。
五、VLC 播放验证
拿到 m3u 文件后,用 VLC 导入播放列表即可验证效果。
电脑端 VLC(Windows / macOS / Linux):
打开 VLC → 菜单栏
媒体→打开文件选择下载的
all_merged.m3u文件点击"播放"
手机端 VLC(iOS / Android):
下载 m3u 文件到本地
用 VLC 打开该文件
VLC 会自动解析频道列表
Android TV 端(IPTV Pro):
安装 IPTV Pro
添加播放列表 → 选择
从 URL 导入填入 m3u 的 URL 地址(需要 HTTP 服务)

用 VLC 打开后,你会看到带台标的频道列表,点哪个看哪个,完全不需要再满世界找源了。
六、GitHub Actions 自动更新
手动运行虽然简单,但如果想彻底躺平,还需要让程序每天自动跑、自动更新 GitHub 上的 m3u 文件。
Fork 并配置
Fork 项目 到自己的 GitHub 账号
开启 Actions 功能(默认启用)
编辑
.env文件,设置GITHUB_ACTIONS=true
定时任务配置
项目内置的 GitHub Actions workflow 在 .github/workflows/scrape.yml,默认每天凌晨 3 点自动运行:
schedule:
- cron: '0 3 * * *' # 每天 UTC 3:00 = 北京时间 11:00如果想改成每 12 小时运行一次,改为:
schedule:
- cron: '0 */12 * * *'权限配置
首次运行时,Actions 可能因为没有写权限而失败。需要在 GitHub仓库设置中开启:
Settings → Actions → General → Workflow permissions → 勾选 "Read and write permissions"

启用后,每天凌晨 3 点 GitHub Actions 会自动: 1. 拉取最新源列表 2. 全部频道跑一遍速度测试 3. 生成新的 m3u 文件 4. 自动提交并推送到 GitHub
你只需要把 GitHub 上的 m3u 文件地址配置到播放器里,从此以后,源会自动更新,完全不用管。
七、进阶配置预告
上面的基础配置已经能稳定运行了,但 iptv-scraper 还有不少进阶玩法,下一篇文章会深入展开:
别名映射表(alias.txt)
同一个频道在不同源里名字可能不一样,比如"香港无线新闻台"可能叫 TVB News,也可能叫 TVB-N。用 alias.txt 可以把这些不同名字统一映射到一个标准名称:
TVB News,TVB-N,TVBN,无线新闻 → TVB新闻
ViuTV,Viu TV,ViuTV超清 → ViuTV台标映射(logo_map.py)
默认会从 CDN 抓取台标,但如果某些频道台标匹配不上,可以手动在 logo_map.py 里补充规则,支持精确匹配、前缀匹配、模糊包含三种模式。
地区分类精细化
output/ 下虽然有 asia.m3u、europe.m3u 等分类,但你也可以在 config.py 里自定义地区分组,只保留自己想要的频道。
这些进阶配置在系列第二篇《IPTV 源总是不稳定?我写了一个自动测速过滤系统》里会详细讲解。
八、总结
用 iptv-scraper 搭建的这套 IPTV 直播源管理系统,核心优势就四个字:躺平稳定。
✅ 自动化:GitHub Actions 每天自动抓取、自动测速、自动更新
✅ 全球覆盖:100+ 国家频道,港澳台/日韩/东南亚/欧美全覆盖
✅ 速度过滤:500KB/s 阈值自动过滤卡顿源,只保留流畅可看的
✅ 台标注入:自动匹配频道台标,播放列表专业好看
✅ 零成本:Docker 部署,完全免费,不需要买任何服务
系列后续会深入讲解:
📖 第二篇:测速模块设计 + 多线程缓存机制
📖 第三篇:VLC / IPTV Pro / 自建服务全对比
📖 第四篇:Jellyfin + IPTV Scraper 打造全球直播媒体中心
📖 第五篇:GitHub Actions 定时任务深度配置
📖 第六篇:树莓派低功耗方案
📖 第七篇:14 个免费台标资源站
📖 第八篇:最新可用全球 IPTV 直播源汇总(持续更新)
🐴 赛博牛马出品 | [全球 IPTV 直播源实战系列①]
💡 相关项目:iptv-scraper GitHub
评论区