司凱威
國家廣播電視總局二九三臺 河南省 鄭州市451162
近年來,網絡傳播技術的發展帶動了視聽網站、移動應用程序、短視頻平臺、互聯網電視和IPTV智能終端的蓬勃發展。據中國互聯網絡信息中心的數據顯示,截至2020年12月,我國現有網頁數量達到3155億,移動APP數量達到345萬款[1]。網絡視聽行業繁榮發展的同時,也出現了部分應用程序、智能終端違規提供淫穢色情、血腥暴力等違反國家網絡視聽、網絡安全管理規定的情況。為規范網絡視聽行業發展秩序,營造風清氣正的網絡視聽環境,特別是保護未成年人身心健康,視聽新媒體監管中需要分析視聽節目傳播的技術信息。目前,主要通過自主搭建檢測環境、利用抓包軟件捕獲通信數據、人工分析域名和IP、通過公網查詢地理位置等步驟,獲取網絡協議、IP地址、歸屬地、域名、鏈接、ICP備案號、開辦單位等技術信息。該種工作方式存在操作步驟多、監看周期長、數據分析依賴于工作經驗、數據存儲不規范、數據加密無法檢測等問題,并且與視聽新業態不斷出現、技術架構不斷更新、數據傳輸格式日漸多樣等發展趨勢難以適應。
基于現代網絡數據包分析和網絡爬蟲技術的發展成果,本文提出利用鏡像交換機、無線路由器等設備搭建通用型的技術數據檢測平臺,并基于pyshark等支持庫構建具有通信數據捕獲、分析、統計、結果展示等功能的通用型數據檢測應用軟件。該平臺可較為便捷地完成對網站、應用軟件、智能終端等軟硬件的技術分析,有效提升視聽新媒體技術檢測的效率和準確度。
基于pyshark的視聽新媒體技術信息檢測系統主要用于獲取、分析、識別、存儲用戶端的瀏覽器、移動應用程序、互聯網電視及IPTV終端等軟硬件與服務端的圖片服務器、視頻服務器、EPG服務器等網絡資源之間的通信信息。為保證系統的兼容性、靈活性和易維護性,該系統硬件部分主要由檢測主機、無線路由器、鏡像交換等部分組成,如圖1所示。

圖1 系統組成示意圖
(1)檢測主機主要用于捕獲檢測對象與網絡服務器之間的通信數據,解析數據包、存儲數據文件以圖表的形式展示分析結果。檢測主機與鏡像交換機之間通過高質量的網線進行互聯。
(2)鏡像交換機主要負責將被檢測對象與網絡服務器之間的通信數據完整轉發至檢測主機。為保證數據的轉發能力,在本系統中選用的是提供1個上聯端口,1個監控端口和3個下聯口的千兆鏡像交換機。鏡像交換機的上聯口通過公共互聯網或者專用網絡連接網絡服務器,監控口連接至檢測主機,下端口連接至無線路由器。
(3)無線路由器通過有線或者無線的方式保證檢測對象通過鏡像交換機正常訪問網絡資源。在系統設計中,選用的是千兆無線路由器。其中,互聯網電視、IPTV等終端設備通過有線方式接入。手機、平板等移動智能終端設備通過無線方式接入。
(4)監測載體包括PC主機、移動終端、互聯網電視終端、IPTV終端等設備。所有的網站、應用程序等均需安裝到相應的載體上。為避免通信數據免受其他設備的干擾,一般情況下,同一時間段只允許一個設備連接至無線路由器。
(5)通過合理走線的方式,將相關的設備統一安置在定制化的機箱中,并預留有視頻、USB、網絡等接口,以便于進一步擴展使用。
為協助視聽新媒體監管工作人員快速、準確地完成數據檢測任務,新媒體技術數據檢測系統軟件具有捕獲視聽新媒體智能終端設備或軟件與網絡服務器之間的通信數據、解析通信數據包、在線查詢IP地址歸屬地、在線查詢ICP相關信息、存儲分析結果和數據文件、監控服務運行狀態等功能。用戶只需經過簡單的配置之后,即可獲得數據解析結果。
為提升應用軟件的開發效率和便于后期維護,本系統以python作為開發語言,充分利用開源的數據捕獲、網絡爬蟲、在線下載、特征值計算、報表生成、數據庫管理、文件管理、服務監控等功能程序包研發而成。同時基于面向對象的編程思想,將各個分層之間,通過特定的類接口,完成服務的調用,如圖2所示。

