IPTV myTV SUPER 直播代理

coding · 2024年05月13日 · 最后由 cutepan 回复于 2024年07月26日 · 6016 次阅读

Update:

现已在 Docker 支持:https://pixman.io/topics/31


myTV SUPER 是香港的流媒体平台,注册用户可以看免费的一些频道,比如翡翠台、TVB Plus 等,如果要在 iptv 软件里播放的话,需要使用程序做一个转换,下面是使用 cloudflare workers 来代理的方法,这个代码也支持付费频道,但是需要你自己开通了会员。

代码

addEventListener("fetch", event => {
  event.respondWith(handleRequest(event.request))
})

const api_token = '你的 TOKEN';
async function get_mytvsuper(channel) {
  const headers = {
    'Accept': 'application/json',
    'Authorization': `Bearer ${api_token}`,
    'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
    'Host': 'user-api.mytvsuper.com',
    'Origin': 'https://www.mytvsuper.com',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5.2 Safari/605.1.15',
    'Referer': 'https://www.mytvsuper.com/',
    'X-Forwarded-For': '210.6.4.148', 
  }

  const params = new URLSearchParams();
  params.append('platform', 'android_tv');
  params.append('network_code', channel);

  const response = await fetch(`https://user-api.mytvsuper.com/v1/channel/checkout?${params}`, { headers });
  if (response.status != 200) {
    return null;
  }

  const json = await response.json();
  const profiles = json.profiles || [];
  let play_url = '';
  for (let i of profiles) {
    if (i.quality === 'high') {
      play_url = i.streaming_path;
      break;
    }
  }

  if (!play_url) {
    return null;
  }
  return play_url.split('&p=')[0];
}

async function handleRequest(request) {
  const url = new URL(request.url);
  const path = url.pathname.split('/');
  const id = path.pop();

  const redirect_url = await get_mytvsuper(id) || 'https://nolive.livednow.com/nolive.m3u8';

  let cacheControl = 'public, max-age=10'
  if (redirect_url !== 'https://nolive.livednow.com/nolive.m3u8') {
    cacheControl = 'public, max-age=43200' 
  }

  const response = new Response(null, {
    status: 302,
    headers: {
      Location: redirect_url,
      'Cache-Control': cacheControl,
    },
  });
  return response;
}

播放链接类似:https://DOMAIN/{ID},例如翡翠台 4k: https://DOMAIN/JUHD

完整的 m3u 文件可以访问 https://assets.livednow.com/m3u/mytvsuper.m3u 获取,注意将里边的 https://mytvsuper.livednow.com 替换成你自己的域名。

Token 的获取

登录 myTV SUPER 官网后,打开开发者工具 - Network,过滤 https://www.mytvsuper.com/api/auth/getSession/self/ 这个 api 的请求,查看 Response 中的 token 字段,如下图

这个平台的流是 MPEG-DASH 格式,所以需要支持 MPD 的播放器

感激之情,溢于言表,一键三连

嘿嘿,支持。。。。。。。。

一键三连

感谢分享

请问大佬如果长期在 tivi 软件上播放啊,转换 base64 是可以播放,但地址只能播放一天左右就失效了,又要更换地址

Guo_123 回复

这个暂时没有好的解决办法,因为官方 api 返回的 url 就是 24 小时有效,可以尝试下别的软件,比如 ott 什么的

Guo_123 回复

m3u 前面固定的啊,包括 key,只是你获得的 URL 需要变动,而 URL 使用老大的方法也可以固定获取的链接https://domain/JUHDm3u,URL。根本不需要变动 自动获得

请问用 vlc 播放的话 画面是花屏 看不到正常视频 怎么解决?

Guo_123 回复

看样子是 tivi 不支持 302 跳转

Even 回复

tivi 不支持 302 跳转

yandex 回复

vlc 没支持 drm 视频吧,你可以试试浏览器安装 https://chromewebstore.google.com/detail/videoplayer-mpdm3u8m3uepg/opmeopcambhfimffbomjgemehjkbbmji 这个插件后打开 m3u

