爬蟲抓取的方法的流程圖。
[0067]圖7示意性示出根據(jù)本公開示例另一實(shí)施方式中客戶端防爬蟲抓取的方法的流程圖。
[0068]圖8示出根據(jù)本公開示例另一實(shí)施方式的用于防爬蟲抓取的系統(tǒng)。
[0069]圖9示出根據(jù)本公開示例實(shí)施方式的防爬蟲抓取的方法的流程圖。
【具體實(shí)施方式】
[0070]現(xiàn)在將參考附圖更全面地描述示例實(shí)施方式。然而,示例實(shí)施方式能夠以多種形式實(shí)施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實(shí)施方式使得本公開將更加全面和完整,并將示例實(shí)施方式的構(gòu)思全面地傳達(dá)給本領(lǐng)域的技術(shù)人員。附圖僅為本公開的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對它們的重復(fù)描述。
[0071]此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實(shí)施方式中。在下面的描述中,提供許多具體細(xì)節(jié)從而給出對本公開的實(shí)施方式的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實(shí)踐本公開的技術(shù)方案而省略所述特定細(xì)節(jié)中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細(xì)示出或描述公知結(jié)構(gòu)、方法、裝置、實(shí)現(xiàn)、材料或者操作以避免喧賓奪主而使得本公開的各方面變得模糊。
[0072]附圖中所示的一些方框圖是功能實(shí)體,不一定必須與物理或邏輯上獨(dú)立的實(shí)體相對應(yīng)??梢圆捎密浖问絹韺?shí)現(xiàn)這些功能實(shí)體,或在一個或多個硬件模塊或集成電路中實(shí)現(xiàn)這些功能實(shí)體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實(shí)現(xiàn)這些功能實(shí)體。
[0073]圖1示意性示出根據(jù)本公開示例實(shí)施方式的用于防爬蟲抓取的系統(tǒng)100,包括服務(wù)端110和客戶端120。其中服務(wù)端110主要用于對原始數(shù)據(jù)(一般多為重要信息,例如價(jià)格、電話、評分等信息)進(jìn)行加密。客戶端120用于對服務(wù)端發(fā)送的數(shù)據(jù)進(jìn)行解密和顯示,相應(yīng)的,如圖1所示,客戶端120中包括解密模塊124和顯示模塊123,最終將正確的原始數(shù)據(jù)展示給用戶。
[0074]需要說明的是,此處服務(wù)端110的加密屬于廣義的加密,即并不是僅指一般意義上通過加密算法而進(jìn)行的加密操作,而是表示對原始數(shù)據(jù)進(jìn)行分割、填充、拼接等一系列處理,最終將數(shù)據(jù)以特殊的格式(如圖片地址+字符串拼接)發(fā)送給客戶端120,使得用戶可以通過訪問網(wǎng)站頁面,頁面進(jìn)一步通過接口調(diào)用數(shù)據(jù),使得用戶可以在客戶端120看到原始數(shù)據(jù)。
[0075]圖2示意性示出根據(jù)本公開示例實(shí)施方式的用于防爬蟲抓取的服務(wù)端110,包括:分割模塊111、篩選模塊112、數(shù)據(jù)混淆模塊113和拼接模塊114。
[0076]分割模塊111用于對原始數(shù)據(jù)進(jìn)行分割處理得到多個分割塊數(shù)據(jù),并以key/value形式存儲每個分割塊數(shù)據(jù)的位置/數(shù)值信息。篩選模塊112用于根據(jù)分割塊數(shù)據(jù)的位置/數(shù)值信息從多個位置中進(jìn)行隨機(jī)篩選,并記錄篩選出的若干個位置相對應(yīng)的key/value值。數(shù)據(jù)混淆模塊113用于對篩選出的若干個位置的分割塊數(shù)據(jù)做混淆處理得到混淆數(shù)據(jù)。拼接模塊114用于將記錄的若干個key/value值進(jìn)行拼接,得到字符串。
[0077]如圖2所示,服務(wù)端110中還包括規(guī)范化處理模塊115,用于按照原始數(shù)據(jù)的字符進(jìn)行規(guī)范化處理,每個字符占用固定寬度的像素。在本實(shí)施例中,每個字符可以占用10個像素。在其他實(shí)施例中,還可以設(shè)定每個字符占用5個、8個字符等等。通過規(guī)范化處理模塊115預(yù)先對原始數(shù)據(jù)進(jìn)行規(guī)范化處理,使得每個字符占用固定寬度的像素,以便于之后分割模塊111對原始數(shù)據(jù)進(jìn)行分割。
[0078]數(shù)據(jù)混淆模塊113對通過篩選模塊112篩選出的若干個位置的分割塊數(shù)據(jù)做混淆處理,可選的,混淆處理可以為:對篩選出的若干個位置填充隨機(jī)數(shù)據(jù);混淆處理還可以為:對篩選出的若干個位置的分割塊數(shù)據(jù)以特殊字符代替,在本實(shí)施例中特殊字符可以選用
等字符。因此,數(shù)據(jù)混淆模塊114在選出的位置上填充隨機(jī)數(shù)據(jù)或者以特殊字符代替,得到混淆數(shù)據(jù)。
[0079]如圖2所示,服務(wù)端110中還包括圖片化處理模塊116,用于對數(shù)據(jù)混淆模塊113做混淆處理得到的混淆數(shù)據(jù)進(jìn)行圖片化處理,并生成相應(yīng)的圖片地址。在本實(shí)施例中,生成的圖片地址可以是sr c地址,例如〈img src=”."/123456.jpg >”或<i mg src =,,…/123456.png>”,均可表不一個圖片的圖片地址。
[0080]服務(wù)端110中的拼接模塊114,用于對篩選模塊112篩選出的若干個位置相對應(yīng)的key/value值以約定字符進(jìn)行拼接,以得到字符串。其中約定字符可以為下劃線、斜線、反斜線等特殊字符,通過約定的特殊字符將各個key/value值拼接起來構(gòu)成字符串。
[0081]直接通過拼接得到的字符串還存在一定的風(fēng)險(xiǎn),由于原始數(shù)據(jù)直接暴露在html代碼中,如果被別有用心的人分析之后找到規(guī)律,則可能推理得到原始數(shù)據(jù),仍然有被抓取和獲知的可能。在本實(shí)施例中,為了進(jìn)一步降低被抓取的風(fēng)險(xiǎn),還可以進(jìn)行加密,此處的加密為狹義的加密,就是通過密鑰結(jié)合加密算法進(jìn)行加密,得到加密的字符串,即為加密串。如圖2所示,服務(wù)端110中還包括加密模塊117,用于在以約定字符串進(jìn)行拼接的過程中,加入約定密鑰進(jìn)行加密,得到加密串。在本實(shí)施例中,加密模塊117采用可逆加密算法進(jìn)行加密,可逆加密算法可以采用常用的RSA或DES等加密算法。
[0082]如圖2所示,服務(wù)端110中還包括調(diào)用接口模塊118,用于提供加密數(shù)據(jù)的調(diào)用接口,調(diào)用接口返回的數(shù)據(jù)格式為圖片地址與字符串或加密串以約定屬性值拼接。其中約定屬性值可以為rkey屬性,即通過將圖片化處理模塊116得到的圖片地址與拼接模塊114得到的字符串或者是加密模塊117得到的加密串以rkey屬性拼接在一起,得到最終的返回?cái)?shù)據(jù)為:
[0083]〈img src=,,.../123456.png,,rkey=,vCeKk7sUlvFcRCPIr3R0DCmSQM,/>
[0084]如果返回的數(shù)據(jù)為字符串,則rkey屬性中的值為拼接之后沒有經(jīng)過加密的字符串;如果返回的數(shù)據(jù)為加密串,則rkey屬性中的值為拼接之后經(jīng)過加密的加密串。
[0085]根據(jù)上述,圖3和圖4示意性示出根據(jù)本公開示例實(shí)施方式中服務(wù)端110防爬蟲抓取的方法的流程圖。
[0086]如圖3和圖4所示,在步驟Sll中,對原始數(shù)據(jù)進(jìn)行分割處理得到多個分割塊數(shù)據(jù),并以key/value形式存儲多個分割塊數(shù)據(jù)的位置/數(shù)值信息。
[0087]在步驟S12中,根據(jù)分割塊數(shù)據(jù)的位置/數(shù)值信息從多個位置中進(jìn)行隨機(jī)篩選,并記錄篩選出的若干個位置相對應(yīng)的key/value值。
[0088]在步驟S13中,對篩選出的若干個位置的分割塊數(shù)據(jù)做混淆處理得到混淆數(shù)據(jù)。
[0089]在步驟S14中,將記錄的若干個key/value值進(jìn)行拼接,得到字符串。
[0090]參見圖2所示的流程圖可知,本實(shí)施例提供的方法通過對原始數(shù)據(jù)進(jìn)行分割、篩選、混淆處理以及拼接,顯示過程中需要經(jīng)過圖片化處理以及CSS浮層控制才能最終顯示出原始數(shù)據(jù),可以防止爬蟲抓取。其中CSS是指層疊樣式表(Cascading Style Sheets),將網(wǎng)頁的多重樣式層疊為一個,并通常保存在CSS文件中。
[0091 ]如圖3所示,在本實(shí)施例中,在步驟SI I之前還包括:
[0092]步驟S10:按照原始數(shù)據(jù)的字符進(jìn)行規(guī)范化處理,每個字符占用固定寬度的像素。在本實(shí)施例中,每個字符可以占用1個像素。在其他實(shí)施例中,還可以設(shè)定每個字符占用5個、8個字符等等。通過預(yù)先對原始數(shù)據(jù)進(jìn)行規(guī)范化處理,使得每個字符占用固定寬度的像素,以便于之后對原始數(shù)據(jù)進(jìn)行分割。
[0093]在步驟S13中,對篩選出的若干個位置的分割塊數(shù)據(jù)做混淆處理可以為:對篩選出的若干個位置填充隨機(jī)數(shù)據(jù);還可以為:對篩選出的若干個位置的分割塊數(shù)據(jù)以特殊字符代替。在本實(shí)施例中特殊字符可以選用等字符。因此,步驟S13在選出的位置上填充隨機(jī)數(shù)據(jù)或者以特殊字符代替,得到混淆數(shù)據(jù)。
[0094]在本實(shí)施例中,步驟SI3之后,還可以包括:
[0095]步驟S15:對混淆數(shù)據(jù)進(jìn)行圖片化處理,并生成相應(yīng)的圖片地址。
[0096]在本實(shí)施例中,生成的圖片地址可以是src地址,例如〈img src=” ‘"/123456.jpg>”或〈img src=” "712345641^7,均可表示一個圖片的圖片地址。
[0097]在步驟S14中,對若干個key/value值以約定字符進(jìn)行拼接,得到字符串。其中約定字符可以為下劃線、斜線、反斜線等特殊字符,通過約定的特殊字符將各個key/value值拼接起來構(gòu)成字符串。
[0098]在本實(shí)施例中,步驟S14中,除了直接將key/value值以約定字符進(jìn)行拼接之外,還可以在以約定字符串進(jìn)行拼接的過程中,加入約定密鑰進(jìn)行加密,得到加密串。直接通過拼接得到的字符串還存在一定的風(fēng)險(xiǎn),由于原始數(shù)據(jù)直接暴露在html代碼中,如果被別有用心的人分析之后找到規(guī)律,則可能推理得到