IPTV抓包,内网融合,外网IPTV直播与回看
话说这篇文章得从22年说起,某天在b站刷到个alist的视频,阿里云盘302直链 那时挂载分享不限速,真乃神器也,然后拿起手里的AX5 JDC开始折腾,结果一发不可收拾,就有了接下来的湖南电信iptv内网融合。实现了在保留官方IPTV机顶盒原有功能的情况下,内外网环境手机安装app可看电视直播。
1.环境
硬件:京东云雅典娜、京东云Redmi AX5 JDC(openwrt固件)、电信官方IPTV机顶盒
网络:湖南电信公网ipv4
IOS:APTV,ntPlayer(可同时播放4个台,免费版广告多)
Android:DIYP、IPTV_Pro,Kodi
网络拓扑图2.IPTV数据抓取
抓包方法工具有很多如tcpdump或者端口镜像交换机,甚至还有网友自制网线工具,不管怎么样能抓到数据就行。我当时是用K2P高格里面的端口镜像,电脑端安装Wireshark,Win11需安装Win10Pcap软件,否则Wireshark无法发现本地以太网连接。软件配置好后打开iptv机顶盒电源开机,随便点个电视台直播,时移回看,首页点播,需要的数据就全部获取到了,关机吧。
iptv抓包数据从这英文字面意思聪明的你肯定已经知道是什么了吧,把这个http数据导出,然后用记事本类的软件打开 里面就有iptv的组播地址,正则表达式处理下,留下需要的台标、频道名称、rtp地址组合成m3u格式文件。把这http地址复制保存,后期在浏览器中访问就可以得到最新频道列表(需要路由规则走iptv口)比如这样:
频道列表数据用的SublimeText,查找
.*?callsign":"(.+?)".*?categoryId":"(.+?)".*?channelName":"(.+?)".*?channelNumber":"(.+?)".*?rtp://(.+?)".*?}
替换,192.168.31.2改成你自己ip地址,group-title需要依据categoryList对照手动修改下
#EXTINF:-1 tvg-id="$4" tvg-logo="$1",group-title="$2",$3nhttp://192.168.31.2/udp/$5n
iptv.m3u3.组播转发配置
湖南电信iptv是pppoe拨号,进入机顶盒设置获取账号和密码 用于ax5拨号;ax5 openwrt安装omcproxy(或igmpproxy) udpxy luci-app-udpxy。主路由lan连接ax5 lan(设置ip与主路由同网段),光猫iptv口连接ax5 wan口拨号,拨号成功即可获得10开头的内网地址;iptv官方机顶盒连接ax5 lan口,设置静态ip地址为主路由同网段,网关设置为ax5 ip地址。
方案一:ax5 wan拨号-高级设置-使用默认的网关跃点0,这样的好处是不管以后iptv后台数据怎么变,官方iptv机顶盒都能正常使用,弊端是ax5本机无法正常访问外网,部署在ax5上的alist、lucky等无法正常使用。推荐用闲置的k1、k2p、京东云一代之类的低性能路由专用来iptv代理。
方案二:ax5 wan拨号-高级设置-设置网关跃点数(跃点数越小优先级越高)这样的好处是ax5能正常访问外网,弊端是需要在ax5上配合抓取的iptv数据做静态路由规则,如果以后iptv后台数据变更,iptv官方机顶盒有可能无法正常使用。本文使用此方案
wan iptv拨号
wan 高级设置
omcproxy配置
msd_lite设置udpxy最好是弄个hotplug文件,防止wan口重拨后无法使用。关于msd_lite反向代理后403错误,需要在源码中注释掉host 后编译。
udpxy hotplug文件现在你可以开心的将m3u文件导入APTV等软件看直播电视了
卧槽~什么鬼!!!
怎么只能两个终端观看,我所在区域组播只能同时2个终端观看不同电视台直播,第3个终端只能看前2个终端正在看的电视台,系统限制了,不知道湖南电信iptv是否都这样。
我靠~这不坑爹么,折腾这么久白弄了???
莫慌~~~咱继续
4.单播与回看
还记得前面Wireshark抓包的时候说播放回看 点播么,可以找到回看等单播数据,这个没有终端数限制。
搜索GetPlayAddressById,你会看到类似这样的连接