我请求地址是https://mytvsuper.yandexmixman.workers.dev/JUHD 但返回 {"error":"Error","message":"Token and remote not found"}

请教什么问题?

yandex 回复

const api_token = '你的 TOKEN';

这里的 token 设置正确了吗?要复制完整

tivimate 不行 好忧伤

感谢大佬已成功

请问是 php 代码吗?

minor8429 回复

这是 cloudflare workers 代码

请问 报错 302 是什么问题?可以分析下是哪个步骤出错了吗

Samuel 回复

302 不是报错,他是跳转到播放地址

能用 actions 定时获取直链吗。

bsex 回复

可以啊,你写个 GitHub action,把链接保存下

想请教下,这个 key 如果不使用 up 提供的,想要自己试下获取,要怎么去获取

aiwei 回复

关键词 getwvkeys

coding 回复

研究下用 GitHub action 能不能定时生成供 tivimate 使用的 m3u。

coding 回复

显示 302 之后 OTT 报发生了错误 这种情况是什么问题呢😂

请问老大我在 vps 上正常推流了 mysuper 了,但在本地 nas 部署 Ubuntu 后,最后推流失败,是因为本地没有代理原因吗?如果是可以麻烦老大提供一个代理部署的代码吗?

Guo_123 回复

对的,要代理访问,这个是 workers 的代码,我不知道你说的 ubuntu 什么意思

感谢分享

大佬,这个搞不明白。可否也出一个 docker 版本?本地在 nas 比较好代理。感谢

大佬,这个列表能不能完善一下节目图标?

wailan 回复

自己转换直链就好

TOKEN 没错 一直找不到节目

JIMKUN 回复

如果用插件的话,是需要设置 ClearKeys 的

xiaopeng 回复

哪个频道

coding 回复

这个 key 只能复制你的吗,还是可以从那里获取?

JIMKUN 回复

你自己去获取也跟我写的一样

怎么修改成获取点播区 1080p 代码啊?

token 会过期吗?需要隔段时间更新一次?

XX 回复

一般情况下挺长久的

qqmme 回复

点播没去分析,我估计没有那么容易,比较 clearkey 还不一定一样

coding 回复

只获取下载链接应该没问题吧?clearkey 我可以获取到,所以该怎么改啊?

qqmme 回复

浏览器抓包

coding 回复

但是想获取 1080p 的,浏览器只有 720 的,所以想改这个代码获取链接

coding 回复

请问这个播放器在哪儿下载?

今天测试,播不了了,之前正常,是不是 key 更新了?

这个能不能也整合到 DOCKER 内

renwen 回复

可以

coding 回复

potplayer 支持吗?😂

Devin 回复

不太确定

coding 回复

windows 上有哪个播放器支持?

Devin 回复

还真没测试过,没有 Windows 电脑

coding 回复

那你 mb 上用什么软件播放呢?

Devin 回复

网页插件

大佬请问 hami 可以类似设置吗

Calvin 回复

也可以的,就是我没有账号去抓 key

手机版付费会员也可以用这个方法吗?

coding 回复

失效了,大佬补补链接

tvos 是不是不支持?

请问是失效了吗?

root 回复

对的,

coding pixman 已支持 MytvSuper 直播源 提及了此话题。 06月11日 21:21

我使用 o11 成功推流播放了,就是在 kodi 上很奇怪,其余经 o11 推流的都没问题,就是 mytv 播放 10 多秒就退出了。

感谢,找到了组织,自学成才😈 已解限区决注册问题

我有一个点不理解:本机浏览器 无代理访问 worker 经历以下步骤: 1.worker 服务器发出获取节目源请求 2.获取到的源 url(也就是代码的 redirect_url) 以重定向响应返回给浏览器

这时候浏览器会以没挂代理的状态去请求这个 redirect_url,那没挂代理肯定访问不通呀。所以我测试的结果也是一定要挂梯子才能看得了。 我不太理解为什么大家可以呢....

