IPTV myTV SUPER 直播代理

coding · 2024年05月13日 · 最后由 dhxdl 回复于 26 天前 · 13140 次阅读

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 #6 回复

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

Guo_123 #6 回复

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

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

Guo_123 #10 回复

看样子是 tivi 不支持 302 跳转

Even #8 回复

tivi 不支持 302 跳转

yandex #9 回复

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 #14 回复

const api_token = '你的 TOKEN';

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

tivimate 不行 好忧伤

感谢大佬已成功

请问是 php 代码吗?

minor8429 #19 回复

这是 cloudflare workers 代码

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

Samuel #21 回复

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

能用 actions 定时获取直链吗。

bsex #23 回复

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

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

aiwei #25 回复

关键词 getwvkeys

coding #24 回复

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

coding #22 回复

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

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

Guo_123 #29 回复

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

感谢分享

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

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

wailan #16 回复

自己转换直链就好

TOKEN 没错 一直找不到节目

JIMKUN #36 回复

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

xiaopeng #35 回复

哪个频道

coding #37 回复

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

JIMKUN #39 回复

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

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

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

XX #42 回复

一般情况下挺长久的

qqmme #41 回复

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

coding #44 回复

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

qqmme #45 回复

浏览器抓包

coding #46 回复

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

coding #37 回复

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

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

这个能不能也整合到 DOCKER 内

coding #1 回复

potplayer 支持吗?😂

Devin #53 回复

不太确定

coding #54 回复

windows 上有哪个播放器支持?

Devin #55 回复

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

coding #56 回复

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

Devin #57 回复

网页插件

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

Calvin #59 回复

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

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

coding #17 回复

失效了,大佬补补链接

tvos 是不是不支持?

请问是失效了吗?

root #63 回复

对的,

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

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

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

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

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

Captain #70 回复

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

coding #71 回复

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

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

Captain #72 回复

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

Captain #72 回复

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

coding #49 回复

感谢大佬,但是用 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 #75 回复

网络问题吧

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

thapana #77 回复

这个也有 drm

coding #78 回复
"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 #79 回复

OK,晚点我更新上去

coding #80 回复

期待。。。。

coding #80 回复

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

......4...Q..R.P..u..-U.....Q..R.P..u..-U.... .(.8.@.H............. .(.0.p.x..V..Z...]x.AM.3(.....@.M.3..F#.....Q..P2.....uu..Y..]!......@m.P..j2..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.;...E......@..C..l..U...7..t]...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 #83 回复

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

"country_code": "HK",

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

85 楼 已删除

下个版本会加新频道

thapana #82 回复

有点麻烦

coding #87 回复

期待方法

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

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

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

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

leonseason #89 回复

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

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

coding #90 回复

老大帮忙看看这个是怎么回事,谢谢

[root@OpenWrt:08:27 PM ~] # docker exec pixman sh -c 'flask mytvsuper_tivimate' [2024-09-26 20:27:49,584] ERROR in core: Request failed: 403 Client Error: Forbidden for url: https://user-api.mytvsuper.com/v1/channel/checkout?platform=android_tv&network_code=C18, retrying... [2024-09-26 20:27:50,533] ERROR in core: Request failed: 403 Client Error: Forbidden for url: https://user-api.mytvsuper.com/v1/channel/checkout?platform=android_tv&network_code=C18, retrying... [2024-09-26 20:27:51,521] ERROR in core: Request failed: 403 Client Error: Forbidden for url: https://user-api.mytvsuper.com/v1/channel/checkout?platform=android_tv&network_code=C18, retrying... [2024-09-26 20:27:51,522] ERROR in core: Request failed after retrying [2024-09-26 20:27:53,897] ERROR in core: Request failed: 403 Client Error: Forbidden for url: https://user-api.mytvsuper.com/v1/channel/checkout?platform=android_tv&network_code=CTVC, retrying...

coding #17 回复

大佬 链接失效了 还有没有此类工具 谢谢

Captain #68 回复

后来解决没 同样的情况

大哥,如果小白看不懂,有没有教学,有酬劳

JIMKUN #36 回复

我也是播放不了,但我的错误代码是 242600

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