偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

瀏覽器指紋如何識(shí)別來(lái)自網(wǎng)絡(luò)爬蟲的流量

安全 數(shù)據(jù)安全
瀏覽器指紋是一種先使用JavaScript腳本語(yǔ)言來(lái)識(shí)別、探測(cè)瀏覽器本身標(biāo)識(shí)和一些計(jì)算機(jī)硬件信息,再使用哈希函數(shù)創(chuàng)建哈希,然后對(duì)哈希值進(jìn)行比對(duì),進(jìn)而辨別訪問(wèn)是否來(lái)自同一用戶的技術(shù)。本文將為大家介紹識(shí)別網(wǎng)絡(luò)爬蟲流量和使用瀏覽器指紋技術(shù)的必要性,以及瀏覽器指紋如何識(shí)別網(wǎng)絡(luò)爬蟲。

一、識(shí)別網(wǎng)絡(luò)爬蟲流量的必要性

在互聯(lián)網(wǎng)上識(shí)別用戶身份和獲取用戶資料是一種尋常的行為,為特定用戶推送和定制不同內(nèi)容也較為普遍。但事實(shí)上,在互聯(lián)網(wǎng)存在海量的虛假流量,它們通常被用來(lái)大批量、分布式地采集網(wǎng)頁(yè)信息,進(jìn)行模擬登陸,模仿用戶行為進(jìn)而規(guī)避被封禁的風(fēng)險(xiǎn)。虛假流量的主體是網(wǎng)絡(luò)爬蟲,網(wǎng)絡(luò)爬蟲(Web Crawlers)是機(jī)器人的一種,用于將公開化的網(wǎng)絡(luò)數(shù)據(jù)的搜集自動(dòng)化[1]。雖然有些爬蟲會(huì)在被爬取網(wǎng)站的同意下搜集信息,但是大多數(shù)網(wǎng)絡(luò)爬蟲并不遵循網(wǎng)絡(luò)條款。

目前應(yīng)用最廣的網(wǎng)絡(luò)條款是robots.txt,其目的在于告訴爬蟲機(jī)器人網(wǎng)站的哪些頁(yè)面可以爬取,哪些頁(yè)面不允許被爬取,該條款只用于聲明,而不能強(qiáng)制迫使網(wǎng)絡(luò)爬蟲遵循其規(guī)定。如下圖是百度的部分robots.txt:

圖片圖片

圖1 百度部分robots.txt展示

二、使用瀏覽器指紋識(shí)別網(wǎng)絡(luò)爬蟲的必要性

目前網(wǎng)絡(luò)上針對(duì)網(wǎng)絡(luò)爬蟲有多種反制措施,比如網(wǎng)絡(luò)爬蟲頭部信息檢測(cè)、JavaScript加密參數(shù)、各種驗(yàn)證碼識(shí)別、網(wǎng)頁(yè)代碼混淆等。

1.網(wǎng)絡(luò)爬蟲頭部信息檢測(cè)

這種措施主要是針對(duì)爬蟲程序啟動(dòng)時(shí)沒(méi)有完全模擬瀏覽器頭部信息的情況。比如打開Edge瀏覽器的開發(fā)者工具,在網(wǎng)絡(luò)面板刷新頁(yè)面后可以抓到網(wǎng)絡(luò)數(shù)據(jù)包,打開訪問(wèn)百度頁(yè)面的數(shù)據(jù)包,可以看到大量請(qǐng)求標(biāo)頭:

圖片圖片

圖2 數(shù)據(jù)包請(qǐng)求標(biāo)頭

