WangQiFei

蒸 馏 器


思想提纯
  • 首页
  • 归档
  • 标签
  • 关于
  •     

© 2024  by  Wangqifei

酒店组播源的查找实例

发布于 2024-08-25 18:08 iptv fofa 

iptv一个更好的方案时使用iptv的组播,自有的iptv组播的抓取和转发这里不再介绍,主要介绍下如何使用网络中的组播源来实现播放iptv,主要是酒店源。

优先建议使用两个在线服务:

iptv link search | iptv link search

iptv-org

在线服务使用起来比较便捷,针对 iptv link search 写了一个脚本来提取查找的结果,便于复制,直接在浏览器console中运行即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// 获取所有的结果块,包括 .result, .resultplus 和其他新的结构
const results = document.querySelectorAll('.result, .resultplus');

// 创建一个Set来保存提取的数据
let extractedData = new Set();

// 遍历每个结果块
results.forEach(result => {
let channelName = null;
let url = null;

// 处理第一种结构 .result
const channelNameDiv1 = result.querySelector('.channel a div');
const urlTd1 = result.querySelector('.m3u8 td:last-child');
if (channelNameDiv1 && urlTd1) {
channelName = channelNameDiv1.textContent.trim();
url = urlTd1.textContent.trim();
}

// 处理第二种结构 .liujbm
const channelNameDiv2 = result.querySelector('.channel > a > div');
const urlTba2 = result.querySelector('.liujbm tba:nth-child(2)');
if (channelNameDiv2 && urlTba2) {
channelName = channelNameDiv2.textContent.trim();
url = urlTba2.textContent.trim();
}

// 处理第三种结构 .ewqjsd
const channelNameDiv3 = result.querySelector('.channel > a > div');
const urlTba3 = result.querySelector('.ewqjsd tba:nth-child(2)');
if (channelNameDiv3 && urlTba3) {
channelName = channelNameDiv3.textContent.trim();
url = urlTba3.textContent.trim();
}

// 处理 .tables .result 结构
const channelNameElem = result.querySelector('.channel a b');
if (channelNameElem) {
const iElements = document.querySelectorAll('.result .channel a');
// 提取文本值
channelName = Array.from(iElements).map(i => i.textContent.trim());
url = channelNameElem.textContent.trim().replace(/<img[^>]*>/g, '').trim();
// extractedData.add(`${channelName},${url}`);
}



// 如果频道名称和URL都存在,则按指定格式添加到Set中
if (channelName && url) {
extractedData.add(`${channelName},${url}`);
}
});

// 将Set中的数据拼接成最终的字符串,每行一个频道
console.log(Array.from(extractedData).join('\n\n'));

如果觉得不方便的可以使用我写的油猴脚本: iptv content extractor

源整理

格式整理推荐使用 convert-m3u-js。

直播源的筛选推荐使用 iptv checker

这一步主要来操作怎么找到酒店组播源

结合所在地区的组播源地址这个网上很多,怎么找到可用的组播转单播的前缀才是关键。组播转单播的关键词有 udpxy openwrt等

常见的组播源转单播长这样,:

1
2
3
4
酒店类型1,http://域名或ip+端口/tsfile/live/1031_1.m3u8
酒店类型2,http://域名或ip+端口/hls/1/index.m3u8
组播类型3,http://域名或ip+端口/rtp/239.254.96.115:8664
组播类型4,http://域名或ip+端口/udp/239.254.96.115:8664

借助fofa的搜索命令:udpxy&&city="Henan"&&is_domain=true udpxy&&city="Henan"搜索关键词 udpxy 就可找到组播源ip,把 udpxy 更换为ZHGXTV TXIPTV UDPXY(组播) 酒店源(如秒开IPTV系统、智慧光讯IPTV系统等) TVHEADEND(DVB、IPTV转发)等,还可以针对运营商添加参数如: org="CHINA UNICOM China169 Backbone"

1
2
3
4
5
6
7
智慧光迅平台(广东公司) body="ZHGXTV"
/ZHGXTV/Public/json/live_interface.txt
http://ip:port/hls/1/index.m3u8
智慧桌面 智能KUTV(陕西公司) body="/iptv/live/zh_cn.js"
http://ip:port/tsfile/live/0001_1.m3u8
华视美达 华视私云(浙江公司) body="华视美达"
http://ip:port/newlive/live/hls/1/live.m3u8

比如查找郑州 河南联通的:

  1. 使用fofa 搜: "udpxy" && region="Henan" && city="Zhengzhou" && is_domain=1 \ "udpxy" && city="Zhengzhou" && org="CHINA UNICOM China169 Backbone"
    查找结果如下:

    可以再url后面加上/status 查看udpxy状态,比如:http://42.236.253.50:2000/status:
    域名的比ip的存活的似乎更久一点🤏。
  2. 对搜到的ip和端口使用线上iptv link search工具扫组播地址,或者测试下连通性以后直接在现有的组播文件中替换前缀;

另外一个自动化项目iptv推荐关注下。

 上一篇: 在serv00上使用frp实现内网穿透的示例 

下一篇: 利用ios捷径触发github action 

© 2024  by  Wangqifei