近期在整理家里的iptv的节目表,iptv提供的epg不完整,更新不及时,准备手动整理一个epg数据,当然,已经有比较知名的免费服务了http://epg.51zmt.top:8000/,之所以还是要自己搞,主要还是因为51zmt的频道信息匹配在我家的xteve里面每次都要收工匹配,爱折腾的人经常变换播放源数据,手动匹配epg数据实在是太痛苦,毕竟我的播放源数据也不少.
通过Chrome模拟手机页面,打开某个频道的节目表,这里以CCTV1
的节目单为例,打开后能看到上午的节目排期表,要通过查看更多
来加载剩下的节目单,这里也是本次的关键,涉及到一部分加密的逻辑.
https://m.tvmao.com/api/pg?p=
通过查看页面源码,可以找到发送请求的处理逻辑,这里请求核心的p参数的获取来自于var d = A.d("a", val);
,所以重点就是看这部分的实现.
1 | var A = { |
找到了这部分的代码实现,我们可以模拟调用一下方法,看看获取到的数据是什么样的.
通过调用js的方法,可以看到接口需要的参数能够正常生成:
追踪方法的实现,过滤掉一些方法的实现,实际上生成参数过程中只要三个参数,而这三个参数来源于页面里面的form
表单的几个数据:
精简掉多余的逻辑后,只要实现js中的三个方法即可(因版权原因,这里仅提供分析过程,Golang的代码就不给出了):