其中最為常用的便是Cookie,在Cookie中存在用戶的唯一標(biāo)志符,為了防止爬蟲復(fù)用該信息,通常里邊會(huì)存在一些擁有時(shí)效性的時(shí)間戳。這種方法因有可能侵犯隱私而受到一些抵制。此外,User-Agent也被用來(lái)防范網(wǎng)絡(luò)爬蟲,因?yàn)槟J(rèn)的網(wǎng)絡(luò)爬蟲對(duì)于這一頭部信息是缺失的,使用正常瀏覽器訪問(wèn)頁(yè)面會(huì)自帶瀏覽器的信息,而且該信息還被用來(lái)區(qū)分移動(dòng)端和瀏覽器端,面對(duì)不同瀏覽終端,會(huì)給用戶返回不同的頁(yè)面效果。但是這種反爬蟲措施的效果較弱,只要爬蟲將信息復(fù)制完整,在一定時(shí)間內(nèi)依然能夠發(fā)起大量的訪問(wèn)請(qǐng)求。

2.JavaScript加密參數(shù)

JavaScript加密參數(shù)指的是在用戶訪問(wèn)網(wǎng)站的時(shí)候,頭部會(huì)攜帶一些由網(wǎng)站的JavaScript代碼計(jì)算生成的值,該值每次計(jì)算結(jié)果都不盡相同,其主要應(yīng)用常用的前端加密庫(kù)CryptoJS進(jìn)行加密計(jì)算。

這種反爬蟲措施雖然提高了門檻,但是對(duì)于會(huì)閱讀JavaScript代碼的程序員來(lái)說(shuō),依然沒(méi)有任何難度。主要原因在于網(wǎng)站的前端代碼可以直接被用戶獲取,雖然可以有多種禁止用戶單擊右鍵或者打開開發(fā)者工具的措施,但是對(duì)于有編程基礎(chǔ)的人來(lái)說(shuō)形同虛設(shè)。

針對(duì)這種反爬蟲措施,用戶只需將網(wǎng)站的JavaScript加密參數(shù)相關(guān)代碼通過(guò)閱讀進(jìn)行復(fù)現(xiàn),或者直接拷貝下來(lái)進(jìn)行執(zhí)行,再與自己編寫的爬蟲代碼進(jìn)行耦合,依然能夠?qū)崿F(xiàn)對(duì)網(wǎng)站的訪問(wèn)請(qǐng)求。

3.各種驗(yàn)證碼檢測(cè)

目前驗(yàn)證碼檢測(cè)已經(jīng)十分廣泛,從早期的英文數(shù)字驗(yàn)證碼,到現(xiàn)在的漢字點(diǎn)選驗(yàn)證碼、滑塊驗(yàn)證碼等,有眾多的公司專門提供對(duì)應(yīng)的服務(wù),如網(wǎng)易易盾、極驗(yàn)、頂象等,如下圖所示:

圖片圖片

圖3 文字點(diǎn)選驗(yàn)證碼

但是隨著人工智能技術(shù)的發(fā)展,這些驗(yàn)證碼也逐漸拜倒在爬蟲技術(shù)之下。在github上已經(jīng)存在一些成熟的驗(yàn)證碼識(shí)別庫(kù)用于通過(guò)驗(yàn)證碼檢測(cè),比如dddocr,已經(jīng)可以直接調(diào)包識(shí)別英數(shù)驗(yàn)證碼、滑塊驗(yàn)證碼、文字點(diǎn)選驗(yàn)證碼等。即便是沒(méi)有對(duì)應(yīng)的識(shí)別庫(kù),也可以通過(guò)自己搭建深度學(xué)習(xí)環(huán)境來(lái)訓(xùn)練驗(yàn)證碼模型。

4.網(wǎng)頁(yè)代碼混淆

網(wǎng)頁(yè)代碼混淆是用來(lái)拔高JavaScript參數(shù)破解門檻的,包括驗(yàn)證碼識(shí)別在內(nèi),在提交參數(shù)的時(shí)候,都可以通過(guò)JavaScript腳本進(jìn)行參數(shù)加密。網(wǎng)頁(yè)的前端代碼是用戶可以直接獲取的,沒(méi)有秘密可言。網(wǎng)頁(yè)代碼混淆便是使得代碼不可讀,進(jìn)而提高參數(shù)破解難度。下圖是網(wǎng)易易盾的網(wǎng)頁(yè)混淆代碼:

圖片圖片

圖4 網(wǎng)易易盾混淆頁(yè)面

