2014-03-07 131 views
1

是否可以通過JS檢測用戶在其瀏覽器上安裝了哪些擴展/附加組件?該用例是一個特定的Chrome擴展,自動填充將某些文本值設置爲隱藏的zip字段導致一些驗證失敗,我想向用戶顯示一條消息,指出此擴展可能會產生問題。檢測瀏覽器中安裝的擴展?

+0

您無法控制用戶如何配置從Javascript他們的瀏覽器去做。這將是一個巨大的安全漏洞。Firefox附加組件可以選擇是否可以通過網絡訪問(可檢測),但這完全取決於附加組件開發者(意味着惡意附加組件顯然將選擇隱藏)。我懷疑這對於Chrome擴展程序來說是相似的。 – user2867288

+0

Chrome中的加載項檢測:http://blog.kotowicz.net/2012/02/intro-to-chrome-addons-hacking.html – user423430

回答

1

對於Firefox:AddonManager.jsm - MDN

Components.utils.import("resource://gre/modules/AddonManager.jsm"); 

AddonManager.getAllAddons(function(aAddons) { 
    // Here aAddons is an array of Addon objects 
}); 
// This code will execute before the code inside the callback 

必須運行此:在代碼第一個片段代碼在privelaged JavaScript,如不在選項卡中。您可以嘗試specialPowers,但我不知道它是如何工作的。

要從您的站點運行privelaged腳本,您必須創建一個firefox插件和addEventListener到您的站點,就像列出插件的按鈕一樣,您可以附加一個privelaged函數。

使用插件啓用/禁用插件,但用戶覺得煩人,因爲插件有時會在安裝時執行一些obtrsuvie內容。

+0

這不會幫助我的用例,因爲需要安裝單獨的附加組件。 – zodvik

+1

親愛的@Noitidart,我在index.js中使用你的代碼如下: const {AddonManager} = require(「resource://gre/modules/AddonManager.jsm」); AddonManager.getAllAddons(function(aAddons){//這裏aAddons是一個Addon對象數組 });
然而它不起作用 –

+1

哦,不要求@ H.Aqjn你應該做導入。所以'var {Cu} = require('chrome');'然後做'Cu.import('resoruce://gre/modules/AddonManager.jsm')'那麼它就會工作。 – Noitidart

1

對於Chrome擴展專門,只有某些擴展可檢測,所以這不是一個很好的方法,但據我所知,沒有任何可靠的方法來檢測瀏覽器擴展。

對於要檢測的擴展名,您需要使用其擴展名及其Web訪問資源。

一些擴展程序具有可訪問的網頁資源,有些不具有網頁訪問資源。如果沒有網頁可訪問的資源,您將無法檢測到該擴展。

要找到網頁可訪問的資源,您需要查看擴展chrome.manifest文件。它會告訴你是否有網絡可訪問的內容。例如,chrome.manifest文件可能會說:

內容的Web開發人員的內容/網絡開發/ contentaccessible = YES

一般來說,它不是很有效的去尋找瀏覽器擴展,因爲你必須知道您希望提前檢測哪些擴展程序,以及多次檢測不到它們。

而且,這裏就是我,當我試圖做同樣的事情here

0

在JavaScript檢查,看是否zip字段已經改變,而它隱藏和顯示警告用戶使用的一個很好的鏈接延期可能會導致問題。

相關問題