2010-11-02 89 views
5

一個網站可以檢測到瀏覽器擴展名正在被使用嗎?具體而言,在這種情況下,該擴展的作者希望阻止網站識別用戶何時使用該擴展。那麼,對於一個通用的例子,雅虎的程序員能不能呢?編寫代碼,以便www.yahoo.com可以告訴用戶何時使用Firebug?如果雅虎!可以做到這一點,Firebug的製造商可以做些什麼來防止這種情況發生?網站可以檢測到瀏覽器擴展名正在被使用嗎?

回答

4

貌似可以使用JavaScript檢測在Firefox他們中的一些,這裏是一個文章:

http://jeremiahgrossman.blogspot.com/2006/08/i-know-what-youve-got-firefox.html

還有一:

http://ha.ckers.org/blog/20060823/detecting-firefox-extentions/

這裏是它是如何檢測:

// popular extensions. 
var e = { 
"Adblock Plus" : "chrome://adblockplus/skin/adblockplus.png", 
"Auto Copy" : "chrome://autocopy/skin/autocopy.png", 
"ColorZilla" : "chrome://colorzilla/skin/logo.png", 
"Customize Google" : "chrome://customizegoogle/skin/32x32.png", 
"DownThemAll!" : "chrome://dta/content/immagini/icon.png", 
"Faster Fox" : "chrome://fasterfox/skin/icon.png", 
"Flash Block" : "chrome://flashblock/skin/flash-on-24.png", 
"FlashGot" : "chrome://flashgot/skin/icon32.png", 
"Forecastfox" : "chrome://forecastfox/skin/images/icon.png", 
"Google Toolbar" : "chrome://google-toolbar/skin/icon.png", 
"Greasemonkey" : "chrome://greasemonkey/content/status_on.gif", 
"IE Tab" : "chrome://ietab/skin/ietab-button-ie16.png", 
"IE View" : "chrome://ieview/skin/ieview-icon.png", 
"JS View" : "chrome://jsview/skin/jsview.gif", 
"Live HTTP Headers" : "chrome://livehttpheaders/skin/img/Logo.png", 
"MeasureIt" : "chrome://measureit/skin/measureit.png", 
"SEO For Firefox" : "chrome://seo4firefox/content/icon32.png", 
"SEOpen" : "chrome://seopen/skin/seopen.png", 
"Search Status" : "chrome://searchstatus/skin/cax10.png", 
"Server Switcher" : "chrome://switcher/skin/icon.png", 
"StumbleUpon" : "chrome://stumbleupon/content/skin/logo32.png", 
"Tab Mix Plus" : "chrome://tabmixplus/skin/tmp.png", 
"Torrent-Search Toolbar" : "chrome://torrent-search/skin/v.png", 
"User Agent Switcher" : "chrome://useragentswitcher/content/logo.png", 
"View Source With" : "chrome://viewsourcewith/skin/ff/tb16.png", 
"Web Developer" : "chrome://webdeveloper/content/images/logo.png", 
"Unhide Passwords" : "chrome://unhidepw/skin/unhidepw.png", 
"UrlParams" : "chrome://urlparams/skin/urlparams32.png", 
"NewsFox" : "chrome://newsfox/skin/images/home.png", 
"Add N Edit Cookies" : "chrome://addneditcookies/skin/images/anec32.png", 
"GTDGmail" : "chrome://gtdgmail/content/gtd_lineitem.png", 
"QuickJava" : "chrome://quickjava/content/js.png", 
"Adblock Filterset.G Updater" : "chrome://unplug/skin/unplug.png", 
"BBCode" : "chrome://bbcode/skin/bbcode.png", 
"BugMeNot" : "chrome://bugmenot/skin/bugmenot.png", 
"ConQuery" : "chrome://conquery/skin/conquery.png", 
"Download Manager Tweak" : "chrome://downloadmgr/skin/downloadIcon.png", 
"Extended Cookie Manager" : "chrome://xcm/content/allowed.png", 
"FireBug" : "chrome://firebug/content/firebug32.png", 
"FoxyTunes" : "chrome://foxytunes/skin/logo.png", 
"MR Tech Disable XPI Install Delay" : "chrome://disable_xpi_delay/content/icon.png", 
"SessionSaver .2" : "chrome://sessionsaver/content/ss.png", 
"spooFX" : "chrome://spoofx/skin/main/spoofx.png", 
"Statusbar Clock" : "chrome://timestatus/skin/icon.png", 
"Torbutton" : "chrome://torbutton/skin/bigbutton_gr.png", 
"UnPlug" : "chrome://unplug/skin/unplug.png", 
"View Source Chart" : "chrome://vrs/skin/vrssmall.png", 
"XPather" : "chrome://xpather/content/iconka.png", 

}; 

if (is_mozilla) { 
showExtensions(); 
} 

function showExtensions() { 
for (var i in e) { 
    var img = document.createElement("img"); 
    img.setAttribute("border", '0'); 
    img.setAttribute("width", '0'); 
    img.setAttribute("height", '0'); 
    img.setAttribute("onload", "document.getElementById('ext'). 
appendChild(document.createElement('li')).innerHTML='" + i + "'"); 
    img.setAttribute("src", e[i]); 
} 

} 

因此,看起來像阻止這種檢測,你不需要有唯一的資源,可以識別插件或命名您的資源與現有插件相同的名稱來掩蓋。

+0

很好找。另一個(同樣的方法,但更多的擴展名):http://www.phpsolvent.com/wordpress/?p=1888 – 2010-11-02 14:55:29

+0

謝謝你,羅馬裏奧。你的回答肯定指向了正確的方向。這聽起來像是如果我不使用圖像(不是很好,但確定)或讓用戶禁用javascript(壞),用戶可以匿名使用Firefox擴展。一個網站可以在我的擴展中搜索其他(非圖像)文件嗎?另外,您是否知道在IE或Google Chrome中這個問題是如何發生的? – John 2010-11-03 04:16:13

+0

好吧,我的猜測是有些資源是可以訪問的,可能只有那些圖片才能在插件頁面上顯示出來。至於IE - 它們使用ActiveX作爲附加格式,有功能可以查看是否安裝了ActiveX,所以如果知道該名稱,可以檢測它是否存在。 – 2010-11-03 14:55:51

1

該信息不是http協議的一部分,如果服務器端從瀏覽器獲取請求,它幾乎不會影響http頭中的信息類型。唯一可行的方法是通過JavaScript,這樣,作爲一名程序員,您可以創建JavaScript,從瀏覽器中獲取這些信息。但僅限於瀏覽器具有此功能的可用功能。

1

是的。當用戶請求幫助時,我使用它來自動填充隱藏表單字段,所以我知道是否有插件導致問題:

var plugins = ""; 
for (var i = 0; i < navigator.plugins.length; i++) 
{ 
    plugins += navigator.plugins[i].name; 
    if (i != (navigator.plugins.length - 1)) 
    { 
     plugins += ", "; 
    } 
} 
+1

問題是關於擴展,而不是插件。 (在Firefox地址欄中嘗試使用'javascript:navigator.plugins [0] .name'來查看第一個插件的名稱) – 2010-11-02 15:18:48

+1

+1,即使這不能回答這個問題,這真是個好主意! – tster 2010-11-02 15:21:06

+0

插件和擴展插件對我來說都意味着同樣的事情。 – 2010-11-02 16:23:31

相關問題