赣橙TV伴侣是江西赣橙TV开发的电视大屏互动微信小程序,里面提供了央卫/部分数字及江西本地频道最近几天的EPG数据。

1. 登录

1.1 链接构成

https://iptv.jxntv.cn/userservice/wechat/user/userLogin

1.2 请求头

与上次抓包对比得知,userToken貌似是固定的,登录这步应该不用做。后面请求都要添加请求头userToken。

{
  "Host": "iptv.jxntv.cn",
  "Connection": "keep-alive",
  "Content-Length": "51",
  "projectCode": "GANTV",
  "xweb_xhr": "1",
  "userToken": "f8cc6b4f-0328-4bfc-9af8-f7a0e20b221b",
  "isp": "CTC",
  "spid": "12",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) UnifiedPCWindowsWechat(0xf2541c37) XWEB/25364",
  "clientType": "1",
  "Content-Type": "application/json",
  "Accept": "*/*",
  "Sec-Fetch-Site": "cross-site",
  "Sec-Fetch-Mode": "cors",
  "Sec-Fetch-Dest": "empty",
  "Referer": "https://servicewechat.com/wxad2b62f021fc21f5/54/page-frame.html",
  "Accept-Encoding": "gzip, deflate, br",
  "Accept-Language": "zh-CN,zh;q=0.9"
}

1.3 请求体

{"loginVoucher":"0a3MwRGa14PnpM0J8EFa1Kurde1MwRG2"}

1.4 响应体

{
  "code": 1004,
  "msg": "登录成功",
  "data": {
    "openid": "o5zQC5L5J5ot-7-ZKmPO7l7W3Jz8",
    "userId": 325100,
    "userToken": "f8cc6b4f-0328-4bfc-9af8-f7a0e20b221b"
  }
}

2. 频道分类

2.1 链接构成

https://iptv.jxntv.cn/contentservice/channel/getChannelCategoryList

2.2 请求头

{
  "Host": "iptv.jxntv.cn",
  "Connection": "keep-alive",
  "projectCode": "GANTV",
  "xweb_xhr": "1",
  "userToken": "f8cc6b4f-0328-4bfc-9af8-f7a0e20b221b",
  "isp": "CTC",
  "spid": "12",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) UnifiedPCWindowsWechat(0xf2541c37) XWEB/25364",
  "clientType": "1",
  "Content-Type": "application/json",
  "Accept": "*/*",
  "Sec-Fetch-Site": "cross-site",
  "Sec-Fetch-Mode": "cors",
  "Sec-Fetch-Dest": "empty",
  "Referer": "https://servicewechat.com/wxad2b62f021fc21f5/54/page-frame.html",
  "Accept-Encoding": "gzip, deflate, br",
  "Accept-Language": "zh-CN,zh;q=0.9"
}

2.3 响应体