圖2 系統組成示意圖
為捕獲檢測對象與網絡服務器之間的通訊數據,本系統主要借助pyshark模塊調用wireshark的服務接口對鏡像交換機轉發至檢測主機網卡的數據進行采集。
pyshark模塊是使用python語言編制而成的具有網絡通信數據采集、分析功能模塊的程序包。用戶只需對網卡名稱、抓取周期等參數設置后,借助該程序包即可調用專業網絡數據分析軟件wireshark的實時數據采集和離線數據的分析功能[2]。在實時采集數據時設置如下cap=pyshark.LiveCapture(interface='eth0'),cap.sniff(timeout=50)。在解析離線數據包時,設置如下cap=pyshark.FileCapture('/xmt_cap.cap')。
在實際應用中,該模塊具有實時性高、速度快、兼容格式多、運行穩定等優點。同時,為了保證數據的實時性,優先將通信數據實時保存至本地,然后使用離線分析功能。
數據分析模塊主要是通過解析捕獲得到的數據包,獲取網絡協議、IP地址、IP歸屬地、ICP號及開辦機構等視聽新媒體監管中所需的技術信息。以常見的HTTP數據包分析為例,首先是利用pyshark提供的數據解析功能,獲取網絡協議、源IP地址、目的IP地址、URL鏈接等信息。根據URL鏈接的不同,對相關數據進行第一次刪除重復的數據。然后是利用urllib2模塊提供的下載功能,將URL對應的資源文件下載到本地,同時進行第二次數據排重。第三是文件類型判斷和服務器功能推測。借助filetype模塊提供的文件類型識別功能,判斷資源文件的格式[3]并結合URL包含文件格式關鍵字,推測網絡服務器的功能。例如包含有“.jpg”“.bmp”等關鍵字的,推測為圖片服務器,包含 有“.ts”“.mp4”等文 本的,推測為視頻服務器。借助網絡爬蟲模塊抓取IP138、工信部ICP備案系統等權威數據,獲取IP歸屬地和ICP備案信息。在網絡爬蟲中加入了瀏覽器頭、隨機時間間隔等方式,防止頻繁的獲取頁面而被網站屏蔽。
數據存儲模塊主要負責存儲與管理數據包、網絡資源文件以及對應的特征值。在數據存儲過程中,為方便對數據包、抽取結果、檢測對象信息的存儲管理,一是網絡下載得到的文件采用下載時間命名,避免命名較長不便于管理的情況;二是充分利用文件MD5值唯一性的特征,計算圖片、視頻、數據包等文件的MD5值并存儲到數據庫中,以便于查找、管理、增加、刪除等操作;三是借助mysqldb功能模塊,完成對mysql數據庫的管理,實現對歷史數據的規范化存儲,便于數據的長期跟蹤和分析使用。
數據展示功能主要是將分析的結果以Excel表格、圖表等形式進行展示。一是提供域名、URL鏈接、IP地址、功能、ICP、開辦單位、資源文件存儲位置等相關信息的數據查詢、修改、更新、存儲等操作;二是提供相關結果數據的報表導出功能;三是為進一步分析視聽新媒體數據檢測系統監測數據的變化情況,在數據庫中存儲相關的文件,能夠導出變化曲線,更加直觀的反映節目數的變化,以及服務器地址的變化情況;四是提供程序執行狀況的實時動態功能,程序讀取程序執行過程中的異常信息,對于異常報警進行分級,進而對應不同的處理方法。
實踐證明,該系統能夠有效降低視聽新媒體技術信息檢測的難度,縮短技術檢測所需的時長,提升檢測數據的準確性。伴隨著視聽新媒體業態的不斷出現,該系統的應用場景也不斷的增加,將會極大地提升視聽新媒體監管的工作效率。下一步,在繼續優化軟件穩定性的基礎上,嘗試引入高性能的計算節點,加入高靈敏度圖片識別等模塊,推動檢測系統的智能化水平。