beginTime和endTime分别为回放开始时间和结束时间,videoId是频道列表里的channelId值,这里65e48b2e8e6a4f73824fbbb44762e4c6是湖南卫视高清。在浏览器访问该链接会返回回看地址,UTC时间,+8小时就表示我们东八区的时间;红圈所示是频道列表里每个电视台的importId值。如果是方案一,复制这条链接就可以正常回看。方案二就算你把这个ip加入静态路由,还是不能播放
原因在这个链接服务器(负载均衡)后台会跳转到220.168.138.0/24的地址,端口6610。浏览器访问会下载index.m3u文件,并且每次地址可能不一样,记录下某个地址 后用lucky反代(220开头的)可以在外网观看iptv。
获取的回看地址放两个格式示例:
内网回看与反代回看直播与时移:IASHttpSessionId会话id,目前后台没有校验可以随便设置;zte_offset=0表示当前时间直播,zte_offset=600表示当前时间时移前10分钟开始;ispcode=2为直播,3是回看
单播内网直播与反代时移直播最后还需要在ax5上配置静态路由,把iptv机顶盒里的认证、ntp服务等地址加入,在启动项中加入:
echo 2 > /proc/sys/net/ipv4/conf/all/force_igmp_version
所在地电信iptv用的IGMPv2,不设置v2官方机顶盒直播黑屏,只能回看;一通折腾下来,现在官方iptv机顶盒就能开机通过认证 正常播放了。
静态路由单播m3u文件,频道列表数据 用SublimeText,查找
.*?callsign":"(.+?)".*?categoryId":"(.+?)".*?channelName":"(.+?)".*?channelNumber":"(.+?)".*?importId":"([0-9]+)".*?}
替换为:
#EXTINF:-1 tvg-id="$4" tvg-logo="$1",group-title="$2",$3nhttp://124.232.231.172:8089/000000002000/$5/index.m3u8?IASHttpSessionId=OTT&zte_offset=0&ispcode=2n
之后group-title需要依据categoryList对照手动修改,这样单播的m3u文件就整理好了。
单播m3u文件转diyp txt格式,用SublimeText,查找
.*?title="(.*)",(.*)s(.*) 替换 $1?$2,$3
diyp内网单播格式5.进阶&小技巧
虽然前面我们已经找到单播地址和回看规则,但是将单播文件导入APTV或diyp搭配EPG还是没有回看按钮,看到有大神分享可以在地址中加入TVOD让app显示回看按钮,这就需要用到PHP,所以临时抱佛脚看了点php基础。开搞~
5.1搭建PHP环境
ax5 在软件包中搜索安装php和php-cgi,我安装的是php8版本,然后修改/etc/php.ini文件,将输出缓存off改为 output_buffering = On,将doc_root = "/www"前加 ;注释掉这行。
5.2新建web服务
编辑vi /etc/config/uhttpd 在末尾加入如下,保存后 /etc/init.d/uhttpd restart,重启uhttpd。
config uhttpd 'iptvm3u'
list listen_http '0.0.0.0:88'
list listen_http '[::]:88'
option home '/etc/config/iptv_m3u'
option cgi_prefix '/cgi-bin'
option index_page 'index.php'
list interpreter '.php=/usr/bin/php-cgi'
88表示web端口(不可与本地端口冲突),/etc/config/iptv_m3u表示web主目录。
在/etc/config目录下新建iptv_m3u文件夹,用于存放m3u、txt等文件;在iptv_m3u下新建TVOD文件夹,用于存储php文件。相比直接放在/www目录下用80端口访问,放在/etc/config目录下有个好处就是openwrt备份配置时会保存此目录,内网访问输入http://ip:88/iptv.m3u。我这里将它软链接为txt后缀是便于在浏览器访问http://ip:88/iptv.txt查看。lucky反代88端口开启BasicAuth认证,防止外网直接访问别人看到你的m3u文件,外网访问 APTV配置链接就成了 https://用户名:密码@域名:端口/iptv.m3u

5.3在TVOD文件夹下放入index.php文件
将diyp内网单播地址改为如下格式,其实就是在http前加入了 http://192.168.31.2:88/TVOD/?url=
diyp内网单播php格式好了,到此就可以愉快的多终端看iptv直播与回看了,鉴于家庭宽带的上传带宽限制,偶尔外网看看还是可以的 聊胜于无。
6.最后
这篇文章应该也算是湖南电信iptv比较全的了吧,断断续续写了几天,就先这样吧,如果有帮到你 那是极好的,大佬们有什么意见 建议也欢迎提出来讨论改进。

我这边武汉电信IPTV是PPPoE拨号。我的接线拓扑和你基本一样,openwrt路由器对IPTV拨号,拨号成功获得了IP。运营商盒子接入openwrt路由器空余lan口,设置静态ip,能看电视。但是主路由网络如果有在看同一频道,那么运营商盒子就会黑屏无声。不知道哪出问题了,或者只能放弃运营商盒子。
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
我这边武汉电信IPTV是PPPoE拨号。我的接线拓扑和你基本一样,openwrt路由器对IPTV拨号,拨号成功获得了IP。运营商盒子接入openwrt路由器空余lan口,设置静态ip,能看电视。但是主路由网络如果有在看同一频道,那么运营商盒子就会黑屏无声。不知道哪出问题了,或者只能放弃运营商盒子。
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案