{
  "code": 1000,
  "msg": "成功",
  "data": [
    {
      "id": 72746,
      "code": "f5b8e163836e4f1fbb104368daf4570c",
      "name": "全部",
      "description": "",
      "contentList": null,
      "renderSize": 1,
      "renderTemplateCode": "widget9",
      "isBaseCategory": "NO",
      "categoryKind": "",
      "targetType": "h5",
      "targetUrl": "",
      "isDisplayName": "YES",
      "isDisplayMore": "NO",
      "spid": 12,
      "isUseTemplate": "NO",
      "isDisplayTitle": "YES",
      "isDisplaySubtitle": "YES"
    },
    {
      "id": 72752,
      "code": "1c7f64ad200b487e8831082de26c5685",
      "name": "高清",
      "description": "",
      "contentList": null,
      "renderSize": 1,
      "renderTemplateCode": "widget9",
      "isBaseCategory": "NO",
      "categoryKind": "",
      "targetType": "h5",
      "targetUrl": "",
      "isDisplayName": "YES",
      "isDisplayMore": "NO",
      "spid": 12,
      "isUseTemplate": "NO",
      "isDisplayTitle": "YES",
      "isDisplaySubtitle": "YES"
    },
    {
      "id": 72754,
      "code": "7b88b71856224fbc9ce17f1617a430ce",
      "name": "本地",
      "description": "",
      "contentList": null,
      "renderSize": 1,
      "renderTemplateCode": "widget9",
      "isBaseCategory": "NO",
      "categoryKind": "",
      "targetType": "h5",
      "targetUrl": "",
      "isDisplayName": "YES",
      "isDisplayMore": "NO",
      "spid": 12,
      "isUseTemplate": "NO",
      "isDisplayTitle": "YES",
      "isDisplaySubtitle": "YES"
    },
    {
      "id": 72748,
      "code": "bff0d29335a04ce68f39fab42d0abe80",
      "name": "央视",
      "description": "",
      "contentList": null,
      "renderSize": 1,
      "renderTemplateCode": "widget9",
      "isBaseCategory": "NO",
      "categoryKind": "",
      "targetType": "h5",
      "targetUrl": "",
      "isDisplayName": "YES",
      "isDisplayMore": "NO",
      "spid": 12,
      "isUseTemplate": "NO",
      "isDisplayTitle": "YES",
      "isDisplaySubtitle": "YES"
    },
    {
      "id": 72750,
      "code": "bf92f11fe75540bca6d9feaf3cd52af7",
      "name": "卫视",
      "description": "",
      "contentList": null,
      "renderSize": 1,
      "renderTemplateCode": "widget9",
      "isBaseCategory": "NO",
      "categoryKind": "",
      "targetType": "h5",
      "targetUrl": "",
      "isDisplayName": "YES",
      "isDisplayMore": "NO",
      "spid": 12,
      "isUseTemplate": "NO",
      "isDisplayTitle": "YES",
      "isDisplaySubtitle": "YES"
    },
    {
      "id": 8000490,
      "code": "96186ce9c8404b83b389a8e2ac6ba544",
      "name": "其它",
      "description": "",
      "contentList": null,
      "renderSize": 1,
      "renderTemplateCode": "widget9",
      "isBaseCategory": "NO",
      "categoryKind": "",
      "targetType": "h5",
      "targetUrl": "",
      "isDisplayName": "YES",
      "isDisplayMore": "NO",
      "spid": 12,
      "isUseTemplate": "NO",
      "isDisplayTitle": "YES",
      "isDisplaySubtitle": "YES"
    }
  ]
}

3. 频道表

3.1 链接构成

可变参数categoryCode为前面获取频道分类的code,pageSize为返回的频道个数,pageNumber在pageSize为10的前提下,值在1-12区间。

https://iptv.jxntv.cn/contentservice/channel/getChannelListByCategoryCode?categoryCode=f5b8e163836e4f1fbb104368daf4570c&pageNumber=1&pageSize=10&isWithExtInfo=2

3.2 请求头

{
  "Host": "iptv.jxntv.cn",
  "Connection": "keep-alive",
  "projectCode": "GANTV",
  "xweb_xhr": "1",
  "userToken": "f8cc6b4f-0328-4bfc-9af8-f7a0e20b221b",
  "isp": "CTC",
  "spid": "12",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) UnifiedPCWindowsWechat(0xf2541c37) XWEB/25364",
  "clientType": "1",
  "Content-Type": "application/json",
  "Accept": "*/*",
  "Sec-Fetch-Site": "cross-site",
  "Sec-Fetch-Mode": "cors",
  "Sec-Fetch-Dest": "empty",
  "Referer": "https://servicewechat.com/wxad2b62f021fc21f5/54/page-frame.html",
  "Accept-Encoding": "gzip, deflate, br",
  "Accept-Language": "zh-CN,zh;q=0.9"
}

3.3 响应体

