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