◆陳麗卿
?
基于canvas繪圖的網(wǎng)頁信息防采集技術(shù)研究
◆陳麗卿
(泉州華光職業(yè)學院 福建 362121)
目前網(wǎng)絡文學繁榮發(fā)展的背后也存在著突出的問題,就是網(wǎng)絡文學的版權(quán)無法得到有效保護。本文主要從技術(shù)層面來進行研究網(wǎng)頁信息防采集、防盜版技術(shù)。本文設計了一種基于canvas繪圖的網(wǎng)頁信息防采集技術(shù),首先設計了一套爬蟲人機識別機制,在網(wǎng)頁內(nèi)設置人類用戶不可見的隱藏鏈接,判定訪問者為網(wǎng)絡爬蟲后,對網(wǎng)絡爬蟲設置一些爬蟲陷阱,防止爬蟲進一步采集。為了進一步增強對網(wǎng)頁信息的保護效果,還設計了一套基于canvas繪圖的文字反盜版系統(tǒng)。該系統(tǒng)基于對字體庫文件的解析和重新編碼,發(fā)送轉(zhuǎn)換后的繪圖信息,即使在傳輸過程中被竊取盜版者也無法識別,有效解決了信息采集。
網(wǎng)絡爬蟲;文字反盜版系統(tǒng);字體庫解析;canvas繪圖
當前以網(wǎng)絡文學為代表的網(wǎng)頁信息發(fā)展迅速,其蓬勃發(fā)展帶來巨大社會經(jīng)濟效益的同時迫切需要一套行之有效的網(wǎng)頁信息防采集防盜版技術(shù)。但是當前社會對于網(wǎng)絡版權(quán)保護令人堪憂,法律的保護效果不明顯,技術(shù)手段的保護也尚未成熟,面對這樣的形勢可見網(wǎng)頁防采集技術(shù)的商業(yè)價值和緊迫性。
常規(guī)反網(wǎng)絡爬蟲技術(shù)是從限制網(wǎng)絡爬蟲訪問這個方面來進行設計的(如圖1),該技術(shù)工作的主要機制為登錄驗證、爬蟲檢測、爬蟲循環(huán)陷阱、終止壽命、防止盜鏈等,其在一定程度上提高了網(wǎng)頁對網(wǎng)絡爬蟲的防御性,能夠解決部分網(wǎng)頁信息防采集防盜版的問題。
圖1 爬蟲檢測、斷開爬蟲訪問和循環(huán)陷阱原理圖
由于數(shù)據(jù)庫內(nèi)的信息登錄并不是公開的,如果網(wǎng)絡爬蟲沒有專門針對數(shù)據(jù)庫的數(shù)據(jù)竊取功能,則無法通過登錄,這里可以阻擋無法獲得驗證信息的網(wǎng)絡爬蟲,對網(wǎng)絡爬蟲做一個初步過濾。
一般的網(wǎng)絡爬蟲則會按照列表的順序訪問列表中的鏈接,我們在這些鏈接中設置了一些隱藏鏈接,如果訪問頁面的是用戶,由于隱藏鏈接不可視,因此用戶無法點擊訪問隱藏鏈接,但是網(wǎng)絡爬蟲會按照鏈接的排列順序依次爬取,因此一旦隱藏鏈接被訪問,則判斷訪問者為網(wǎng)絡爬蟲。
一般如果cookie被禁止,則客戶端的訪問就會結(jié)束,當訪問者被判定為網(wǎng)絡爬蟲之后,服務器就會將其cookie設為time()-1,結(jié)束訪問的生命周期,拒絕其訪問。
爬蟲的采集規(guī)則是遞歸訪問某域名范圍內(nèi)的所有鏈接,針對此特點,在識別某訪問用戶為爬蟲后,設計一套無窮遞歸的頁面鏈接,對于某些不設訪問層次限制的爬蟲,可以讓其資源耗盡而崩潰。
基于canvas繪圖的文字反盜版系統(tǒng)基于字體庫解析和重新編碼,產(chǎn)生繪圖信息,利用canvas繪圖。相較于常規(guī)反網(wǎng)絡爬蟲技術(shù)它的防范能力更加強大。常規(guī)反網(wǎng)絡爬蟲技術(shù)的缺陷之一就是服務器端和客戶端在數(shù)據(jù)傳輸?shù)倪^程中傳輸?shù)氖蔷W(wǎng)頁信息的文字信息流,這樣很容易在傳輸過程中被截取盜用,基于canvas的文字反盜版系統(tǒng)能夠有效彌補常規(guī)反網(wǎng)絡爬蟲技術(shù)的缺陷。
圖2 反盜版系統(tǒng)結(jié)構(gòu)流程圖
圖2為反盜版系統(tǒng)的結(jié)構(gòu)和流程,主要包含了以下幾個模塊:
(1)解析:對服務器的文本進行解析,獲取文本的繪圖要素和編碼id;
(2)傳輸:服務器與客戶端用ajax的異步請求進行交互,采用json格式傳輸數(shù)據(jù);
(3)重繪:客戶端用js分析數(shù)據(jù),還原文本,進行繪圖,客戶端解析程序進行加工,防止竊?。?/p>
(4)重編碼:編碼后的id不同于unicode編碼,傳輸數(shù)據(jù)不是簡單的文本,而是繪圖要素。
通過以上的功能模塊,反盜版系統(tǒng)能傳輸爬蟲不能識別但是包含服務器文本的、客戶端能夠繪制的數(shù)據(jù)流,這樣可以防止網(wǎng)絡爬蟲竊取,達到保護數(shù)據(jù)內(nèi)容安全和知識產(chǎn)權(quán)的效果。
unicode編碼具有唯一性、廣泛性,世界上所有的文字都可以用唯一的unicode編碼表示,所以網(wǎng)絡傳輸中可以通過發(fā)送unicode編碼或相關信息來確定要打印的字符。但是直接傳送容易被爬蟲捕獲,所以服務器對要發(fā)送的文本的utf-8編碼進行加工處理,用文字在段落中出現(xiàn)的順序作為codeID,來標識文字,同時解析字體庫ttf文件,獲取文本繪圖要素,打包發(fā)送。
在段落中的文字,用(32+在段落中第一次出現(xiàn)的位置值)作為文字的編碼。當?shù)谝粋€文字出現(xiàn)時,編碼為33,第二個文字出現(xiàn)時,編碼為34,依次類推……如果遇到重復的文字,則采用之前的編碼。對于控制字符和標點符號,使用ASCII碼值作為其編碼值。第一次出現(xiàn)的文字編碼保存在表textmap中,其對應的glyphid保存在表glymap中,符號的值保存在specialCodes中,原段落編碼后的值保存在codeID中。
服務器將相關的數(shù)據(jù)打包成關聯(lián)數(shù)組,編為json格式,用于網(wǎng)絡傳輸。Texthandle.php包含源文本,是向客戶端發(fā)送數(shù)據(jù)的腳本,聲明 textConfig對象,實例化配置,聲明 ttfParser 對象,對reponse原文本,使用微軟雅黑字體庫和textConfig配置,重編碼,將數(shù)據(jù)發(fā)送到客戶端。客戶端start.html使用ajax方式,進行與服務器的異步請求,通過requestData() 發(fā)送請求,服務器將textHandle.php 的執(zhí)行結(jié)果,發(fā)送到客戶端,客戶端接受后,調(diào)用handleResult() 和bindConfigs() 函數(shù),對包含繪圖信息、文本信息在內(nèi)的數(shù)據(jù)進行處理。
首先,客戶端在獲得數(shù)據(jù)后,調(diào)用jcanvas.js腳本中的handleResult()函數(shù)對結(jié)果進行解析,還原json格式,恢復繪圖信息和文本信息。然后,調(diào)用jcanvas.js中的drawTexts()進行繪制,將字體大小、行間距、段間距、反ocr系數(shù)以及文本繪制在屏幕上。最后,通過進度條在對客戶端的參數(shù)進行改變時,使用四個回調(diào)函數(shù)on_fontsize_change(e)、on_ocr_change(e) 、on_linespace_change(e) 、on_paraspace_change(e)進行調(diào)整,分別設置界面的字體大小、反ocr系數(shù)、行間距和段間距。
本文結(jié)合網(wǎng)絡爬蟲技術(shù)和反網(wǎng)絡爬蟲技術(shù)的原理和特點,模擬小說網(wǎng)頁的形式,初步設計了一系列反網(wǎng)絡爬蟲的技術(shù)手段,初步達到了網(wǎng)頁信息防采集防盜版的目的。而后在常見的反網(wǎng)絡爬蟲技術(shù)的基礎之上,結(jié)合字體庫解析技術(shù)設計了文字反盜版系統(tǒng),突破了常見防采集防盜版技術(shù)的局限性,不是從如何防止網(wǎng)絡爬蟲軟件采集網(wǎng)頁信息的角度設計,而是在信息識別上進行研究,通過對unicode字符的重編碼和Jcanvas繪圖技術(shù),使網(wǎng)頁信息采集軟件即使采集到數(shù)據(jù)也無法識別數(shù)據(jù),從而達到網(wǎng)頁信息防采集防盜版的目的。
下一步主要解決問題:一是網(wǎng)絡爬蟲檢測效率不高的問題。在網(wǎng)絡爬蟲檢測上,使用了登錄驗證和隱藏鏈接,但是如何防止數(shù)據(jù)庫中驗證信息被破解以及如何設置隱藏鏈接位置使網(wǎng)絡爬蟲進入有待改進;二是防止圖像識別系統(tǒng)的解析。系統(tǒng)雖然設置了反OCR系數(shù),但是閾值較高的情況下會傷害到用戶體驗,閾值過低的情況下會使得OCR識別率較高。
[1]張寶政.網(wǎng)頁內(nèi)容防采集策略的研究[J].數(shù)學技術(shù)與應用,2010.
[2]劉書林.基于SOA架構(gòu)的惡意爬蟲DDoS攻擊檢測技術(shù)研究[J].數(shù)學技術(shù)與應用,2016.
[3]廉玉玲.透過網(wǎng)絡盜版談著作權(quán)保護[J].學理論,2014.
[4]張春元.基于示例的中文Web信息自動獲取系統(tǒng)的研究與實現(xiàn)[D].北京:中國科學院計算技術(shù)研究所,2002.