{
  "code": 1000,
  "msg": "成功",
  "data": {
    "pageSize": 10,
    "pageNumber": 1,
    "totalCount": 113,
    "result": [
      {
        "id": 6,
        "code": "Umai:CHAN/111128@BESTV.SMG.SMG",
        "channelNumber": "1",
        "name": "CCTV1-高清",
        "poster": "",
        "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/1.png?t=12345678",
        "playing": null,
        "toPlay": null,
        "playUrl": null,
        "favoriteStatus": null,
        "channelCtcCode": "20000130"
      },
      {
        "id": 8,
        "code": "Umai:CHAN/2671517@BESTV.STA.SMG",
        "channelNumber": "2",
        "name": "CCTV2-高清",
        "poster": "",
        "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/2.png?t=12345678",
        "playing": null,
        "toPlay": null,
        "playUrl": null,
        "favoriteStatus": null,
        "channelCtcCode": "59814583"
      },
      {
        "id": 10,
        "code": "Umai:CHAN/2871110@BESTV.STA.SMG",
        "channelNumber": "3",
        "name": "CCTV3-高清",
        "poster": "",
        "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/3.png?t=12345678",
        "playing": null,
        "toPlay": null,
        "playUrl": null,
        "favoriteStatus": null,
        "channelCtcCode": "65406411"
      },
      {
        "id": 12,
        "code": "Umai:CHAN/2671518@BESTV.STA.SMG",
        "channelNumber": "4",
        "name": "CCTV4-高清",
        "poster": "",
        "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/4.png?t=12345678",
        "playing": null,
        "toPlay": null,
        "playUrl": null,
        "favoriteStatus": null,
        "channelCtcCode": "59814683"
      },
      {
        "id": 14,
        "code": "Umai:CHAN/2871111@BESTV.STA.SMG",
        "channelNumber": "5",
        "name": "CCTV5-高清",
        "poster": "",
        "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/5.png?t=12345678",
        "playing": null,
        "toPlay": null,
        "playUrl": null,
        "favoriteStatus": null,
        "channelCtcCode": "65396400"
      },
      {
        "id": 16,
        "code": "Umai:CHAN/2871112@BESTV.STA.SMG",
        "channelNumber": "6",
        "name": "CCTV6-高清",
        "poster": "",
        "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/6.png?t=12345678",
        "playing": null,
        "toPlay": null,
        "playUrl": null,
        "favoriteStatus": null,
        "channelCtcCode": "65396492"
      },
      {
        "id": 18,
        "code": "Umai:CHAN/2671519@BESTV.STA.SMG",
        "channelNumber": "7",
        "name": "CCTV7-高清",
        "poster": "",
        "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/7.png?t=12345678",
        "playing": null,
        "toPlay": null,
        "playUrl": null,
        "favoriteStatus": null,
        "channelCtcCode": "59814692"
      },
      {
        "id": 20,
        "code": "Umai:CHAN/2871113@BESTV.STA.SMG",
        "channelNumber": "8",
        "name": "CCTV8-高清",
        "poster": "",
        "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/8.png?t=12345678",
        "playing": null,
        "toPlay": null,
        "playUrl": null,
        "favoriteStatus": null,
        "channelCtcCode": "65406605"
      },
      {
        "id": 22,
        "code": "Umai:CHAN/2671520@BESTV.STA.SMG",
        "channelNumber": "9",
        "name": "CCTV9-高清",
        "poster": "",
        "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/9.png?t=12345678",
        "playing": null,
        "toPlay": null,
        "playUrl": null,
        "favoriteStatus": null,
        "channelCtcCode": "59814698"
      },
      {
        "id": 24,
        "code": "Umai:CHAN/3949784@BESTV.SMG.SMG",
        "channelNumber": "10",
        "name": "CCTV10-高清",
        "poster": "",
        "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/10.png?t=12345678",
        "playing": null,
        "toPlay": null,
        "playUrl": null,
        "favoriteStatus": null,
        "channelCtcCode": "51813371"
      }
    ]
  }
}

4. 频道的单日节目单

4.1 链接构成

示例为江西都市频道,对应的channelCode为Umai%3ACHAN%2F4222494%40BESTV.STA.SMG,date为单日日期,其它频道同理。

https://iptv.jxntv.cn/contentservice/channel/getChannelScheduleListByChannelCode?channelCode=Umai%3ACHAN%2F4222494%40BESTV.STA.SMG&date=20260914&pageNumber=1&pageSize=100

4.2 请求头