網(wǎng)頁(yè)代碼混淆通常是通過(guò)Babel庫(kù)來(lái)實(shí)現(xiàn)的,因此也存在還原的方法,利用Bbael庫(kù)AST抽象語(yǔ)法樹進(jìn)行還原目前已是成熟的技術(shù)。雖然做不到對(duì)復(fù)雜混淆代碼的完全還原,但也足以攻克加密參數(shù)了。

上述反爬蟲措施都存在或大或小的漏洞,爬蟲總是可以通過(guò)這樣或者那樣的方法來(lái)模擬用戶行為,進(jìn)而發(fā)起網(wǎng)絡(luò)請(qǐng)求。而接下來(lái)本文介紹的瀏覽器指紋技術(shù)則是很好的解決方案。

三、瀏覽器指紋技術(shù)概要

瀏覽器指紋是關(guān)于給定的瀏覽器、設(shè)備、操作系統(tǒng)和用戶的環(huán)境和位置信息的一組信息。[2]這些信息可以直接通過(guò)JavaScript搜集并發(fā)送給網(wǎng)站服務(wù)器。網(wǎng)絡(luò)爬蟲無(wú)法避開這些信息的發(fā)送,如果爬蟲直接復(fù)制了瀏覽器的相關(guān)指紋參數(shù),那么網(wǎng)站主機(jī)就可以根據(jù)指紋來(lái)確定流量是否來(lái)自同一用戶,進(jìn)一步根據(jù)發(fā)送頻率來(lái)限制流量。而且,瀏覽器指紋也可以獲取跨瀏覽器指紋,主要是操作系統(tǒng)信息和一些圖形卡信息,因此同一臺(tái)主機(jī)發(fā)起的請(qǐng)求完全可以被識(shí)別為同一用戶。而這種技術(shù)的好處在于無(wú)法感知,因?yàn)檫@些信息可以直接通過(guò)編程語(yǔ)言的接口來(lái)獲取,不會(huì)留下任何痕跡。

一些常用的指紋主要包括如下幾個(gè)方面:

  • 設(shè)備的功能(包括設(shè)備內(nèi)存、顏色深度、邏輯核心、觸控支持、屏幕參數(shù)等);
  • 操作系統(tǒng)的參數(shù)(操作系統(tǒng)版本、支持的字體列表、時(shí)區(qū)等);
  • 瀏覽器的特征(瀏覽器頭部版本、插件列表、屏幕分辨率、數(shù)據(jù)庫(kù)信息等);
  • 圖形卡信息(canvas畫布、WebGL渲染器等)。

獲取上述信息之后,通常不會(huì)把這些信息直接發(fā)送出去,而是對(duì)其進(jìn)行哈希編碼。哈希是指從一個(gè)可變大小的輸入中獲得一個(gè)固定長(zhǎng)度的輸出的過(guò)程。相同的輸入會(huì)有相同的輸出,而且哈希函數(shù)擁有不錯(cuò)的抗碰撞能力,即兩個(gè)不同的輸入很難獲得相同的輸出結(jié)果。利用這一特性,可以很輕易地辨別較長(zhǎng)的瀏覽器指紋是否是來(lái)自同一用戶。

如果要辨別流量是否來(lái)自于同一瀏覽器,只需要把瀏覽器對(duì)應(yīng)的信息搜集后哈希,然后放置于cookie或者一個(gè)單獨(dú)的參數(shù)中,發(fā)送給網(wǎng)站主機(jī)即可。這樣一來(lái),網(wǎng)站面對(duì)來(lái)自同一指紋的頻繁請(qǐng)求,可以及時(shí)進(jìn)行流量攔截。

如果爬蟲程序偽造了不同的瀏覽器頭部信息,網(wǎng)站也可以進(jìn)一步搜集圖形卡信息和操作系統(tǒng)參數(shù),因?yàn)橥慌_(tái)電腦的這些信息是相同的,這樣即便開啟多個(gè)瀏覽器或者偽造不同的瀏覽器頭部也可以輕易被識(shí)別出來(lái)。

