APP下载

互联网电视集成平台数据爬虫软件

2018-01-25付茗

电子测试 2017年24期
关键词:该软件机顶盒版块

付茗

(国家新闻出版广播电影电视总局二八二台,湖南长沙,410146)

1 问题提出

由于互联网电视机顶盒系统是基于Android系统而开发的,因此可以根据Android相关的特性搭建对应的环境,对该软件进行协议分析,逆向相关的API(Application Programming Interface,应用程序编程接口),分析相关的数据,从而得到监看统计所需要的源数据。本论文以互联网电视机顶盒“芒果嗨Q H5”为例进行分析。

2 软件要求

该软件旨在取代互联网电视机顶盒,而直接对机顶盒的部分数据进行数据采集和数据分析,同时进行数据整理。

2.1 软件功能

自动采集:该软件能自动采集互联网电视机顶盒的部分数据,并分析所需要的数据。

自动解析:该软件能解析相关的数据,并提取有用数据,为统计做前提准备。

自动统计:该软件能按照监看的需求,对相关数据进行分析并统计。

自动导出:该软件能按照监看的需求,进行数据导出,并形成报表。

2.2 软件的特性

(1)易用性:该软件可采用两种方式工作:“定时后台服务模式”和“人工主动运行模式”。当采用“定时后台服务模式”时,可达到无人干预的效果,软件会定时采集、分析并输出,完全取代人工操作。当采用“人工主动模式”时,工作人员可选择在监看工作需要的时候,手动运行一下该软件即可,软件会自动进行采集、分析和输出。

(2)智能性:该软件无论采用哪种模式,其运行过程中,均无需人为干预,软件会自动进行采集、分析、统计并导出相关数据。

(3)跨平台性:该软件可运行于Windows、Linux、MacOS、Unix,甚至嵌入式设备中。此外,该软件也可作为一个模块嵌入到其他系统中。

3 软件设计

该软件主要分为以下4个模块。

(1)采集模块:采集模块主要是根据特殊数据,按相关API自动发送网络请求包,来代替互联网电视机顶盒的功能进行相应的数据获取。

(2)解析模块:解析模块主要是将API返回的数据,按照对应的格式进行解析,得到统计所需要的数据。该数据一般为程序的数据结构数据。

(3)统计模块:统计模块主要是对解析后的数据进行归纳整理,按特定的统计算法算出相关的数值,并暂存到内存中。

(4)导出模块:导出模块主要是将统计好的数据,按照特定的报表进行输出和归档。

4 软件实施

4.1 抓包环境搭建

该软件使用了抓包工具Charles。Charles 是一款网络调试代理应用(Web Debugging Proxy Application),能代理、截获、转发电脑上的http收发请求数据。该软件的抓包环境搭建步骤如下所示。

(1)在电脑上启动软件Charles,进入Charles的使用界面。进入“Proxy”(代理)菜单,点击“Proxy Settings”(代理设置)。

图1 软件Charles代理设置示意图

(2)设置Proxies(代理)的HTTP Proxy端口。

图2 HTTPPeoxy端口设置示意图

4.2 互联网电视机顶盒代理设置

打开互联网电视机顶盒的“网络设置”,在已连接的网络连接处长按遥控器OK键,出现菜单后点击“修改网络”,再勾选“高级选项”。

点击“手动”配置,添加http代理,将代理的ip设为Charles 所在电脑的ip,将代理的端口设为Charles中所设置的端口。

4.3 协议分析

EPG是英文Electronic Program Guide(电子节目指南)的缩写。它描述了提供给电视节目观众的所有节目的信息,同时它的更新或异常也能反映出内容的变化和异常,是需要重点监控的警报信息。要想统计互联网电视集成平台所传播的节目数量,则需要抓取域名“epgcdn.hifuntv.com”下的所有http包。

图3 修改网络示意图

图4 添加http代理示意图

4.3.1 获取主页目录数据API

表1 获取主页目录数据表

通过解析数据,获取所有版块的id和名称,以便后续API的请求。