Captain 回复

因为大家本地也挂梯子了呀

coding 回复

那不就和免代理的想法背道而驰了吗。我是由于挂梯子看电视会耗费很多流量。

但是本地能直连 worker,而 worker 又能访问得了外网,所以理论上应该是能够完全不够挂梯子的。我琢磨琢磨

Captain 回复

我从来没有说过免代理,至于为什么需要代理,是因为 workers 只获取播放 URL

Captain 回复

播放 url 返回给你的东西应该是 302 跳转,worker 服务器没有给你做反代,所以等于你本地是直连播放 url,ban 了国区正好能活得久

coding 回复

感谢大佬,但是用 o11 推流失败了 [autorestart in 29s] Error: Get "http://hk4-edge27-1.edgeware.tvb.com:80/session/6510cb52-4289-11ef-bd05-00505692d62f/__cl/slocalr21/__c/ott_J_hevc/__op/cenc_m/__f/index.mpd?token=59b8exxxxxxx:" EOF 显示这个问题,请问知道什么原因吗?

Atom 回复

网络问题吧

用 platform=ios,获取 index.m3u8 的,是不是解决了 drm 的问题?ios 用的是 h264 的 m3u8

thapana 回复

这个也有 drm

coding 回复
"interactive_channels": [
                    {
                        "network_code": "C2",
                        "channel_no": "83II",
                        "name_tc": "互動窗2",
                        "name_en": "Interactive Window 2"
                    },
                    {
                        "network_code": "C3",
                        "channel_no": "83I",
                        "name_tc": "互動窗1",
                        "name_en": "Interactive Window 1"
                    }
                ],

增加 C2 和 C3 频道,license 怎么获取的

thapana 回复

OK,晚点我更新上去

coding 回复

期待。。。。

coding 回复

我尝试从https://wv.drm.tvb.com/wvproxy/mlicense?contentid=ott_J_h264 来获取 license,但是是一堆乱码,

......4...Q..R.P..u..-U.....Q..R.P..u..-U.... .(.8[email protected]............. .(.0.p.x..V..Z...]x.AM.3([email protected].3..F#.....Q..P2.....uu..Y..][email protected]2..S.i..#..{...=..l ..P..'G.7$.L..q ._..L..fe.;hZ$Eh.R.q.Q....Rw..~pcA.../.S. .(.B...kc16....' ......b. .....2$d457c65f-95c1-430d-8ebf-5be588dc3bfe8.P.. `{.R.E....g.Wv. ].).......K.X=.."..e.Vz4.......y4.9.....G.;[email protected]]...UA..;T.."[.eP.T0..r.....s...m..?y...nb...fS]C'..z.:.m9......=.Q.u...'.-R.:2.019.0.5 Built on Jun 5 2024 15:13:38 (1717625618)@user1' ....r....L.......^...@............................................................................................................+..*.mm+u...>.y.t..=3..`..u!`..GX.

这个怎么转换成 license

我有几个香港的 VPS 还是不能看到 tvb,请问要怎么才能有合适的代理地址呢

cutepan 回复

需要香港的原生 ip 才行,在https://www.mytvsuper.com/api/auth/getSession/self/中, 地区显示的是 HK,才可以

"country_code": "HK",

当你正确获取到 token 之后,就可以不用代理观看了

85 楼 已删除
thapana 回复

下个版本会加新频道

thapana 回复

有点麻烦

coding 回复

期待方法

你好,感谢分享文章。成功搭建起来

但是关于获取完整的 m3u 文件 我看文章:完整的 m3u 文件可以访问 https://assets.livednow.com/m3u/mytvsuper.m3u 获取

我输入https://mydomain.com/m3u/mytvsuper.m3u

无法获取到。 请问怎么获取完整列表~ 我输入https://mydomain.com/J 是能播放到翡翠台的。

leonseason 回复

这个已经停掉了,你自己部署吧

请问哪里能找到 NOW 新闻台呢,讲粤语的,谢谢各位大神!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号