ElbertF 14 years ago
parent b4aef7d95e
commit 3531f643a7

@ -1,9 +1,5 @@
content wappalyzer chrome/content/
locale wappalyzer en-US chrome/locale/en-US/
skin wappalyzer classic/1.0 chrome/skin/
overlay chrome://browser/content/browser.xul chrome://wappalyzer/content/overlay.xul
override chrome://wappalyzer/content/overlay.xul chrome://wappalyzer/content/mobile/overlay.xul application={a23983c0-fd0e-11dc-95ff-0800200c9a66}
override chrome://wappalyzer/content/options.xul chrome://wappalyzer/content/mobile/options.xul application={a23983c0-fd0e-11dc-95ff-0800200c9a66}
override chrome://wappalyzer/skin/overlay.css chrome://wappalyzer/skin/mobile/overlay.css application={a23983c0-fd0e-11dc-95ff-0800200c9a66}
content wappalyzer chrome/content/
locale wappalyzer en-US chrome/locale/en-US/
skin wappalyzer classic/1.0 chrome/skin/
overlay chrome://browser/content/browser.xul chrome://wappalyzer/content/overlay.xul

@ -25,7 +25,8 @@ wappalyzer.cats = {
19: { name: 'Miscellaneous', plural: 'Miscellaneous' },
20: { name: 'Editor', plural: 'Editors' },
21: { name: 'LMS', plural: 'LMS' },
22: { name: 'Web server', plural: 'Web servers' }
22: { name: 'Web server', plural: 'Web servers' },
23: { name: 'Cache tool', plural: 'Cache tools' }
};
wappalyzer.apps = {
@ -33,6 +34,7 @@ wappalyzer.apps = {
'2z Project': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+2z project/i },
'AddThis': { cats: { 1: 5 }, html: /<script[^>]* src=("|')[^>]*addthis\.com\/js/ },
'Adobe GoLive': { cats: { 1: 20 }, html: /<meta name=("|')generator("|') [^>]+Adobe GoLive/i },
'Advanced Web Stats': { cats: { 1: 10 }, html: /aws.src = [^<]+caphyon\-analytics/i },
'Amiro.CMS': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Amiro/i },
'Apache': { cats: { 1: 22 }, headers: { 'Server': /Apache/i } },
'AWStats': { cats: { 1: 10 }, html: /<meta name=("|')generator("|') [^>]+AWStats/i },
@ -55,25 +57,28 @@ wappalyzer.apps = {
'Coppermine': { cats: { 1: 7 }, html: /<!--Coppermine Photo Gallery/i },
'Cotonti': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Cotonti/i },
'cPanel': { cats: { 1: 9 }, html: /<!-- cPanel/i },
'Crazy Egg': { cats: { 1: 10 }, html: /<script type=("|')text\/javascript("|') src=("|')http:\/\/cetrk\.com\/pages\/scripts\/[0-9]+\/[0-9]+\.js("|')/ },
'Crazy Egg': { cats: { 1: 10 }, html: /<script type=("|')text\/javascript("|') src=("|')[^>]+cetrk\.com\/pages\/scripts\/[0-9]+\/[0-9]+\.js("|')/ },
'CS Cart': { cats: { 1: 6 }, html: /&nbsp;Powered by (<a href=.http:\/\/www\.cs\-cart\.com|CS\-Cart)/i },
'CubeCart': { cats: { 1: 6 }, html: /Powered by <a href=.http:\/\/www\.cubecart\.com/i },
'cufon': { cats: { 1: 17 }, html: /(<script[^>]* src=("|')[^>]*cufon\-yui\.js|<script[^>]*>[^<]+Cufon\.now\(\))/i },
'Danneo CMS': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Danneo CMS/i },
'Danneo CMS': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Danneo/i },
'DataLife Engine': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+DataLife Engine/i },
'DirectAdmin': { cats: { 1: 9 }, html: /<a[^>]+>DirectAdmin<\/a> Web Control Panel/i },
'Disqus': { cats: { 1: 15 }, html: /(<div[^>]+id=("|')disqus_thread("|')|<script[^>]+disqus_url)/ },
'dojo': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*dojo(\.xd)?\.js("|')/i },
'dojo': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*dojo(\.xd)?\.js/i },
'Dokeos': { cats: { 1: 21 }, html: /(<meta name=("|')generator("|') [^>]+Dokeos|Portal <a[^>]+>Dokeos|@import "[^"]+dokeos_blue)/i, headers: { 'X-Powered-By': /Dokeos/ } },
'DokuWiki': { cats: { 1: 8 }, html: /<meta name=("|')generator("|') [^>]+DokuWiki/i },
'DotNetNuke': { cats: { 1: 1 }, html: /(<meta name=("|')generator("|') [^>]+DotNetNuke|<!\-\- by DotNetNuke Corporation)/i },
'DreamWeaver': { cats: { 1: 20 }, html: /(<!\-\-[^>]*(InstanceBeginEditable|Dreamweaver[^>]+target|DWLayoutDefaultTable)|function MM_preloadImages\(\) {)/ },
'Drupal': { cats: { 1: 1 }, html: /(<script [^>]+drupal\.js|jQuery\.extend\(Drupal\.settings, \{|Drupal\.extend\(\{ settings: \{|<link[^>]+sites\/(default|all)\/themes\/|<style.+sites\/(default|all)\/(themes|modules)\/)/i, headers: { 'X-Drupal-Cache': /.*/ } },
'Drupal': { cats: { 1: 1 }, html: /(<script [^>]+drupal\.js|jQuery\.extend\(Drupal\.settings, \{|Drupal\.extend\(\{ settings: \{|<link[^>]+sites\/(default|all)\/themes\/|<style[^>]+sites\/(default|all)\/(themes|modules)\/)/i, headers: { 'X-Drupal-Cache': /.*/, 'Expires': /19 Nov 1978/ } },
'Dynamicweb': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Dynamicweb/i },
'e107': { cats: { 1: 1 }, html: /<script [^>]+e107\.js/i },
'ExtJS': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*ext\-base\.js("|')/i },
'ExpressionEngine': { cats: { 1: 1 }, headers: { 'Set-Cookie': /exp_last_activity/ } },
'eZ Publish': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+eZ Publish/i },
'FluxBB': { cats: { 1: 2 }, html: /Powered by (<strong>)?<a href=("|')[^>]+fluxbb/i },
'Flyspray': { cats: { 1: 13 }, html: /(<a[^>]+>Powered by Flyspray|<map id=("|')projectsearchform)/ },
'FrontPage': { cats: { 1: 20 }, html: /<meta name=("|')GENERATOR("|') [^>]+Microsoft FrontPage/i },
'FrontPage': { cats: { 1: 20 }, html: /(<meta name=("|')GENERATOR("|') [^>]+Microsoft FrontPage|<html[^>]+urn:schemas\-microsoft\-com:office:office)/i },
'Get Satisfaction': { cats: { 1: 13 }, html: /var feedback_widget = new GSFN\.feedback_widget\(feedback_widget_options\)/ },
'Google Analytics': { cats: { 1: 10 }, html: /(\.google\-analytics\.com\/ga\.js|<script src=("|')[^"]+google-analytics\.com\/urchin\.js("|'))/i },
'Google Font API': { cats: { 1: 17 }, html: /<link[^>]* href=("|')http:\/\/fonts\.googleapis\.com/ },
@ -82,11 +87,14 @@ wappalyzer.apps = {
'Graffiti CMS': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Graffiti CMS/i },
'Gravity Insights': { cats: { 1: 10 }, html: /gravityInsightsParams\.site_guid = '/ },
'Hotaru CMS': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Hotaru CMS/i },
'IIS': { cats: { 1: 22 }, headers: { 'Server': /IIS/i } },
'InstantCMS': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+InstantCMS/i },
'IPB': { cats: { 1: 2 }, html: /<script [^>]+jscripts\/ips_/i },
'iWeb': { cats: { 1: 20 }, html: /<meta name=("|')generator("|') [^>]+iWeb/i },
'Jalios': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Jalios/i },
'Joomla': { cats: { 1: 1 }, html: /(<meta name=("|')generator("|') [^>]+Joomla|<!\-\- JoomlaWorks "K2")/i, headers: { 'X-Content-Encoded-By': /Joomla/ } },
'jQuery UI': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*jquery\-ui[^>]*\.js/i },
'jQuery': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*jquery[^>]*\.js/i },
'jQuery': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*jquery[^>]*\.js/i, js: 'window.jQuery' },
'JTL Shop': { cats: { 1: 6 }, html: /(<input[^>]+name=('|")JTLSHOP|<a href=('|")jtl\.php)/i },
'K2': { cats: { 1: 19 }, html: /<!\-\- JoomlaWorks "K2"/ },
'Kampyle': { cats: { 1: 10 }, html: /<script[^>]* src=("|')http:\/\/cf\.kampyle\.com\/k_button\.js("|')/ },
@ -96,13 +104,15 @@ wappalyzer.apps = {
'Koobi': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Koobi/i },
'lighttpd': { cats: { 1: 22 }, headers: { 'Server': /lighttpd/i } },
'LiveJournal': { cats: { 1: 11 }, url: /^(www.)?.+\.livejournal\.com/i },
'Lotus Domino': { cats: { 1: 22 }, headers: { 'Server': /Lotus\-Domino/i } },
'Magento': { cats: { 1: 6 }, html: /var BLANK_URL = '[^>]+js\/blank\.html'/i },
'Mambo': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Mambo/i },
'MantisBT': { cats: { 1: 13 }, html: /<img[^>]+ alt=("|')Powered by Mantis Bugtracker/i },
'MaxSite CMS': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+MaxSite CMS/i },
'MediaWiki': { cats: { 1: 8 }, html: /(<meta name=("|')generator("|') [^>]+MediaWiki|<a[^>]+>Powered by MediaWiki<\/a>)/i },
'Meebo': { cats: { 1: 5 }, html: /(<iframe id=("|')meebo\-iframe("|')|Meebo\('domReady'\))/ },
'Microsoft ASP.NET': { cats: { 1: 18 }, html: /<input[^>]+name=("|')__VIEWSTATE/, headers: { 'X-Powered-By': /ASP\.NET/ } },
'Microsoft ASP.NET': { cats: { 1: 18 }, html: /<input[^>]+name=("|')__VIEWSTATE/, headers: { 'X-Powered-By': /ASP\.NET/, 'X-AspNet-Version': /.+/ } },
'Microsoft SharePoint': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Microsoft SharePoint/i, headers: { 'MicrosoftSharePointTeamServices': /.*/, 'X-SharePointHealthScore': /.*/, 'SPRequestGuid': /.*/ } },
'MiniBB': { cats: { 1: 2 }, html: /<a href=("|')[^>]+minibb.+\s+<!--End of copyright link/i },
'Mint': { cats: { 1: 10 }, html: /<script[^>]* src=("|')[^>]*mint\/\?js/i },
'MochiKit': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*MochiKit\.js/i },
@ -113,7 +123,7 @@ wappalyzer.apps = {
'Moogo': { cats: { 1: 1 }, html: /<script[^>]* src=("|')[^"']+kotisivukone.js/ },
'MooTools': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*mootools[^>]*\.js("|')/i },
'Movable Type': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+Movable Type/i },
'MyBB': { cats: { 1: 2 }, html: /(<script .+\s+<!--\s+lang\.no_new_posts|<a[^>]* title=("|')Powered By MyBB)/i },
'MyBB': { cats: { 1: 2 }, html: /(<script [^>]+\s+<!--\s+lang\.no_new_posts|<a[^>]* title=("|')Powered By MyBB)/i },
'MyBlogLog': { cats: { 1: 5 }, html: /<script[^>]* src=("|')[^>]*pub\.mybloglog\.com/i },
'Nedstat': { cats: { 1: 10 }, html: /sitestat\(("|')http:\/\/nl\.sitestat\.com/ },
'Nginx': { cats: { 1: 22 }, headers: { 'Server': /nginx/i } },
@ -123,6 +133,7 @@ wappalyzer.apps = {
'openEngine': { cats: { 1: 1 }, html: /<meta[^>]+openEngine/i },
'osCommerce': { cats: { 1: 6 }, html: /<!-- header_eof \/\/-->/i },
'osCSS': { cats: { 1: 6 }, html: /<body onload=("|')window\.defaultStatus='oscss templates';("|')/i },
'PANSITE': { cats: { 1: 1 }, html: /<meta NAME=("|')(DC\.)?Generator("|')[^>]+PANSITE/i },
'papaya CMS': { cats: { 1: 1 }, html: /<link[^>]*\/papaya-themes\//i },
'PHP-Fusion': { cats: { 1: 1 }, html: /Powered by <a href=("|')[^>]+php-fusion/i },
'PHP-Nuke': { cats: { 1: 2 }, html: /(<meta name=("|')generator("|') [^>]+PHP-Nuke|<[^>]+Powered by PHP\-Nuke)/i },
@ -136,7 +147,7 @@ wappalyzer.apps = {
'Plura': { cats: { 1: 19 }, html: /<iframe src="http:\/\/pluraserver\.com/ },
'posterous': { cats: { 1: 1, 2: 11 }, html: /<div class=("|')posterous/i },
'Prestashop': { cats: { 1: 6 }, html: /(<meta name=("|')generator("|') [^>]+PrestaShop|Powered by <a href=("|')[^>]+PrestaShop)/i },
'Prototype': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*prototype\.js("|')/i },
'Prototype': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*(prototype|protoaculous)\.js("|')/i },
'punBB': { cats: { 1: 2 }, html: /Powered by <a href=("|')[^>]+punbb/i },
'Quantcast': { cats: { 1: 10 }, html: /<script[^>]* src=("|')http:\/\/edge\.quantserve\.com\/quant\.js("|')>/i },
'Quick.Cart': { cats: { 1: 6 }, html: /<a href="[^>]+opensolution\.org\/">Powered by/i },
@ -146,19 +157,20 @@ wappalyzer.apps = {
'Reinvigorate': { cats: { 1: 10 }, html: /reinvigorate\.track\("/ },
'S.Builder': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+S\.Builder/i },
's9y': { cats: { 1: 1 }, html: /<meta name=("|')Powered-By("|') [^>]+Serendipity/i },
'script.aculo.us': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*scriptaculous\.js("|')/i },
'script.aculo.us': { cats: { 1: 12 }, html: /<script[^>]* src=("|')[^>]*(scriptaculous|protoaculous)\.js("|')/i },
'ShareThis': { cats: { 1: 5 }, html: /<script[^>]+ src=("|')[^"']+w\.sharethis\.com\//i },
'sIFR': { cats: { 1: 17 }, html: /<script[^>]* src=("|')[^>]*sifr\.js/i },
'Site Meter': { cats: { 1: 10 }, html: /<script[^>]* src=("|')http:\/\/[^.]+\.sitemeter.com\/js\/counter\.js\?site=/i },
'SiteCatalyst': { cats: { 1: 10 }, html: /var s_code=s\.t\(\);if\(s_code\)document\.write\(s_code\)/i },
'SiteEdit': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+SiteEdit/i },
'SMF': { cats: { 1: 2 }, html: /<script .+\s+var smf_/i },
'SMF': { cats: { 1: 2 }, html: /<script [^>]+\s+var smf_/i },
'sNews': { cats: { 1: 1 }, html: /<meta name=("|')Generator("|') [^>]+sNews/ },
'Snoobi': { cats: { 1: 10 }, html: /<script[^>]* src=("|')[^"']+snoobi\.com\/snoop\.php/ },
'SOBI 2': { cats: { 1: 19 }, html: /(<!\-\- start of Sigsiu Online Business Index|<div[^>]* class=("|')sobi2)/i },
'SPIP': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+SPIP/i, headers: { 'X-Spip-Cache': /.*/ } },
'SQL Buddy': { cats: { 1: 3 }, html: /(<title>SQL Buddy<\/title>|<[^>]+onclick=("|')sideMainClick\(("|')home\.php)/i },
'Squarespace': { cats: { 1: 1 }, html: /Squarespace\.Constants\.CURRENT_MODULE_ID/i },
'Squiz Matrix': { cats: { 1: 1 }, html: /( Running (MySource|Squiz) Matrix|<meta name=("|')generator("|') [^>]+Squiz Matrix)/i, 'X-Powered-By': /Squiz Matrix/ },
'StatCounter': { cats: { 1: 10 }, html: /<script[^>]* src=("|')http:\/\/www\.statcounter\.com\/counter\/counter/i },
'SWFObject': { cats: { 1: 19 }, html: /<script[^>]+swfobject[^"']*\.js/i },
'swift.engine': { cats: { 1: 1 }, headers: { 'X-Powered-By': /swift\.engine/ } },
@ -173,8 +185,10 @@ wappalyzer.apps = {
'TYPO3': { cats: { 1: 1 }, html: /(<meta name=("|')generator("|') [^>]+TYPO3|<(script[^>]* src|link[^>]* href)=[^>]*fileadmin)/i, url: /\/typo3/i },
'Ubercart': { cats: { 1: 6 }, html: /<script[^>]* src=("|')[^>]*uc_cart\/uc_cart_block\.js/i },
'Vanilla': { cats: { 1: 2 }, html: /<body id=("|')(DiscussionsPage|vanilla)/i, headers: { 'X-Powered-By': /Vanilla/ } },
'Varnish': { cats: { 1: 22 }, headers: { 'X-Varnish': /.+/, 'Via': /Varnish/ } },
'vBulletin': { cats: { 1: 2 }, html: /<meta name=("|')generator("|') [^>]+vBulletin/i },
'viennaCMS': { cats: { 1: 1 }, html: /powered by <a href=("|')[^>]+viennacms/i },
'Vignette': { cats: { 1: 1 }, html: /<[^>]+?=("|')(vgn\-ext|vgnext)/i },
'Vimeo': { cats: { 1: 14 }, html: /<(param|embed)[^>]+vimeo\.com\/moogaloop/i },
'VirtueMart': { cats: { 1: 6 }, html: /<div id=("|')vmMainPage/ },
'VisualPath': { cats: { 1: 10 }, html: /<script[^>]* src=("|')http:\/\/visualpath[^\/]*\.trackset\.it\/[^\/]+\/track\/include\.js("|')/ },
@ -188,6 +202,7 @@ wappalyzer.apps = {
'WebsiteBaker': { cats: { 1: 1 }, html: /<meta name=("|')generator("|') [^>]+WebsiteBaker/i },
'Webtrekk': { cats: { 1: 10 }, html: /var webtrekk = new Object/ },
'Webtrends': { cats: { 1: 10 }, html: /<img[^>]+id=("|')DCSIMG("|')[^>]+webtrends/i },
'Weebly': { cats: { 1: 1 }, html: /<[^>]+class=("|')weebly/i },
'WikkaWiki': { cats: { 1: 8 }, html: /(Powered by <a href=("|')[^>]+WikkaWiki|<meta name=("|')generator("|') [^>]+WikkaWiki)/i },
'Wolf CMS': { cats: { 1: 1 }, html: /<a href=("|')[^>]+wolfcms.org.+Wolf CMS.+inside/i },
'Woopra': { cats: { 1: 10 }, html: /<script[^>]* src=("|')[^>]*static\.woopra\.com/i },
@ -204,5 +219,6 @@ wappalyzer.apps = {
'YouTube': { cats: { 1: 14 }, html: /<(param|embed)[^>]+youtube\.com\/v/i },
'YUI Doc': { cats: { 1: 12 }, html: /<html[^>]* yuilibrary\.com\/rdf\/[0-9.]+\/yui\.rdf/i },
'YUI': { cats: { 1: 4 }, html: /<script[^>]* src=("|')[^'"]*(\/yui\/|yui\.yahooapis\.com)[^'"]*("|')/ },
'Zen Cart': { cats: { 1: 6 }, html: /<meta name=("|')generator("|') [^>]+Zen Cart/i }
'Zen Cart': { cats: { 1: 6 }, html: /<meta name=("|')generator("|') [^>]+Zen Cart/i },
'Zend': { cats: { 1: 18 }, headers: { 'X-Powered-By': /Zend/ } }
};

@ -13,8 +13,6 @@ wappalyzer =
log: function(message)
{
return;
var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
consoleService.logStringMessage("Wappalyzer content.js: " + message);
@ -22,6 +20,8 @@ wappalyzer =
onPageLoad: function(e)
{
wappalyzer.log('onPageLoad');
sendAsyncMessage('wappalyzer:onPageLoad', {
href: content.document.location.href,
html: content.document.documentElement.innerHTML,

@ -100,22 +100,26 @@ wappalyzer.evaluateCustomApps = function(customApps, feedback)
}
}
text += '\n Icon [' + ( wappalyzer.apps[appName].icon ? 'Yes' : 'No' ) + ']';
text += '\n Icon [' + ( wappalyzer.apps[appName].icon != 'chrome://wappalyzer/skin/app_icons/_placeholder.ico' ? 'Yes' : 'No' ) + ']';
text +=
' HTML [' + ( typeof(wappalyzer.apps[appName].html) == 'object' ? 'Yes' : 'No' ) + ']' +
' URL [' + ( typeof(wappalyzer.apps[appName].url) == 'object' ? 'Yes' : 'No' ) + ']'
;
text += ' Headers';
if ( typeof(wappalyzer.apps[appName].headers) == 'object' )
{
text += ' Headers';
for ( header in wappalyzer.apps[appName].headers )
{
text += ' [' + header + ']';
}
}
else
{
text += ' [No]';
}
count ++;
}

@ -1,19 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://wappalyzer/locale/overlay.dtd">
<dialog id="wappalyzer-prompt"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
title="TEST"
buttons="accept,cancel"
style="min-height: 100px;"
onload=""
ondialogaccept="">
<hbox>
<vbox align="center" pack="start">
<image src="chrome://wappalyzer/skin/icon32x32.png" style="padding: 20px;"/>
</vbox>
</hbox>
</dialog>

@ -1,8 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://wappalyzer/locale/overlay.dtd">
<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
</vbox>

@ -1,31 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://wappalyzer/skin/overlay.css"?>
<!DOCTYPE overlay SYSTEM "chrome://wappalyzer/locale/overlay.dtd">
<overlay id="wappalyzer-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://wappalyzer/content/overlay.js"/>
<script type="application/x-javascript" src="chrome://wappalyzer/content/apps.js"/>
<stringbundleset id="stringbundleset">
<stringbundle id="wappalyzer-strings" src="chrome://wappalyzer/locale/overlay.properties" />
</stringbundleset>
<script type="application/x-javascript">
<![CDATA[
if ( typeof(wappalyzer) != 'undefined' )
{
wappalyzer.isMobile = true;
}
]]>
</script>
<hbox id="urlbar-container">
<hbox id="wappalyzer-detected-apps" align="middle">
</hbox>
<hbox id="wappalyzer-icon" align="middle">
<image src="chrome://wappalyzer/skin/icon32x32.png" class="wappalyzer-icon"/>
</hbox>
</hbox>
</overlay>

@ -18,7 +18,7 @@
<preference id="wappalyzer-location" name="wappalyzer.location" type="int" />
<preference id="wappalyzer-auto-detect" name="wappalyzer.autoDetect" type="bool" />
<preference id="wappalyzer-enable-tracking" name="wappalyzer.enableTracking" type="bool" />
<preference id="wappalyzer-show-app-names" name="wappalyzer.showAppNames" type="int" />
<preference id="wappalyzer-show-names" name="wappalyzer.showNames" type="bool" />
<preference id="wappalyzer-custom-apps" name="wappalyzer.customApps" type="string"/>
<preference id="wappalyzer-cat1" name="wappalyzer.cat1" type="bool" />
<preference id="wappalyzer-cat2" name="wappalyzer.cat2" type="bool" />
@ -42,6 +42,7 @@
<preference id="wappalyzer-cat20" name="wappalyzer.cat20" type="bool" />
<preference id="wappalyzer-cat21" name="wappalyzer.cat21" type="bool" />
<preference id="wappalyzer-cat22" name="wappalyzer.cat22" type="bool" />
<preference id="wappalyzer-cat23" name="wappalyzer.cat23" type="bool" />
</preferences>
<tabbox>
@ -87,14 +88,13 @@
</row>
<row>
<hbox align="center">
<label control="wappalyzer-show-app-names" value="&wappalyzer.appNames;:"/>
<label control="wappalyzer-auto-detect" value="&wappalyzer.showNames;:"/>
</hbox>
<hbox align="center">
<menulist preference="wappalyzer-show-app-names" id="wappalyzer-option-show-app-names">
<menulist preference="wappalyzer-show-names" id="wappalyzer-show-names">
<menupopup>
<menuitem label="&wappalyzer.always;" value="1"/>
<menuitem label="&wappalyzer.tooltip;" value="2"/>
<menuitem label="&wappalyzer.hover;" value="3"/>
<menuitem label="&wappalyzer.inline;" value="true"/>
<menuitem label="&wappalyzer.popup;" value="false"/>
</menupopup>
</menulist>
</hbox>
@ -208,6 +208,9 @@
<hbox align="center">
<checkbox preference="wappalyzer-cat22" id="wappalyzer-option-cat22" label="&wappalyzer.cat22;"/>
</hbox>
<hbox align="center">
<checkbox preference="wappalyzer-cat23" id="wappalyzer-option-cat23" label="&wappalyzer.cat23;"/>
</hbox>
</row>
</rows>
</grid>

@ -20,15 +20,14 @@ wappalyzer =
history: {},
hitCount: 0,
homeUrl: 'http://wappalyzer.com/',
isBookmarklet: false,
isMobile: false,
hoverTimeout: false,
newInstall: false,
prevUrl: '',
prefs: {},
regexDomain: /^[a-z0-9._\-]+\.[a-z]+/,
req: false,
request: false,
showAppNames: 3,
showNames: 0,
showCats: [],
strings: {},
version: '',
@ -37,7 +36,7 @@ wappalyzer =
{
wappalyzer.log('init');
wappalyzer.browser = typeof(Browser) != 'undefined' ? Browser.selectedBrowser : gBrowser;
wappalyzer.browser = gBrowser;
wappalyzer.strings = document.getElementById('wappalyzer-strings');
@ -47,7 +46,7 @@ wappalyzer =
wappalyzer.prefs.QueryInterface(Components.interfaces.nsIPrefBranch2);
wappalyzer.prefs.addObserver('', wappalyzer, false);
wappalyzer.showAppNames = wappalyzer.prefs.getIntPref( 'showAppNames');
wappalyzer.showNames = wappalyzer.prefs.getBoolPref('showNames');
wappalyzer.autoDetect = wappalyzer.prefs.getBoolPref('autoDetect');
wappalyzer.customApps = wappalyzer.prefs.getCharPref('customApps');
wappalyzer.debug = wappalyzer.prefs.getBoolPref('debug');
@ -55,7 +54,7 @@ wappalyzer =
wappalyzer.newInstall = wappalyzer.prefs.getBoolPref('newInstall');
wappalyzer.version = wappalyzer.prefs.getCharPref('version');
for ( i = 1; i <= 22; i ++ )
for ( i = 1; i <= 23; i ++ )
{
wappalyzer.showCats[i] = wappalyzer.prefs.getBoolPref('cat' + i);
}
@ -70,7 +69,7 @@ wappalyzer =
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
var enabledItems = prefs.getCharPref('extensions.enabledItems');
var version = enabledItems.replace(/(^.*wappalyzer[^:]+:)([^,]+),.*$/, '$2');
var version = enabledItems.replace(/(^.*wappalyzer[^:]+:)([^,]+),.*$/, '$2');
if ( wappalyzer.version != version )
{
@ -145,8 +144,8 @@ wappalyzer =
wappalyzer.enableTracking = wappalyzer.prefs.getBoolPref('enableTracking');
break;
case 'showAppNames':
wappalyzer.showAppNames = wappalyzer.prefs.getIntPref('showAppNames');
case 'showNames':
wappalyzer.showNames = wappalyzer.prefs.getBoolPref('showNames');
break;
case 'location':
@ -175,8 +174,9 @@ wappalyzer =
case 'cat18': wappalyzer.showCats[18] = wappalyzer.prefs.getIntPref('cat18'); break;
case 'cat19': wappalyzer.showCats[19] = wappalyzer.prefs.getIntPref('cat19'); break;
case 'cat20': wappalyzer.showCats[20] = wappalyzer.prefs.getIntPref('cat20'); break;
case 'cat20': wappalyzer.showCats[21] = wappalyzer.prefs.getIntPref('cat21'); break;
case 'cat20': wappalyzer.showCats[22] = wappalyzer.prefs.getIntPref('cat22'); break;
case 'cat21': wappalyzer.showCats[21] = wappalyzer.prefs.getIntPref('cat21'); break;
case 'cat22': wappalyzer.showCats[22] = wappalyzer.prefs.getIntPref('cat22'); break;
case 'cat23': wappalyzer.showCats[23] = wappalyzer.prefs.getIntPref('cat23'); break;
}
},
@ -216,16 +216,17 @@ wappalyzer =
{
wappalyzer.log('onPageLoad');
var doc = event.originalTarget;
var target = event.originalTarget;
if ( !doc.request )
if ( !target.request )
{
wappalyzer.request = false;
}
wappalyzer.analyzePage(
doc.location.href,
doc.documentElement.innerHTML,
target,
target.location.href,
target.documentElement.innerHTML,
[],
true,
false
@ -237,6 +238,7 @@ wappalyzer =
wappalyzer.log('onContentPageLoad');
wappalyzer.analyzePage(
null,
message.json.href,
message.json.html,
message.json.headers,
@ -263,6 +265,7 @@ wappalyzer =
wappalyzer.currentTab = false;
wappalyzer.analyzePage(
wappalyzer.browser.contentWindow,
doc.location.href ? doc.location.href : '',
doc.documentElement ? doc.documentElement.innerHTML : '',
[],
@ -310,20 +313,17 @@ wappalyzer =
onSecurityChange: function(a, b, c) {}
},
analyzePage: function(href, html, headers, doCount, manualDetect)
analyzePage: function(windowObject, href, html, headers, doCount, manualDetect)
{
wappalyzer.log('analyzePage');
wappalyzer.currentTab = false;
if ( !wappalyzer.isBookmarklet )
if ( href == wappalyzer.browser.contentDocument.location.href )
{
if ( href == wappalyzer.browser.contentDocument.location.href )
{
wappalyzer.currentTab = true;
wappalyzer.currentTab = true;
wappalyzer.clearDetectedApps();
}
wappalyzer.clearDetectedApps();
}
if ( typeof(html) == 'undefined' )
@ -367,7 +367,7 @@ wappalyzer =
}
}
// Scan response header
// Scan response headers
if ( typeof(wappalyzer.apps[appName].headers) != 'undefined' && wappalyzer.request )
{
for ( var header in wappalyzer.apps[appName].headers )
@ -398,151 +398,115 @@ wappalyzer =
{
wappalyzer.log('showApp ' + detectedApp);
if ( !wappalyzer.currentTab && !wappalyzer.isBookmarklet )
{
wappalyzer.report(detectedApp, href);
return;
}
wappalyzer.report(detectedApp, href);
if ( detectedApp && typeof(wappalyzer.checkUnique[detectedApp]) == 'undefined' )
{
var show = true;
var show = false;
if ( !wappalyzer.isBookmarklet )
for ( i in wappalyzer.apps[detectedApp].cats )
{
var show = false;
for ( i in wappalyzer.apps[detectedApp].cats )
if ( wappalyzer.showCats[wappalyzer.apps[detectedApp].cats[i]] )
{
if ( wappalyzer.showCats[wappalyzer.apps[detectedApp].cats[i]] )
{
show = true;
show = true;
break;
}
break;
}
}
if ( show )
{
switch ( true )
{
case wappalyzer.isBookmarklet:
var e = document.getElementById('wappalyzer-bookmarklet-apps');
if ( e )
{
if ( !wappalyzer.appsDetected )
{
e.innerHTML = '';
}
var e = document.getElementById('wappalyzer-detected-apps');
e.innerHTML +=
'<br/>' +
'<strong>' +
'<a href="' + wappalyzer.homeUrl + 'stats/app/' + escape(detectedApp) + '" style="color: #332;">' +
'<img src="' + wappalyzer.homeUrl + '_view/images/app_icons/' + escape(detectedApp) + '.ico" width="16" height="16" style="margin-right: 6px; vertical-align: middle;"/>' +
detectedApp +
'</a>' +
'</strong>'
;
if ( wappalyzer.apps[detectedApp].cats )
{
for ( i in wappalyzer.apps[detectedApp].cats )
{
e.innerHTML += '<br/><span style="margin-left: 22px;">' + wappalyzer.cats[wappalyzer.apps[detectedApp].cats[i]].name + '</span>';
}
e.innerHTML += '<br/>';
}
}
break;
case wappalyzer.isMobile:
default:
// Hide Wappalyzer icon
document.getElementById('wappalyzer-icon').style.display = 'none';
// Show app icon and label
var e = document.getElementById('wappalyzer-detected-apps');
if ( wappalyzer.autoDetect )
{
// Hide Wappalyzer icon
document.getElementById('wappalyzer-icon').style.display = 'none';
var child = document.createElement('image');
// Show app icon and label
var child = document.createElement('image');
if ( typeof(wappalyzer.apps[detectedApp].icon) == 'string' )
{
child.setAttribute('src', wappalyzer.apps[detectedApp].icon);
}
else
{
child.setAttribute('src', 'chrome://wappalyzer/skin/app_icons/' + detectedApp + '.ico');
}
if ( typeof(wappalyzer.apps[detectedApp].icon) == 'string' )
{
child.setAttribute('src', wappalyzer.apps[detectedApp].icon);
}
else
{
child.setAttribute('src', 'chrome://wappalyzer/skin/icons/' + detectedApp + '.ico');
}
child.setAttribute('class', 'wappalyzer-icon');
child.setAttribute('class', 'wappalyzer-icon');
if ( !wappalyzer.isMobile )
{
if ( wappalyzer.showAppNames == 2 )
{
var container = document.getElementById('wappalyzer-container').parentNode;
if ( wappalyzer.appsDetected )
{
child.setAttribute('style', 'margin-left: .5em');
}
var tooltiptext = container.getAttribute('tooltiptext') + '\n' + detectedApp;
e.appendChild(child);
}
if ( wappalyzer.apps[detectedApp].cats )
{
for ( i in wappalyzer.apps[detectedApp].cats )
{
tooltiptext += '\n ' + wappalyzer.cats[wappalyzer.apps[detectedApp].cats[i]].name;
}
child = document.createElement('label');
tooltiptext += '\n';
}
child.setAttribute('value', detectedApp);
child.setAttribute('class', 'wappalyzer-app-name');
container.setAttribute('tooltiptext', tooltiptext);
}
if ( !wappalyzer.showNames )
{
child.setAttribute('style', 'display: none;');
}
if ( wappalyzer.appsDetected )
{
child.setAttribute('style', 'margin-left: .5em');
}
}
e.appendChild(child);
e.appendChild(child);
// Show application in popup
var e = document.getElementById('wappalyzer-apps');
if ( !wappalyzer.isMobile && typeof(wappalyzer.apps[detectedApp].custom) == 'undefined' )
{
child = document.createElement('label');
if ( !wappalyzer.appsDetected )
{
// Remove "no apps detected" message
document.getElementById('wappalyzer-apps').removeChild(document.getElementById('wappalyzer-no-detected-apps'));
}
else
{
var child = document.createElement('menuseparator');
child.setAttribute('value', detectedApp);
child.setAttribute('class', 'wappalyzer-app-name');
e.appendChild(child);
}
if ( wappalyzer.showAppNames != 1 )
{
child.setAttribute('style', 'display: none;');
}
var child = document.createElement('menuitem');
e.appendChild(child);
child.setAttribute('class', 'menuitem-iconic');
child.setAttribute('type', '');
child.setAttribute('oncommand', 'wappalyzer.openTab(\'' + wappalyzer.homeUrl + 'stats/app/' + escape(detectedApp) + '\');');
// Enable application statistics menu item
var e = document.getElementById('wappalyzer-app-stats');
if ( typeof(wappalyzer.apps[detectedApp].custom) == 'undefined' )
{
child.setAttribute('label', detectedApp);
child.setAttribute('image', 'chrome://wappalyzer/skin/icons/' + detectedApp + '.ico');
}
else
{
child.setAttribute('label', detectedApp + ' (' + wappalyzer.strings.getString('wappalyzer.custom') + ')');
child.setAttribute('disabled', 'true');
child.setAttribute('image', wappalyzer.apps[detectedApp].icon);
}
e.parentNode.setAttribute('disabled', false);
e.appendChild(child);
var child = document.createElement('menuitem');
if ( wappalyzer.apps[detectedApp].cats )
{
for ( i in wappalyzer.apps[detectedApp].cats )
{
var child = document.createElement('menuitem');
child.setAttribute('label', detectedApp);
child.setAttribute('class', 'menuitem-iconic');
child.setAttribute('type', '');
child.setAttribute('image', 'chrome://wappalyzer/skin/app_icons/' + detectedApp + '.ico');
child.setAttribute('oncommand', 'wappalyzer.openTab(\'' + wappalyzer.homeUrl + 'stats/app/' + escape(detectedApp) + '\');');
child.setAttribute('label', wappalyzer.cats[wappalyzer.apps[detectedApp].cats[i]].name);
child.setAttribute('disabled', 'true');
e.appendChild(child);
}
e.appendChild(child);
}
}
}
if ( doCount && typeof(wappalyzer.apps[detectedApp].custom) == 'undefined' )
if ( doCount )
{
wappalyzer.report(detectedApp, href);
}
@ -557,27 +521,30 @@ wappalyzer =
{
wappalyzer.log('report');
domain = href.match(/:\/\/(.[^/]+)/)[1];
if ( wappalyzer.enableTracking && wappalyzer.regexDomain.test(domain) )
if ( typeof(wappalyzer.apps[detectedApp].custom) == 'undefined' )
{
if ( typeof(wappalyzer.history[domain]) == 'undefined' )
{
wappalyzer.history[domain] = [];
}
var domain = href.match(regex = /:\/\/(.[^/]+)/) ? href.match(regex)[1] : '';
if ( typeof(wappalyzer.history[domain][detectedApp]) == 'undefined' )
if ( wappalyzer.enableTracking && wappalyzer.regexDomain.test(domain) )
{
wappalyzer.history[domain][detectedApp] = 0;
}
if ( typeof(wappalyzer.history[domain]) == 'undefined' )
{
wappalyzer.history[domain] = [];
}
wappalyzer.history[domain][detectedApp] ++;
if ( typeof(wappalyzer.history[domain][detectedApp]) == 'undefined' )
{
wappalyzer.history[domain][detectedApp] = 0;
}
wappalyzer.hitCount ++;
wappalyzer.history[domain][detectedApp] ++;
if ( wappalyzer.hitCount > 100 )
{
wappalyzer.sendReport();
wappalyzer.hitCount ++;
if ( wappalyzer.hitCount > 200 )
{
wappalyzer.sendReport();
}
}
}
},
@ -660,36 +627,23 @@ wappalyzer =
e.removeChild(e.childNodes.item(0));
}
if ( !wappalyzer.isMobile )
{
// Clear tooltip
var container = document.getElementById('wappalyzer-container').parentNode;
container.setAttribute('tooltiptext', wappalyzer.strings.getString('wappalyzer.title') + ( wappalyzer.showAppNames == 2 ? '\n---' : '' ));
// Clear application popup
e = document.getElementById('wappalyzer-apps');
// Disable and clear application statistics menu item
e = document.getElementById('wappalyzer-app-stats');
e.parentNode.setAttribute('disabled', true);
while ( e.childNodes.length > 0 )
{
e.removeChild(e.childNodes.item(0));
}
while ( e.childNodes.length > 0 )
{
e.removeChild(e.childNodes.item(0));
}
},
showLabels: function(show)
{
if ( wappalyzer.showAppNames == 3 )
{
e = document.getElementsByClassName('wappalyzer-app-name');
var child = document.createElement('menuitem');
for ( i = 0; i < e.length; i ++ )
{
e[i].style.display = show ? 'inline' : 'none';
}
}
child.setAttribute('label', wappalyzer.strings.getString('wappalyzer.noDetectedApps'));
child.setAttribute('id', 'wappalyzer-no-detected-apps');
child.setAttribute('class', 'menuitem-iconic');
child.setAttribute('disabled', 'true');
child.setAttribute('type', '');
e.appendChild(child);
},
installSuccess: function()
@ -704,69 +658,5 @@ wappalyzer =
wappalyzer.browser.removeEventListener('load', wappalyzer.upgradeSuccess, false);
wappalyzer.openTab(wappalyzer.homeUrl + 'install/upgraded/');
},
bookmarklet: function()
{
if ( !wappalyzer.browser )
{
wappalyzer.isBookmarklet = true;
if ( !document.getElementById('wappalyzer-bookmarklet') )
{
var body = document.getElementsByTagName('body')[0];
if ( body )
{
var container = document.createElement('div');
container.innerHTML =
'<div id="wappalyzer-bookmarklet" style="' +
' color: #332;' +
' font: 12px \'Trebuchet MS\';' +
' line-height: 16px;' +
' position: fixed;' +
' text-align: right;' +
' right: 2em;' +
' top: 2em;' +
' z-index: 9999999999;' +
' ">' +
' <div id="wappalyzer-container" style="' +
' -moz-box-shadow: 0 0 5px rgba(0, 0, 0, .4);' +
' -moz-border-radius: 7px;' +
' -webkit-border-radius: 7px;' +
' background: #FAFAFA;' +
' border: 7px solid #332;' +
' margin-bottom: .3em;' +
' min-width: 15em;' +
' padding: 1em 1.5em 1.4em 1.5em;' +
' text-align: left;' +
' ">' +
' <div style="' +
' border-bottom: 1px solid #DDC;' +
' font-size: 13px;' +
' padding-bottom: 1em;' +
' text-align: center;' +
' "><strong>Wappalyzer</strong></div>' +
' <span id="wappalyzer-bookmarklet-apps"><br/><em>No apps detected</em></span>' +
' </div>' +
' <span style="float: left;"><a href="http://wappalyzer.com" style="color: #332 !important;">home</a> | <a href="http://twitter.com/ElbertF" style="color: #332 !important;">follow me</a></span>' +
' <span style="float: right;">click to close</span>' +
'</div>'
;
container.onclick = function() { body.removeChild(container); };
body.appendChild(container);
wappalyzer.analyzePage(
document.location.href,
document.documentElement.innerHTML,
[],
false
);
}
}
}
}
};

@ -17,8 +17,9 @@
<hbox
id="wappalyzer-container"
context="wappalyzer-menu"
onmouseover="wappalyzer.showLabels(true);"
onmouseout="wappalyzer.showLabels(false);"
popup="wappalyzer-apps"
onmouseover="wappalyzer.hoverTimeout = setTimeout(function() { document.getElementById('wappalyzer-apps').openPopup(document.getElementById('wappalyzer-container'), 'after_end'); }, 1000);"
onmouseout="clearTimeout(wappalyzer.hoverTimeout);"
>
<image
id="wappalyzer-icon"
@ -28,7 +29,10 @@
<box align="start" id="wappalyzer-detected-apps"/>
<menupopup id="wappalyzer-menu" position="at_pointer">
<menupopup id="wappalyzer-apps" position="after_end">
</menupopup>
<menupopup id="wappalyzer-menu">
<menuitem label="&wappalyzer.options;" oncommand="
window.openDialog('chrome://wappalyzer/content/options.xul', 'wappalyzer-options', 'chrome, dialog, centerscreen');
"/>
@ -36,17 +40,12 @@
<menuitem label="&wappalyzer.donate;" oncommand="wappalyzer.openTab(wappalyzer.homeUrl + 'donate/');"/>
<menuitem label="&wappalyzer.feedback;" oncommand="wappalyzer.openTab(wappalyzer.homeUrl + '?redirect=feedback');"/>
<menuitem label="&wappalyzer.home;" oncommand="wappalyzer.openTab(wappalyzer.homeUrl);"/>
<menuseparator/>
<menu label="&wappalyzer.appStats;" disabled="true">
<menupopup id="wappalyzer-app-stats"/>
</menu>
</menupopup>
</hbox>
</hbox>
<hbox
id="urlbar-icons"
tooltiptext="&wappalyzer.title;"
onclick="if ( !wappalyzer.autoDetect ) wappalyzer.analyzePage(wappalyzer.browser.contentDocument.location.href, wappalyzer.browser.contentDocument.documentElement.innerHTML, false, true, true);"
/>
@ -55,10 +54,8 @@
id="wappalyzer-statusbar"
class="statusbarpanel-iconic"
context="wappalyzer-menu"
tooltiptext="&wappalyzer.title;"
popup="wappalyzer-apps"
onclick="if ( !wappalyzer.autoDetect ) wappalyzer.analyzePage(wappalyzer.browser.contentDocument.location.href, wappalyzer.browser.contentDocument.documentElement.innerHTML, false, true, true);"
onmouseover="wappalyzer.showLabels(true);"
onmouseout="wappalyzer.showLabels(false);"
/>
</statusbar>
</overlay>

@ -10,14 +10,12 @@
<!ENTITY wappalyzer.detect "Detect applications">
<!ENTITY wappalyzer.auto "Automatically">
<!ENTITY wappalyzer.manual "On click">
<!ENTITY wappalyzer.appNames "Show application names">
<!ENTITY wappalyzer.always "Always">
<!ENTITY wappalyzer.tooltip "Tooltip">
<!ENTITY wappalyzer.hover "Expand on mouse over">
<!ENTITY wappalyzer.inline "Inline">
<!ENTITY wappalyzer.popup "In popup on click">
<!ENTITY wappalyzer.showNames "Show application names">
<!ENTITY wappalyzer.categories "Categories">
<!ENTITY wappalyzer.home "Go to Wappalyzer">
<!ENTITY wappalyzer.privacy "Privacy">
<!ENTITY wappalyzer.appStats "View application statistics">
<!ENTITY wappalyzer.donate "Donate">
<!ENTITY wappalyzer.evaluate "Evaluate code">
<!ENTITY wappalyzer.customBody "Add applications for personal use with JSON and regular expressions.">
@ -45,4 +43,5 @@
<!ENTITY wappalyzer.cat20 "Editors">
<!ENTITY wappalyzer.cat21 "LMS">
<!ENTITY wappalyzer.cat22 "Web servers">
<!ENTITY wappalyzer.cat23 "Cache tools">

@ -1 +1,3 @@
wappalyzer.title=Wappalyzer
wappalyzer.title = Wappalyzer
wappalyzer.noDetectedApps = No applications detected
wappalyzer.custom = custom

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 894 B

After

Width:  |  Height:  |  Size: 894 B

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 318 B

After

Width:  |  Height:  |  Size: 318 B

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 486 B

After

Width:  |  Height:  |  Size: 486 B

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before

Width:  |  Height:  |  Size: 815 B

After

Width:  |  Height:  |  Size: 815 B

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 318 B

After

Width:  |  Height:  |  Size: 318 B

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 894 B

After

Width:  |  Height:  |  Size: 894 B

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 894 B

After

Width:  |  Height:  |  Size: 894 B

Before

Width:  |  Height:  |  Size: 894 B

After

Width:  |  Height:  |  Size: 894 B

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Before

Width:  |  Height:  |  Size: 318 B

After

Width:  |  Height:  |  Size: 318 B

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 894 B

After

Width:  |  Height:  |  Size: 894 B

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Before

Width:  |  Height:  |  Size: 318 B

After

Width:  |  Height:  |  Size: 318 B

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 160 B

After

Width:  |  Height:  |  Size: 160 B

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 894 B

After

Width:  |  Height:  |  Size: 894 B

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before

Width:  |  Height:  |  Size: 198 B

After

Width:  |  Height:  |  Size: 198 B

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 946 B

After

Width:  |  Height:  |  Size: 946 B

Some files were not shown because too many files have changed in this diff Show More