昨天南昌網(wǎng)絡(luò)公司小編為大家介紹了關(guān)于使用HTTP首部采集指紋檢測拓展的方法,那么之前小編也說到過,檢測拓展的方法有很多,所以今天小編又為大家送福利了,再來為大家介紹檢測拓展的另一種方法:使用DOM 采集指紋檢測拓展。
不得不說的是,DOM樹枝繁葉茂,可以訪問的DOM屬性也有很多,不過有些屬性只有某些瀏覽器中才有。同理,某些DOM屬性也只有安裝(并激活)了特定擴(kuò)展之后才有。
在通過DOM采集指紋時,需要查看內(nèi)嵌框架、疊加層和不可見的元素。有時候,這些元素會在特定條件下才出現(xiàn)在Web應(yīng)用中。使用Firebug之類的工具,可以看到擴(kuò)展在空HTML頁面中都會做什么,然后基于擴(kuò)展代碼分析,掌握它們會在頁面中添加什么內(nèi)容。下面小編就通過兩個例子來加以說明,這樣大家也更好理解。
1、LastPass的例子
LastPass是一個密碼管理工具,可以讓用戶的密碼更安全。在Chrome中,LastPass擴(kuò)展會在HTML頁面開始構(gòu)建之前勾連DOM。在Chrome擴(kuò)展中,這是在manifest.json文件中配置的。如下所示,針對所有URL,都會在document_start期間加載onloadwff.js:
"all_frames": true,
"js": [ "onloadwff.js" ],
"matches": [ "http://*/*", "https://*/*", "file:///*" ],
"run_at": "document_start"
到了這里,南昌網(wǎng)站建設(shè)小編想說的是,我們在這里先忽略file:///*匹配模式這個問題,只考慮采集指紋。在JavaScript文件onloadwff.js中,會把自定義的函數(shù)添加給DOMContentLoaded事件。瀏覽器會在文檔加載和解析之后觸發(fā)這個事件,但通常是在內(nèi)部框架、圖片和樣式表被解析之前。最后,擴(kuò)展會運(yùn)行一個函數(shù),修改渲染后頁面的DOM,給它添加一個新的、空的script標(biāo)簽:
這個擴(kuò)展也會在DOM底部嵌入JavaScript。但不管怎樣,現(xiàn)在的DOM中就有了它存在的線索。通過檢測DOM來采集瀏覽器屬性的指紋是很有效的,而對LastPass來說,同樣如此。不過LastPass還有個問題,假如HTML中不包含表單,那么LastPass就不會修改DOM。在onloadwff.js文件中,可以清楚地看到這一點(diǎn)。相關(guān)條件在修改DOM的代碼之前:
if(b != "acidtests.org" &&
a.getElementById("hiddenlpsubmitdiv") == null &&
a.forms.length > 0) {
這個if語句檢測當(dāng)前頁面,確定不是acidtests.org,而且DOM中并不包含hiddenlpsubmitdiv腳本,同時至少要有一個HTML表單。如果頁面中包含表單,則修改DOM,我們可以通過以下JavaScript,來檢測LastPass存在與否:
首先,JavaScript檢測前面討論的腳本元素。如果沒找到,則進(jìn)一步檢測嵌入的JavaScript。最后,如果頁面中沒有表單,則腳本會更新result變量。
根據(jù)DOM屬性有無來采集瀏覽器擴(kuò)展指紋是一種比較可靠的方式??梢宰鳛榫€索的DOM屬性存在與否,完全取決于目標(biāo)有無。
2、Firebug的例子
Firebug可以作為擴(kuò)展安裝,也可以作為腳本加載(Firebug Lite)。就以Firebug為例,來看一下如何檢測擴(kuò)展的少量差異。在知道安裝了擴(kuò)展之后,應(yīng)該確認(rèn)它就是我們知道的擴(kuò)展,而非Lite版本。這并不容易,因?yàn)閮蓚€版本會在DOM中生成相同的屬性。不過,可以利用一個只有Lite版本中才有的屬性。
要檢測Firebug擴(kuò)展,使用這些DOM屬性:!!window.console.clear、!!window.console.exception和!!window.console.table。如果它們?nèi)糠祷豻rue,則說明瀏覽器安裝并激活了Firebug。
僅針對Firebug Lite的測試是!!window.console.provider。如果你想確定該擴(kuò)展不是Lite版本,就需要最后一個測試條件返回false。
以上就是南昌網(wǎng)絡(luò)公司小編今天為大家介紹的關(guān)于使用DOM 采集指紋檢測拓展的方法,感興趣的朋友可以多多了解一下,如果看完之后還有哪些不懂的地方,隨時歡迎您來電和我們聯(lián)系,我們到時在一一為您解答。此外,如有南昌網(wǎng)站建設(shè)、微信開發(fā)、手機(jī)APP開發(fā)、購物商城網(wǎng)站建設(shè)等方面的需求,歡迎致電百恒網(wǎng)絡(luò),百恒將隨時為您效勞!