{
  "Host": "iptv.jxntv.cn",
  "Connection": "keep-alive",
  "projectCode": "GANTV",
  "xweb_xhr": "1",
  "userToken": "f8cc6b4f-0328-4bfc-9af8-f7a0e20b221b",
  "isp": "CTC",
  "spid": "12",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) UnifiedPCWindowsWechat(0xf2541c37) XWEB/25364",
  "clientType": "1",
  "Content-Type": "application/json",
  "Accept": "*/*",
  "Sec-Fetch-Site": "cross-site",
  "Sec-Fetch-Mode": "cors",
  "Sec-Fetch-Dest": "empty",
  "Referer": "https://servicewechat.com/wxad2b62f021fc21f5/54/page-frame.html",
  "Accept-Encoding": "gzip, deflate, br",
  "Accept-Language": "zh-CN,zh;q=0.9"
}

4.3 响应体

请求成功标志:msg的值为成功。
有无节目单数据标志:data->schedules->totalCount是否为0。
结构组成:
data->schedules->result下是单日的数组。
节目单数组的startDate表示日期,startTime表示开始时间(H:i),name表示节目标题,没有结束时间/持续时间数据。

{
  "code": 1000,
  "msg": "成功",
  "data": {
    "channel": {
      "id": 42,
      "code": "Umai:CHAN/4222494@BESTV.STA.SMG",
      "channelNumber": "20",
      "name": "江西都市频道-高清",
      "poster": "",
      "logo": "https://iptv.jxntv.cn//POSTER/logo/dx_logo/20.png?t=12345678",
      "playing": null,
      "toPlay": null,
      "playUrl": null,
      "favoriteStatus": "tofavorite",
      "channelCtcCode": "94448630"
    },
    "schedules": {
      "pageSize": 100,
      "pageNumber": 1,
      "totalCount": 16,
      "result": [
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "211000010000000726091402244900113",
          "name": "通宵剧场",
          "startDate": "20260914",
          "startTime": "00:50",
          "playStatus": "played",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "211000010000000726091402244904226",
          "name": "寻味江西",
          "startDate": "20260914",
          "startTime": "06:00",
          "playStatus": "played",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "211000010000000726091402244908339",
          "name": "都市现场",
          "startDate": "20260914",
          "startTime": "07:00",
          "playStatus": "played",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "211000010000000726091402244912552",
          "name": "经典剧场",
          "startDate": "20260914",
          "startTime": "08:00",
          "playStatus": "played",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "211000010000000726091402244916665",
          "name": "都市现场",
          "startDate": "20260914",
          "startTime": "11:40",
          "playStatus": "playing",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "211000010000000726091402244920778",
          "name": "谁是赢家",
          "startDate": "20260914",
          "startTime": "13:00",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "211000010000000726091402244924891",
          "name": "都市情缘",
          "startDate": "20260914",
          "startTime": "14:00",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "2110000100000007260914022449289104",
          "name": "热播剧场",
          "startDate": "20260914",
          "startTime": "14:30",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "2110000100000007260914022449330117",
          "name": "快乐生活一点通",
          "startDate": "20260914",
          "startTime": "17:00",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "2110000100000007260914022449371130",
          "name": "地宝当家",
          "startDate": "20260914",
          "startTime": "17:30",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "2110000100000007260914022449412143",
          "name": "都市现场",
          "startDate": "20260914",
          "startTime": "18:00",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "2110000100000007260914022449453156",
          "name": "都市情缘",
          "startDate": "20260914",
          "startTime": "19:30",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "2110000100000007260914022449494169",
          "name": "晚间800",
          "startDate": "20260914",
          "startTime": "20:00",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "2110000100000007260914022449535182",
          "name": "都市剧场",
          "startDate": "20260914",
          "startTime": "20:20",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "2110000100000007260914022449576195",
          "name": "都市剧场",
          "startDate": "20260914",
          "startTime": "21:10",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        },
        {
          "channelCode": "Umai:CHAN/4222494@BESTV.STA.SMG",
          "code": "2110000100000007260914022449617208",
          "name": "都市剧场",
          "startDate": "20260914",
          "startTime": "21:55",
          "playStatus": "toplay",
          "appointStatus": "toappoint"
        }
      ]
    }
  }
}