四、瀏覽器指紋技術(shù)的缺陷

瀏覽器指紋技術(shù)也存在限制,主要在于用戶的設(shè)備是可以更新和升級(jí)的,一旦進(jìn)行更新和升級(jí),指紋將發(fā)生很大變化。而且如果爬蟲程序識(shí)別到了瀏覽器指紋識(shí)別技術(shù),也可以通過(guò)編寫JavaScript,完全偽造一套指紋環(huán)境,并且不斷隨機(jī)其中的參數(shù),從而達(dá)到生成新指紋的效果。這樣一來(lái),網(wǎng)站針對(duì)同一指紋的請(qǐng)求頻率來(lái)識(shí)別的方案將會(huì)失效。

但是不論如何,瀏覽器指紋依然是目前抵制網(wǎng)絡(luò)爬蟲最堅(jiān)實(shí)的方案。因?yàn)闉g覽器指紋信息是極其繁雜的,網(wǎng)站的瀏覽器指紋檢測(cè)方案可以不斷改進(jìn),并搭配JavaScript參數(shù)加密和混淆,進(jìn)而可以極大增加破解難度。如下圖所示的瀏覽器本身的信息:

圖片圖片

圖5 瀏覽器信息

這些信息都直接包含在瀏覽器的window當(dāng)中。瀏覽器指紋技術(shù)不僅可以檢測(cè)各類信息,也可以偵測(cè)用戶請(qǐng)求網(wǎng)站的時(shí)候,是否存在這些函數(shù)方法。這樣一來(lái),除非爬蟲程序完全將瀏覽器的接口自己實(shí)現(xiàn),進(jìn)行繁重的補(bǔ)環(huán)境操作,否則也沒(méi)有什么爬取數(shù)據(jù)的捷徑可行。

參考文獻(xiàn):

[1] Vastel, A., Rudametkin, W., Rouvoy, R., Blanc, X. (2020, February). FP-Crawlers: Studying the Resilience of Browser Fingerprinting to Block Crawlers. In NDSS Workshop on Measurements, Attacks, and Defenses for the Web (MADWeb’20).

[2] Browser Fingerprint Coding Methods Increasing the Effectiveness of User Identification in the Web Traffic [J] . Marcin Gabryel,Konrad Grzanek,Yoichi Hayashi.  Journal of Artificial Intelligence and Soft Computing Research . 2020 (4)

責(zé)任編輯:武曉燕 來(lái)源: 中國(guó)保密協(xié)會(huì)科學(xué)技術(shù)分會(huì)
相關(guān)推薦

2017-05-02 09:25:13

瀏覽器指紋追蹤虛擬化

2020-08-16 08:51:22

WEB安全網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)欺騙

2011-08-29 10:11:30

Firefox 6Web瀏覽器

2019-07-16 07:15:42

瀏覽器網(wǎng)絡(luò)威脅網(wǎng)絡(luò)安全

2019-04-29 09:46:23

瀏覽器網(wǎng)絡(luò)威脅網(wǎng)絡(luò)攻擊

2019-07-31 16:44:40

Python網(wǎng)絡(luò)爬蟲瀏覽器

2010-04-05 21:57:14

Netscape瀏覽器

2024-04-30 11:21:04

瀏覽器指紋瀏覽器

2013-11-18 14:42:53

瀏覽器渲染

2012-10-29 16:22:18

遨游瀏覽器

2012-03-19 17:25:22

2012-03-20 11:31:58

移動(dòng)瀏覽器

2012-03-20 11:41:18

海豚瀏覽器

2012-03-20 11:07:08

2013-07-25 14:17:17

2009-04-03 09:09:21

瀏覽器網(wǎng)絡(luò)辦公室

2013-05-15 10:00:09

網(wǎng)絡(luò)瀏覽器瀏覽器

2009-12-09 15:52:27

Chrome網(wǎng)絡(luò)瀏覽器

2010-12-21 10:11:35

手機(jī)瀏覽器

2013-01-14 10:58:51

傲游云瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)