xpath: meta_data_list/meta_data[id==4.0menu]/page/item_data[action!=m_open_web

&&action!=m_open_search_page]/arg_list/a/[k==media_asset_id]/v

xpath: meta_data_list/meta_data[id==4.0menu]/page/item_data[action!=m_open_web

&&action!=m_open_search_page]/arg_list/a/[k==name]/v

通过分析这两个xpath,可以分别得到版块的id以及版块的名字。

原始数据示例:

4.3.2 获取版块的主页数据API

表2 获取版块的主页数据表

此API的作用是获取每个版块的主页数据,返回json类型的数据。

API参数中的“MediaAssetId”,是版块的id,主要是用来控制该API取哪个版块。如表2中所示,参数是“movie”,则表示是电影版块,该值来源于获取主页目录数据API返回的数据。

该示例中的“l”节点,描述的是总体数据,即“电影”版块的基本数据,如下所示:

①media_asset_id:版块的id

②media_asset_name:版块的名称

③media_asset_count:版块的资源个数

该示例中的“il”节点,描述的是“电影”版块下的二级子版块数据,该示例只展示了其中的一条二级子版块“最新强档”,其它二级子版块类似。

①name:“二级子版块”名称

②arg_list/total_video_rows:该“二级子版块”中的节目个数

③arg_list/total_special_rows:该“二级子版块”下的“三级子版块”的个数

④arg_list/special_list/il:该“三级子版块”的信息,其中id表示该版块的id,name表示该版块的名称(只有当arg_list/total_special_rows的值不为0时,才有此节点)。

4.3.3 获取三级版块的主页数据API

此API的作用是获取每个三级子版块的主页数据,返回json类型的数据。

API参数中的“SpecialId”,是三级子版块的 id,主要是用来控制该API取哪个三级子版块。如表3中所示,参数是SpecialId,该值来源于接口二API返回的数据,其具体路径为:arg_list/special_list/il[@id]。

图5 程序关键代码流程图

表3 获取三级版块的主页数据表

4.4 程序算法设计

4.5 程序关键代码流程图

该软件可采用简单的python[3]脚本去爬取监看所需的数据。具体程序关键代码流程图如图5所示。

4.6 系统的定时任务模式

例如,在linux中,可以使用crontab设置定时任务,达到定时执行的目的。

crontab的基本用法如下所示:

5 报表导出

该软件经过数据统计,可将统计结果形成报表导出。该报表统计了每一个版块的节目个数、所占百分比以及总节目数,并按照节目数从多到少对各版块进行了排序。(如表4所示)

表4 和丰互联网电视集成平台传播节目数量统计表

6 软件扩展

该软件可进行进一步的改进,让导出的报表更丰富。或者将统计好的数据,发送给web服务器,让web服务器以web的方式呈现给数据分析人员。

7 总结

前文详细阐述了该软件的抓包环境搭建、协议分析、程序设计、程序实现和报表导出。通过这个软件,可以让开发人员实现更多数据的统计和更丰富的报表功能。

[1][美]亨特,[译]吴文国.XML入门经典[M].清华大学出版社.2009-2:2.

[2][美]Lindsay Bassett,[译]魏嘉汛.JSON必知必会[M].人民邮电出版社.2016-5:17.

[3][美]埃里克.马瑟斯,[译]袁国忠.Python编程:从入门到实践[M].人民邮电出版社. 2016-7-1:15.

猜你喜欢

该软件机顶盒版块
简单灵活 控制Windows 10更新更方便
《科学与社会》“STS研究”版块2021年征稿启事
加大对“无抗”、“替抗”的产品的研发,润盈明年要在中草药版块再度发力
安全使用机顶盒注意五点
Flashfxp Password Decryptor
数字电视机顶盒软件自动测试系统的开发及应用
有线电视高清数字电视机顶盒测试系统的构建
What is Apple Watch All About?
Allen & Heath推出GLD Editor控制软件
牛津大学数据联盟应用软件