Added Connect, Express, LigthMon, LimeSurvey, Pligg, Roundcube, Zinnia, node.js

main
ElbertF 12 years ago
parent 8675ddbaf6
commit c4bd723c9c

@ -34,7 +34,8 @@
26: 'mobile-frameworks',
27: 'programming-languages',
28: 'operating-systems',
29: 'search-engines'
29: 'search-engines',
30: 'web-mail'
};
w.apps = {
@ -88,6 +89,7 @@
'Commerce Server': { cats: [ 6 ], headers: { 'COMMERCE-SERVER-SOFTWARE': /.+/ }, implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'comScore': { cats: [ 10 ], html: /<i{1}frame[^>]* (id=("|')comscore("|')|scr=[^>]+comscore)/, env: /^_?COMSCORE$/i },
'Concrete5': { cats: [ 1 ], meta: { 'generator': /concrete5/i }, implies: [ 'PHP' ] },
'Connect': { cats: [ 18 ], headers: { 'X-Powered-By': /^Connect$/i }, implies: [ 'node.js' ] },
'Contao': { cats: [ 1, 6 ], html: /(<!--\s+This website is powered by (TYPOlight|Contao)|<link[^>]+(typolight|contao).css)/i, implies: [ 'PHP' ] },
'Contenido': { cats: [ 1 ], meta: { 'generator': /Contenido/i }, implies: [ 'PHP' ] },
'Contens': { cats: [ 1 ], meta: { 'generator': /contens/i }, implies: [ 'Java', 'CFML' ] },
@ -129,6 +131,7 @@
//'Ecodoo': { cats: [ 6 ], script: /addons\/lytebox\/lytebox\.js/ },
'EPiServer': { cats: [ 1 ], meta: { 'generator': /EPiServer/i }, implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'Exhibit': { cats: [ 25 ], script: /exhibit.*\.js/, env: /^Exhibit$/ },
'Express': { cats: [ 18 ], headers: { 'X-Powered-By': /^Express$/i }, implies: [ 'Connect', 'node.js' ] },
'ExpressionEngine': { cats: [ 1 ], headers: { 'Set-Cookie': /(exp_last_activity|exp_tracker)/ }, implies: [ 'PHP' ] },
'ExtJS': { cats: [ 12 ], script: /ext\-base\.js/, env: /^Ext$/ },
'eZ Publish': { cats: [ 1, 6 ], meta: { 'generator': /eZ Publish/i }, implies: [ 'PHP' ] },
@ -176,7 +179,7 @@
'Javascript Infovis Toolkit': { cats: [ 25 ], script: /jit.*\.js/, env: /^\$jit$/ },
'Jo': { cats: [ 26, 12 ], env: /^jo(Cache|DOM|Event)$/ },
'JobberBase': { cats: [ 19 ], meta: { 'generator': /Jobberbase/i }, env: /^Jobber$/ },
'Joomla': { cats: [ 1 ], meta: { 'generator': /Joomla/i }, html: /(<!\-\- JoomlaWorks "K2"|<[^>]+(feed|components)\/com_)/i, headers: { 'X-Content-Encoded-By': /Joomla/ }, env: /^(jcomments)$/i },
'Joomla': { cats: [ 1 ], url: /option=com_/i, meta: { 'generator': /Joomla/i }, html: /(<!\-\- JoomlaWorks "K2"|<[^>]+(feed|components)\/com_)/i, headers: { 'X-Content-Encoded-By': /Joomla/ }, env: /^(jcomments)$/i },
'jqPlot': { cats: [ 25 ], script: /jqplot.*\.js/, env: /^jQuery.jqplot$/ },
'jQTouch': { cats: [ 26 ], script: /jqtouch.*\.js/i, env:/^jQT$/ },
'jQuery': { cats: [ 12 ], script: /jquery.*.js/, env: /^jQuery$/ },
@ -194,7 +197,9 @@
'Koobi': { cats: [ 1 ], meta: { 'generator': /Koobi/i } },
'LEPTON': { cats: [ 1 ], meta: { 'generator': /LEPTON/i }, implies: [ 'PHP' ] },
'Liferay': { cats: [ 1 ], env: /^Liferay$/, headers: { 'Liferay-Portal': /.*/i } },
'LightMon': { cats: [ 1 ], meta: { 'generator': /LightMon/i }, headers: { 'X-Powered-By': /LightMon/i }, implies: [ 'PHP' ] },
'lighttpd': { cats: [ 22 ], headers: { 'Server': /lighttpd/i } },
'LimeSurvey': { cats: [ 19 ], headers: { 'generator': /LimeSurvey/i } },
'LiveJournal': { cats: [ 11 ], url: /^(www.)?.+\.livejournal\.com/i },
'Lotus Domino': { cats: [ 22 ], headers: { 'Server': /Lotus\-Domino/i } },
'Magento': { cats: [ 6 ], script: /\/(js\/mage|skin\/frontend\/(default|enterprise))\//, env: /^(Mage|VarienForm)$/, implies: [ 'PHP '] },
@ -226,6 +231,7 @@
'Nedstat': { cats: [ 10 ], html: /sitestat\(("|')http:\/\/nl\.sitestat\.com/ },
'Netmonitor': { cats: [ 10 ], script: /netmonitor\.fi\/nmtracker\.js/, env: /^netmonitor/ },
'Nginx': { cats: [ 22 ], headers: { 'Server': /nginx/i } },
'node.js': { cats: [ 27 ], },
'NOIX': { cats: [ 19 ], html: /<[^>]+(src|href)=[^>]*(\/media\/noix)|<!\-\- NOIX/i },
'nopCommerce': { cats: [ 6 ], html: /(<!\-\-Powered by nopCommerce|Powered by: <a[^>]+nopcommerce)/i },
'OneStat': { cats: [ 10 ], html: /var p=("|')http("|')\+\(d\.URL\.indexOf\('https:'\)==0\?'s':''\)\+("|'):\/\/stat\.onestat\.com\/stat\.aspx\?tagver/i },
@ -256,6 +262,7 @@
'Piwik': { cats: [ 10 ], html: /var piwikTracker = Piwik\.getTracker\(/i, env: /^Piwik$/i },
'Plentymarkets': { cats: [ 6 ], meta: { 'generator': /www\.plentyMarkets\./i } },
'Plesk': { cats: [ 9 ], headers: { 'X-Powered-By-Plesk': /Plesk/i,'X-Powered-By': /PleskLin/i }, script: /common\.js\?plesk/i },
'Pligg': { cats: [ 1 ], meta: { 'generator': /Pligg/i }, html: /<span[^>]+id="xvotes-0/, env: /pligg_/i },
'Plone': { cats: [ 1 ], meta: { 'generator': /Plone/i }, implies: [ 'Python' ] },
'Plura': { cats: [ 19 ], html: /<iframe src="http:\/\/pluraserver\.com/ },
'Posterous': { cats: [ 1, 11 ], html: /<div class=("|')posterous/i, env: /^Posterous/i },
@ -270,12 +277,13 @@
'Raphael': { cats: [ 25 ], script: /raphael.*\.js/, env: /^Raphael$/ },
'ReallyCMS': { cats: [ 1 ], meta: { 'generator': /ReallyCMS/ } },
'reCAPTCHA': { cats: [ 16 ], script: /(api\-secure\.recaptcha\.net|recaptcha_ajax\.js)/, html: /<div[^>]+id=("|')recaptcha_image/, env: /^Recaptcha$/ },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /Red Hat/i, 'X-Powered-By': /Red Hat/i } },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /(Red Hat|rhel[0-9]+)/i, 'X-Powered-By': /Red Hat/i } },
'Reddit': { cats: [ 2 ], html: /(<script[^>]+>var reddit = {|<a[^>]+Powered by Reddit|powered by <a[^>]+>reddit<)/i, url: /^(www\.)?reddit\.com/, env: /^reddit$/, implies: [ 'Python' ] },
'Redmine': { cats: [ 13 ], meta: { 'description': /Redmine/i }, html: /Powered by <a href=("|')[^>]+Redmine/i, implies: [ 'Ruby' ] },
'Reinvigorate': { cats: [ 10 ], html: /reinvigorate\.track\("/ },
'RequireJS': { cats: [ 12 ], script: /require.*\.js/ , env: /^requirejs$/},
'Ruby': { cats: [ 27 ], headers: { 'Server': /(Mongrel|WEBrick|Ruby|mod_rails|mod_rack|Phusion.Passenger)/i, 'X-Powered-By': /(mod_rails|mod_rack|Phusion.Passenger)/i }, meta: { 'authenticity_token': /csrf-param/i } },
'RequireJS': { cats: [ 12 ], script: /require.*\.js/, env: /^requirejs$/ },
'RoundCube': { cats: [ 30 ], html: /<title>RoundCube/, env: /(rcmail|rcube_|roundcube)/i },
'Ruby': { cats: [ 27 ], headers: { 'Server': /(Mongrel|WEBrick|Ruby|mod_rails|mod_rack|Phusion.Passenger)/i, 'X-Powered-By': /(mod_rails|mod_rack|Phusion.Passenger)/i }, meta: { 'csrf-param': /authenticity_token /i } },
'S.Builder': { cats: [ 1 ], meta: { 'generator': /S\.Builder/i } },
's9y': { cats: [ 1 ], meta: { 'generator': /Serendipity/i, 'Powered-By': /Serendipity/i } },
'script.aculo.us': { cats: [ 12 ], script: /(scriptaculous|protoaculous)\.js/, env: /^Scriptaculous$/ },
@ -367,6 +375,7 @@
'YUI': { cats: [ 12 ], script: /\/yui\/|yui\.yahooapis\.com/, env: /^YAHOO$/ },
'Zen Cart': { cats: [ 6 ], meta: { 'generator': /Zen Cart/i } },
'Zend': { cats: [ 22 ], headers: { 'X-Powered-By': /Zend/ } },
'Zepto': { cats: [ 12 ], script: /zepto.*.js/, env: /^Zepto$/ }
'Zepto': { cats: [ 12 ], script: /zepto.*.js/, env: /^Zepto$/ },
'Zinnia': { cats: [ 11 ], meta: { 'generator': /Zinnia/i }, implies: [ 'Django' ] }
};
})();

@ -39,5 +39,6 @@
"categoryName26": { "message": "Mobile Framework" },
"categoryName27": { "message": "Programming Language" },
"categoryName28": { "message": "Operating System" },
"categoryName29": { "message": "Search Engine" }
"categoryName29": { "message": "Search Engine" },
"categoryName30": { "message": "Web Mail" }
}

@ -34,7 +34,8 @@
26: 'mobile-frameworks',
27: 'programming-languages',
28: 'operating-systems',
29: 'search-engines'
29: 'search-engines',
30: 'web-mail'
};
w.apps = {
@ -88,6 +89,7 @@
'Commerce Server': { cats: [ 6 ], headers: { 'COMMERCE-SERVER-SOFTWARE': /.+/ }, implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'comScore': { cats: [ 10 ], html: /<i{1}frame[^>]* (id=("|')comscore("|')|scr=[^>]+comscore)/, env: /^_?COMSCORE$/i },
'Concrete5': { cats: [ 1 ], meta: { 'generator': /concrete5/i }, implies: [ 'PHP' ] },
'Connect': { cats: [ 18 ], headers: { 'X-Powered-By': /^Connect$/i }, implies: [ 'node.js' ] },
'Contao': { cats: [ 1, 6 ], html: /(<!--\s+This website is powered by (TYPOlight|Contao)|<link[^>]+(typolight|contao).css)/i, implies: [ 'PHP' ] },
'Contenido': { cats: [ 1 ], meta: { 'generator': /Contenido/i }, implies: [ 'PHP' ] },
'Contens': { cats: [ 1 ], meta: { 'generator': /contens/i }, implies: [ 'Java', 'CFML' ] },
@ -129,6 +131,7 @@
//'Ecodoo': { cats: [ 6 ], script: /addons\/lytebox\/lytebox\.js/ },
'EPiServer': { cats: [ 1 ], meta: { 'generator': /EPiServer/i }, implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'Exhibit': { cats: [ 25 ], script: /exhibit.*\.js/, env: /^Exhibit$/ },
'Express': { cats: [ 18 ], headers: { 'X-Powered-By': /^Express$/i }, implies: [ 'Connect', 'node.js' ] },
'ExpressionEngine': { cats: [ 1 ], headers: { 'Set-Cookie': /(exp_last_activity|exp_tracker)/ }, implies: [ 'PHP' ] },
'ExtJS': { cats: [ 12 ], script: /ext\-base\.js/, env: /^Ext$/ },
'eZ Publish': { cats: [ 1, 6 ], meta: { 'generator': /eZ Publish/i }, implies: [ 'PHP' ] },
@ -176,7 +179,7 @@
'Javascript Infovis Toolkit': { cats: [ 25 ], script: /jit.*\.js/, env: /^\$jit$/ },
'Jo': { cats: [ 26, 12 ], env: /^jo(Cache|DOM|Event)$/ },
'JobberBase': { cats: [ 19 ], meta: { 'generator': /Jobberbase/i }, env: /^Jobber$/ },
'Joomla': { cats: [ 1 ], meta: { 'generator': /Joomla/i }, html: /(<!\-\- JoomlaWorks "K2"|<[^>]+(feed|components)\/com_)/i, headers: { 'X-Content-Encoded-By': /Joomla/ }, env: /^(jcomments)$/i },
'Joomla': { cats: [ 1 ], url: /option=com_/i, meta: { 'generator': /Joomla/i }, html: /(<!\-\- JoomlaWorks "K2"|<[^>]+(feed|components)\/com_)/i, headers: { 'X-Content-Encoded-By': /Joomla/ }, env: /^(jcomments)$/i },
'jqPlot': { cats: [ 25 ], script: /jqplot.*\.js/, env: /^jQuery.jqplot$/ },
'jQTouch': { cats: [ 26 ], script: /jqtouch.*\.js/i, env:/^jQT$/ },
'jQuery': { cats: [ 12 ], script: /jquery.*.js/, env: /^jQuery$/ },
@ -194,7 +197,9 @@
'Koobi': { cats: [ 1 ], meta: { 'generator': /Koobi/i } },
'LEPTON': { cats: [ 1 ], meta: { 'generator': /LEPTON/i }, implies: [ 'PHP' ] },
'Liferay': { cats: [ 1 ], env: /^Liferay$/, headers: { 'Liferay-Portal': /.*/i } },
'LightMon': { cats: [ 1 ], meta: { 'generator': /LightMon/i }, headers: { 'X-Powered-By': /LightMon/i }, implies: [ 'PHP' ] },
'lighttpd': { cats: [ 22 ], headers: { 'Server': /lighttpd/i } },
'LimeSurvey': { cats: [ 19 ], headers: { 'generator': /LimeSurvey/i } },
'LiveJournal': { cats: [ 11 ], url: /^(www.)?.+\.livejournal\.com/i },
'Lotus Domino': { cats: [ 22 ], headers: { 'Server': /Lotus\-Domino/i } },
'Magento': { cats: [ 6 ], script: /\/(js\/mage|skin\/frontend\/(default|enterprise))\//, env: /^(Mage|VarienForm)$/, implies: [ 'PHP '] },
@ -226,6 +231,7 @@
'Nedstat': { cats: [ 10 ], html: /sitestat\(("|')http:\/\/nl\.sitestat\.com/ },
'Netmonitor': { cats: [ 10 ], script: /netmonitor\.fi\/nmtracker\.js/, env: /^netmonitor/ },
'Nginx': { cats: [ 22 ], headers: { 'Server': /nginx/i } },
'node.js': { cats: [ 27 ], },
'NOIX': { cats: [ 19 ], html: /<[^>]+(src|href)=[^>]*(\/media\/noix)|<!\-\- NOIX/i },
'nopCommerce': { cats: [ 6 ], html: /(<!\-\-Powered by nopCommerce|Powered by: <a[^>]+nopcommerce)/i },
'OneStat': { cats: [ 10 ], html: /var p=("|')http("|')\+\(d\.URL\.indexOf\('https:'\)==0\?'s':''\)\+("|'):\/\/stat\.onestat\.com\/stat\.aspx\?tagver/i },
@ -256,6 +262,7 @@
'Piwik': { cats: [ 10 ], html: /var piwikTracker = Piwik\.getTracker\(/i, env: /^Piwik$/i },
'Plentymarkets': { cats: [ 6 ], meta: { 'generator': /www\.plentyMarkets\./i } },
'Plesk': { cats: [ 9 ], headers: { 'X-Powered-By-Plesk': /Plesk/i,'X-Powered-By': /PleskLin/i }, script: /common\.js\?plesk/i },
'Pligg': { cats: [ 1 ], meta: { 'generator': /Pligg/i }, html: /<span[^>]+id="xvotes-0/, env: /pligg_/i },
'Plone': { cats: [ 1 ], meta: { 'generator': /Plone/i }, implies: [ 'Python' ] },
'Plura': { cats: [ 19 ], html: /<iframe src="http:\/\/pluraserver\.com/ },
'Posterous': { cats: [ 1, 11 ], html: /<div class=("|')posterous/i, env: /^Posterous/i },
@ -270,12 +277,13 @@
'Raphael': { cats: [ 25 ], script: /raphael.*\.js/, env: /^Raphael$/ },
'ReallyCMS': { cats: [ 1 ], meta: { 'generator': /ReallyCMS/ } },
'reCAPTCHA': { cats: [ 16 ], script: /(api\-secure\.recaptcha\.net|recaptcha_ajax\.js)/, html: /<div[^>]+id=("|')recaptcha_image/, env: /^Recaptcha$/ },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /Red Hat/i, 'X-Powered-By': /Red Hat/i } },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /(Red Hat|rhel[0-9]+)/i, 'X-Powered-By': /Red Hat/i } },
'Reddit': { cats: [ 2 ], html: /(<script[^>]+>var reddit = {|<a[^>]+Powered by Reddit|powered by <a[^>]+>reddit<)/i, url: /^(www\.)?reddit\.com/, env: /^reddit$/, implies: [ 'Python' ] },
'Redmine': { cats: [ 13 ], meta: { 'description': /Redmine/i }, html: /Powered by <a href=("|')[^>]+Redmine/i, implies: [ 'Ruby' ] },
'Reinvigorate': { cats: [ 10 ], html: /reinvigorate\.track\("/ },
'RequireJS': { cats: [ 12 ], script: /require.*\.js/ , env: /^requirejs$/},
'Ruby': { cats: [ 27 ], headers: { 'Server': /(Mongrel|WEBrick|Ruby|mod_rails|mod_rack|Phusion.Passenger)/i, 'X-Powered-By': /(mod_rails|mod_rack|Phusion.Passenger)/i }, meta: { 'authenticity_token': /csrf-param/i } },
'RequireJS': { cats: [ 12 ], script: /require.*\.js/, env: /^requirejs$/ },
'RoundCube': { cats: [ 30 ], html: /<title>RoundCube/, env: /(rcmail|rcube_|roundcube)/i },
'Ruby': { cats: [ 27 ], headers: { 'Server': /(Mongrel|WEBrick|Ruby|mod_rails|mod_rack|Phusion.Passenger)/i, 'X-Powered-By': /(mod_rails|mod_rack|Phusion.Passenger)/i }, meta: { 'csrf-param': /authenticity_token /i } },
'S.Builder': { cats: [ 1 ], meta: { 'generator': /S\.Builder/i } },
's9y': { cats: [ 1 ], meta: { 'generator': /Serendipity/i, 'Powered-By': /Serendipity/i } },
'script.aculo.us': { cats: [ 12 ], script: /(scriptaculous|protoaculous)\.js/, env: /^Scriptaculous$/ },
@ -367,6 +375,7 @@
'YUI': { cats: [ 12 ], script: /\/yui\/|yui\.yahooapis\.com/, env: /^YAHOO$/ },
'Zen Cart': { cats: [ 6 ], meta: { 'generator': /Zen Cart/i } },
'Zend': { cats: [ 22 ], headers: { 'X-Powered-By': /Zend/ } },
'Zepto': { cats: [ 12 ], script: /zepto.*.js/, env: /^Zepto$/ }
'Zepto': { cats: [ 12 ], script: /zepto.*.js/, env: /^Zepto$/ },
'Zinnia': { cats: [ 11 ], meta: { 'generator': /Zinnia/i }, implies: [ 'Django' ] }
};
})();

@ -191,6 +191,7 @@
2, // Message Board
8, // Wiki
13, // Issue Tracker
30, // Web Mail
18, // Web Framework
21, // LMS
7, // Photo Gallery

@ -53,7 +53,7 @@ var wappalyzer = {};
response.tabCache.appsDetected.map(function(appName) {
html =
'<div class="detected-app">' +
'<a target="_blank" href="http://wappalyzer.com/applications/' + encodeURIComponent(appName) + '">' +
'<a target="_blank" href="http://wappalyzer.com/applications/' + appName.toLowerCase().replace(/ /g, '-').replace(/[^\w]/g, '') + '">' +
'<img src="images/icons/' + appName + '.png"/>' +
'<span class="label">' + appName + '</span>' +
'</a>';

@ -34,7 +34,8 @@
26: 'mobile-frameworks',
27: 'programming-languages',
28: 'operating-systems',
29: 'search-engines'
29: 'search-engines',
30: 'web-mail'
};
w.apps = {
@ -88,6 +89,7 @@
'Commerce Server': { cats: [ 6 ], headers: { 'COMMERCE-SERVER-SOFTWARE': /.+/ }, implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'comScore': { cats: [ 10 ], html: /<i{1}frame[^>]* (id=("|')comscore("|')|scr=[^>]+comscore)/, env: /^_?COMSCORE$/i },
'Concrete5': { cats: [ 1 ], meta: { 'generator': /concrete5/i }, implies: [ 'PHP' ] },
'Connect': { cats: [ 18 ], headers: { 'X-Powered-By': /^Connect$/i }, implies: [ 'node.js' ] },
'Contao': { cats: [ 1, 6 ], html: /(<!--\s+This website is powered by (TYPOlight|Contao)|<link[^>]+(typolight|contao).css)/i, implies: [ 'PHP' ] },
'Contenido': { cats: [ 1 ], meta: { 'generator': /Contenido/i }, implies: [ 'PHP' ] },
'Contens': { cats: [ 1 ], meta: { 'generator': /contens/i }, implies: [ 'Java', 'CFML' ] },
@ -129,6 +131,7 @@
//'Ecodoo': { cats: [ 6 ], script: /addons\/lytebox\/lytebox\.js/ },
'EPiServer': { cats: [ 1 ], meta: { 'generator': /EPiServer/i }, implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'Exhibit': { cats: [ 25 ], script: /exhibit.*\.js/, env: /^Exhibit$/ },
'Express': { cats: [ 18 ], headers: { 'X-Powered-By': /^Express$/i }, implies: [ 'Connect', 'node.js' ] },
'ExpressionEngine': { cats: [ 1 ], headers: { 'Set-Cookie': /(exp_last_activity|exp_tracker)/ }, implies: [ 'PHP' ] },
'ExtJS': { cats: [ 12 ], script: /ext\-base\.js/, env: /^Ext$/ },
'eZ Publish': { cats: [ 1, 6 ], meta: { 'generator': /eZ Publish/i }, implies: [ 'PHP' ] },
@ -176,7 +179,7 @@
'Javascript Infovis Toolkit': { cats: [ 25 ], script: /jit.*\.js/, env: /^\$jit$/ },
'Jo': { cats: [ 26, 12 ], env: /^jo(Cache|DOM|Event)$/ },
'JobberBase': { cats: [ 19 ], meta: { 'generator': /Jobberbase/i }, env: /^Jobber$/ },
'Joomla': { cats: [ 1 ], meta: { 'generator': /Joomla/i }, html: /(<!\-\- JoomlaWorks "K2"|<[^>]+(feed|components)\/com_)/i, headers: { 'X-Content-Encoded-By': /Joomla/ }, env: /^(jcomments)$/i },
'Joomla': { cats: [ 1 ], url: /option=com_/i, meta: { 'generator': /Joomla/i }, html: /(<!\-\- JoomlaWorks "K2"|<[^>]+(feed|components)\/com_)/i, headers: { 'X-Content-Encoded-By': /Joomla/ }, env: /^(jcomments)$/i },
'jqPlot': { cats: [ 25 ], script: /jqplot.*\.js/, env: /^jQuery.jqplot$/ },
'jQTouch': { cats: [ 26 ], script: /jqtouch.*\.js/i, env:/^jQT$/ },
'jQuery': { cats: [ 12 ], script: /jquery.*.js/, env: /^jQuery$/ },
@ -194,7 +197,9 @@
'Koobi': { cats: [ 1 ], meta: { 'generator': /Koobi/i } },
'LEPTON': { cats: [ 1 ], meta: { 'generator': /LEPTON/i }, implies: [ 'PHP' ] },
'Liferay': { cats: [ 1 ], env: /^Liferay$/, headers: { 'Liferay-Portal': /.*/i } },
'LightMon': { cats: [ 1 ], meta: { 'generator': /LightMon/i }, headers: { 'X-Powered-By': /LightMon/i }, implies: [ 'PHP' ] },
'lighttpd': { cats: [ 22 ], headers: { 'Server': /lighttpd/i } },
'LimeSurvey': { cats: [ 19 ], headers: { 'generator': /LimeSurvey/i } },
'LiveJournal': { cats: [ 11 ], url: /^(www.)?.+\.livejournal\.com/i },
'Lotus Domino': { cats: [ 22 ], headers: { 'Server': /Lotus\-Domino/i } },
'Magento': { cats: [ 6 ], script: /\/(js\/mage|skin\/frontend\/(default|enterprise))\//, env: /^(Mage|VarienForm)$/, implies: [ 'PHP '] },
@ -226,6 +231,7 @@
'Nedstat': { cats: [ 10 ], html: /sitestat\(("|')http:\/\/nl\.sitestat\.com/ },
'Netmonitor': { cats: [ 10 ], script: /netmonitor\.fi\/nmtracker\.js/, env: /^netmonitor/ },
'Nginx': { cats: [ 22 ], headers: { 'Server': /nginx/i } },
'node.js': { cats: [ 27 ], },
'NOIX': { cats: [ 19 ], html: /<[^>]+(src|href)=[^>]*(\/media\/noix)|<!\-\- NOIX/i },
'nopCommerce': { cats: [ 6 ], html: /(<!\-\-Powered by nopCommerce|Powered by: <a[^>]+nopcommerce)/i },
'OneStat': { cats: [ 10 ], html: /var p=("|')http("|')\+\(d\.URL\.indexOf\('https:'\)==0\?'s':''\)\+("|'):\/\/stat\.onestat\.com\/stat\.aspx\?tagver/i },
@ -256,6 +262,7 @@
'Piwik': { cats: [ 10 ], html: /var piwikTracker = Piwik\.getTracker\(/i, env: /^Piwik$/i },
'Plentymarkets': { cats: [ 6 ], meta: { 'generator': /www\.plentyMarkets\./i } },
'Plesk': { cats: [ 9 ], headers: { 'X-Powered-By-Plesk': /Plesk/i,'X-Powered-By': /PleskLin/i }, script: /common\.js\?plesk/i },
'Pligg': { cats: [ 1 ], meta: { 'generator': /Pligg/i }, html: /<span[^>]+id="xvotes-0/, env: /pligg_/i },
'Plone': { cats: [ 1 ], meta: { 'generator': /Plone/i }, implies: [ 'Python' ] },
'Plura': { cats: [ 19 ], html: /<iframe src="http:\/\/pluraserver\.com/ },
'Posterous': { cats: [ 1, 11 ], html: /<div class=("|')posterous/i, env: /^Posterous/i },
@ -270,12 +277,13 @@
'Raphael': { cats: [ 25 ], script: /raphael.*\.js/, env: /^Raphael$/ },
'ReallyCMS': { cats: [ 1 ], meta: { 'generator': /ReallyCMS/ } },
'reCAPTCHA': { cats: [ 16 ], script: /(api\-secure\.recaptcha\.net|recaptcha_ajax\.js)/, html: /<div[^>]+id=("|')recaptcha_image/, env: /^Recaptcha$/ },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /Red Hat/i, 'X-Powered-By': /Red Hat/i } },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /(Red Hat|rhel[0-9]+)/i, 'X-Powered-By': /Red Hat/i } },
'Reddit': { cats: [ 2 ], html: /(<script[^>]+>var reddit = {|<a[^>]+Powered by Reddit|powered by <a[^>]+>reddit<)/i, url: /^(www\.)?reddit\.com/, env: /^reddit$/, implies: [ 'Python' ] },
'Redmine': { cats: [ 13 ], meta: { 'description': /Redmine/i }, html: /Powered by <a href=("|')[^>]+Redmine/i, implies: [ 'Ruby' ] },
'Reinvigorate': { cats: [ 10 ], html: /reinvigorate\.track\("/ },
'RequireJS': { cats: [ 12 ], script: /require.*\.js/ , env: /^requirejs$/},
'Ruby': { cats: [ 27 ], headers: { 'Server': /(Mongrel|WEBrick|Ruby|mod_rails|mod_rack|Phusion.Passenger)/i, 'X-Powered-By': /(mod_rails|mod_rack|Phusion.Passenger)/i }, meta: { 'authenticity_token': /csrf-param/i } },
'RequireJS': { cats: [ 12 ], script: /require.*\.js/, env: /^requirejs$/ },
'RoundCube': { cats: [ 30 ], html: /<title>RoundCube/, env: /(rcmail|rcube_|roundcube)/i },
'Ruby': { cats: [ 27 ], headers: { 'Server': /(Mongrel|WEBrick|Ruby|mod_rails|mod_rack|Phusion.Passenger)/i, 'X-Powered-By': /(mod_rails|mod_rack|Phusion.Passenger)/i }, meta: { 'csrf-param': /authenticity_token /i } },
'S.Builder': { cats: [ 1 ], meta: { 'generator': /S\.Builder/i } },
's9y': { cats: [ 1 ], meta: { 'generator': /Serendipity/i, 'Powered-By': /Serendipity/i } },
'script.aculo.us': { cats: [ 12 ], script: /(scriptaculous|protoaculous)\.js/, env: /^Scriptaculous$/ },
@ -367,6 +375,7 @@
'YUI': { cats: [ 12 ], script: /\/yui\/|yui\.yahooapis\.com/, env: /^YAHOO$/ },
'Zen Cart': { cats: [ 6 ], meta: { 'generator': /Zen Cart/i } },
'Zend': { cats: [ 22 ], headers: { 'X-Powered-By': /Zend/ } },
'Zepto': { cats: [ 12 ], script: /zepto.*.js/, env: /^Zepto$/ }
'Zepto': { cats: [ 12 ], script: /zepto.*.js/, env: /^Zepto$/ },
'Zinnia': { cats: [ 11 ], meta: { 'generator': /Zinnia/i }, implies: [ 'Django' ] }
};
})();

@ -45,3 +45,4 @@
<!ENTITY wappalyzer.cat27 "Programmiersprachen">
<!ENTITY wappalyzer.cat28 "Betriebssysteme">
<!ENTITY wappalyzer.cat29 "Suchmaschinen">
<!ENTITY wappalyzer.cat30 "Web mail">

@ -31,3 +31,4 @@ wappalyzer.cat26 = Mobile Framework
wappalyzer.cat27 = Programming Language
wappalyzer.cat28 = Operating System
wappalyzer.cat29 = Search Engine
wappalyzer.cat30 = Web mail

@ -44,3 +44,4 @@
<!ENTITY wappalyzer.cat27 "Programming Languages">
<!ENTITY wappalyzer.cat28 "Operating Systems">
<!ENTITY wappalyzer.cat29 "Search Engines">
<!ENTITY wappalyzer.cat30 "Web Mail">

@ -31,3 +31,4 @@ wappalyzer.cat26 = Mobile Framework
wappalyzer.cat27 = Programming Language
wappalyzer.cat28 = Operating System
wappalyzer.cat29 = Search Engine
wappalyzer.cat30 = Web Mail

@ -44,3 +44,4 @@
<!ENTITY wappalyzer.cat27 "Languages de programmation">
<!ENTITY wappalyzer.cat28 "Systèmes d'exploitation">
<!ENTITY wappalyzer.cat29 "Moteurs de recherche">
<!ENTITY wappalyzer.cat30 "Web Mail">

@ -31,3 +31,4 @@ wappalyzer.cat26 = Framework pour mobiles
wappalyzer.cat27 = Language de programmation
wappalyzer.cat28 = Système d'exploitation
wappalyzer.cat29 = Moteur de recherche
wappalyzer.cat30 = Web Mail

@ -43,4 +43,4 @@
<!ENTITY wappalyzer.cat26 "Mobiele Frameworks">
<!ENTITY wappalyzer.cat27 "Programmeer Talen">
<!ENTITY wappalyzer.cat28 "Operating Systems">
<!ENTITY wappalyzer.cat29 "Zoek Machines">
<!ENTITY wappalyzer.cat30 "Web Mail">

@ -31,3 +31,4 @@ wappalyzer.cat26 = Mobiel Framework
wappalyzer.cat27 = Programmeer Taal
wappalyzer.cat28 = Operating System
wappalyzer.cat29 = Zoek Machine
wappalyzer.cat30 = Web Mail

@ -34,7 +34,8 @@
26: 'mobile-frameworks',
27: 'programming-languages',
28: 'operating-systems',
29: 'search-engines'
29: 'search-engines',
30: 'web-mail'
};
w.apps = {
@ -88,6 +89,7 @@
'Commerce Server': { cats: [ 6 ], headers: { 'COMMERCE-SERVER-SOFTWARE': /.+/ }, implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'comScore': { cats: [ 10 ], html: /<i{1}frame[^>]* (id=("|')comscore("|')|scr=[^>]+comscore)/, env: /^_?COMSCORE$/i },
'Concrete5': { cats: [ 1 ], meta: { 'generator': /concrete5/i }, implies: [ 'PHP' ] },
'Connect': { cats: [ 18 ], headers: { 'X-Powered-By': /^Connect$/i }, implies: [ 'node.js' ] },
'Contao': { cats: [ 1, 6 ], html: /(<!--\s+This website is powered by (TYPOlight|Contao)|<link[^>]+(typolight|contao).css)/i, implies: [ 'PHP' ] },
'Contenido': { cats: [ 1 ], meta: { 'generator': /Contenido/i }, implies: [ 'PHP' ] },
'Contens': { cats: [ 1 ], meta: { 'generator': /contens/i }, implies: [ 'Java', 'CFML' ] },
@ -129,6 +131,7 @@
//'Ecodoo': { cats: [ 6 ], script: /addons\/lytebox\/lytebox\.js/ },
'EPiServer': { cats: [ 1 ], meta: { 'generator': /EPiServer/i }, implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'Exhibit': { cats: [ 25 ], script: /exhibit.*\.js/, env: /^Exhibit$/ },
'Express': { cats: [ 18 ], headers: { 'X-Powered-By': /^Express$/i }, implies: [ 'Connect', 'node.js' ] },
'ExpressionEngine': { cats: [ 1 ], headers: { 'Set-Cookie': /(exp_last_activity|exp_tracker)/ }, implies: [ 'PHP' ] },
'ExtJS': { cats: [ 12 ], script: /ext\-base\.js/, env: /^Ext$/ },
'eZ Publish': { cats: [ 1, 6 ], meta: { 'generator': /eZ Publish/i }, implies: [ 'PHP' ] },
@ -176,7 +179,7 @@
'Javascript Infovis Toolkit': { cats: [ 25 ], script: /jit.*\.js/, env: /^\$jit$/ },
'Jo': { cats: [ 26, 12 ], env: /^jo(Cache|DOM|Event)$/ },
'JobberBase': { cats: [ 19 ], meta: { 'generator': /Jobberbase/i }, env: /^Jobber$/ },
'Joomla': { cats: [ 1 ], meta: { 'generator': /Joomla/i }, html: /(<!\-\- JoomlaWorks "K2"|<[^>]+(feed|components)\/com_)/i, headers: { 'X-Content-Encoded-By': /Joomla/ }, env: /^(jcomments)$/i },
'Joomla': { cats: [ 1 ], url: /option=com_/i, meta: { 'generator': /Joomla/i }, html: /(<!\-\- JoomlaWorks "K2"|<[^>]+(feed|components)\/com_)/i, headers: { 'X-Content-Encoded-By': /Joomla/ }, env: /^(jcomments)$/i },
'jqPlot': { cats: [ 25 ], script: /jqplot.*\.js/, env: /^jQuery.jqplot$/ },
'jQTouch': { cats: [ 26 ], script: /jqtouch.*\.js/i, env:/^jQT$/ },
'jQuery': { cats: [ 12 ], script: /jquery.*.js/, env: /^jQuery$/ },
@ -194,7 +197,9 @@
'Koobi': { cats: [ 1 ], meta: { 'generator': /Koobi/i } },
'LEPTON': { cats: [ 1 ], meta: { 'generator': /LEPTON/i }, implies: [ 'PHP' ] },
'Liferay': { cats: [ 1 ], env: /^Liferay$/, headers: { 'Liferay-Portal': /.*/i } },
'LightMon': { cats: [ 1 ], meta: { 'generator': /LightMon/i }, headers: { 'X-Powered-By': /LightMon/i }, implies: [ 'PHP' ] },
'lighttpd': { cats: [ 22 ], headers: { 'Server': /lighttpd/i } },
'LimeSurvey': { cats: [ 19 ], headers: { 'generator': /LimeSurvey/i } },
'LiveJournal': { cats: [ 11 ], url: /^(www.)?.+\.livejournal\.com/i },
'Lotus Domino': { cats: [ 22 ], headers: { 'Server': /Lotus\-Domino/i } },
'Magento': { cats: [ 6 ], script: /\/(js\/mage|skin\/frontend\/(default|enterprise))\//, env: /^(Mage|VarienForm)$/, implies: [ 'PHP '] },
@ -226,6 +231,7 @@
'Nedstat': { cats: [ 10 ], html: /sitestat\(("|')http:\/\/nl\.sitestat\.com/ },
'Netmonitor': { cats: [ 10 ], script: /netmonitor\.fi\/nmtracker\.js/, env: /^netmonitor/ },
'Nginx': { cats: [ 22 ], headers: { 'Server': /nginx/i } },
'node.js': { cats: [ 27 ], },
'NOIX': { cats: [ 19 ], html: /<[^>]+(src|href)=[^>]*(\/media\/noix)|<!\-\- NOIX/i },
'nopCommerce': { cats: [ 6 ], html: /(<!\-\-Powered by nopCommerce|Powered by: <a[^>]+nopcommerce)/i },
'OneStat': { cats: [ 10 ], html: /var p=("|')http("|')\+\(d\.URL\.indexOf\('https:'\)==0\?'s':''\)\+("|'):\/\/stat\.onestat\.com\/stat\.aspx\?tagver/i },
@ -256,6 +262,7 @@
'Piwik': { cats: [ 10 ], html: /var piwikTracker = Piwik\.getTracker\(/i, env: /^Piwik$/i },
'Plentymarkets': { cats: [ 6 ], meta: { 'generator': /www\.plentyMarkets\./i } },
'Plesk': { cats: [ 9 ], headers: { 'X-Powered-By-Plesk': /Plesk/i,'X-Powered-By': /PleskLin/i }, script: /common\.js\?plesk/i },
'Pligg': { cats: [ 1 ], meta: { 'generator': /Pligg/i }, html: /<span[^>]+id="xvotes-0/, env: /pligg_/i },
'Plone': { cats: [ 1 ], meta: { 'generator': /Plone/i }, implies: [ 'Python' ] },
'Plura': { cats: [ 19 ], html: /<iframe src="http:\/\/pluraserver\.com/ },
'Posterous': { cats: [ 1, 11 ], html: /<div class=("|')posterous/i, env: /^Posterous/i },
@ -270,12 +277,13 @@
'Raphael': { cats: [ 25 ], script: /raphael.*\.js/, env: /^Raphael$/ },
'ReallyCMS': { cats: [ 1 ], meta: { 'generator': /ReallyCMS/ } },
'reCAPTCHA': { cats: [ 16 ], script: /(api\-secure\.recaptcha\.net|recaptcha_ajax\.js)/, html: /<div[^>]+id=("|')recaptcha_image/, env: /^Recaptcha$/ },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /Red Hat/i, 'X-Powered-By': /Red Hat/i } },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /(Red Hat|rhel[0-9]+)/i, 'X-Powered-By': /Red Hat/i } },
'Reddit': { cats: [ 2 ], html: /(<script[^>]+>var reddit = {|<a[^>]+Powered by Reddit|powered by <a[^>]+>reddit<)/i, url: /^(www\.)?reddit\.com/, env: /^reddit$/, implies: [ 'Python' ] },
'Redmine': { cats: [ 13 ], meta: { 'description': /Redmine/i }, html: /Powered by <a href=("|')[^>]+Redmine/i, implies: [ 'Ruby' ] },
'Reinvigorate': { cats: [ 10 ], html: /reinvigorate\.track\("/ },
'RequireJS': { cats: [ 12 ], script: /require.*\.js/ , env: /^requirejs$/},
'Ruby': { cats: [ 27 ], headers: { 'Server': /(Mongrel|WEBrick|Ruby|mod_rails|mod_rack|Phusion.Passenger)/i, 'X-Powered-By': /(mod_rails|mod_rack|Phusion.Passenger)/i }, meta: { 'authenticity_token': /csrf-param/i } },
'RequireJS': { cats: [ 12 ], script: /require.*\.js/, env: /^requirejs$/ },
'RoundCube': { cats: [ 30 ], html: /<title>RoundCube/, env: /(rcmail|rcube_|roundcube)/i },
'Ruby': { cats: [ 27 ], headers: { 'Server': /(Mongrel|WEBrick|Ruby|mod_rails|mod_rack|Phusion.Passenger)/i, 'X-Powered-By': /(mod_rails|mod_rack|Phusion.Passenger)/i }, meta: { 'csrf-param': /authenticity_token /i } },
'S.Builder': { cats: [ 1 ], meta: { 'generator': /S\.Builder/i } },
's9y': { cats: [ 1 ], meta: { 'generator': /Serendipity/i, 'Powered-By': /Serendipity/i } },
'script.aculo.us': { cats: [ 12 ], script: /(scriptaculous|protoaculous)\.js/, env: /^Scriptaculous$/ },
@ -367,6 +375,7 @@
'YUI': { cats: [ 12 ], script: /\/yui\/|yui\.yahooapis\.com/, env: /^YAHOO$/ },
'Zen Cart': { cats: [ 6 ], meta: { 'generator': /Zen Cart/i } },
'Zend': { cats: [ 22 ], headers: { 'X-Powered-By': /Zend/ } },
'Zepto': { cats: [ 12 ], script: /zepto.*.js/, env: /^Zepto$/ }
'Zepto': { cats: [ 12 ], script: /zepto.*.js/, env: /^Zepto$/ },
'Zinnia': { cats: [ 11 ], meta: { 'generator': /Zinnia/i }, implies: [ 'Django' ] }
};
})();

@ -34,7 +34,8 @@
26: 'mobile-frameworks',
27: 'programming-languages',
28: 'operating-systems',
29: 'search-engines'
29: 'search-engines',
30: 'web-mail'
};
w.apps = {
@ -88,6 +89,7 @@
'Commerce Server': { cats: [ 6 ], headers: { 'COMMERCE-SERVER-SOFTWARE': /.+/ }, implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'comScore': { cats: [ 10 ], html: /<i{1}frame[^>]* (id=("|')comscore("|')|scr=[^>]+comscore)/, env: /^_?COMSCORE$/i },
'Concrete5': { cats: [ 1 ], meta: { 'generator': /concrete5/i }, implies: [ 'PHP' ] },
'Connect': { cats: [ 18 ], headers: { 'X-Powered-By': /^Connect$/i }, implies: [ 'node.js' ] },
'Contao': { cats: [ 1, 6 ], html: /(<!--\s+This website is powered by (TYPOlight|Contao)|<link[^>]+(typolight|contao).css)/i, implies: [ 'PHP' ] },
'Contenido': { cats: [ 1 ], meta: { 'generator': /Contenido/i }, implies: [ 'PHP' ] },
'Contens': { cats: [ 1 ], meta: { 'generator': /contens/i }, implies: [ 'Java', 'CFML' ] },
@ -129,6 +131,7 @@
//'Ecodoo': { cats: [ 6 ], script: /addons\/lytebox\/lytebox\.js/ },
'EPiServer': { cats: [ 1 ], meta: { 'generator': /EPiServer/i }, implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'Exhibit': { cats: [ 25 ], script: /exhibit.*\.js/, env: /^Exhibit$/ },
'Express': { cats: [ 18 ], headers: { 'X-Powered-By': /^Express$/i }, implies: [ 'Connect', 'node.js' ] },
'ExpressionEngine': { cats: [ 1 ], headers: { 'Set-Cookie': /(exp_last_activity|exp_tracker)/ }, implies: [ 'PHP' ] },
'ExtJS': { cats: [ 12 ], script: /ext\-base\.js/, env: /^Ext$/ },
'eZ Publish': { cats: [ 1, 6 ], meta: { 'generator': /eZ Publish/i }, implies: [ 'PHP' ] },
@ -194,6 +197,7 @@
'Koobi': { cats: [ 1 ], meta: { 'generator': /Koobi/i } },
'LEPTON': { cats: [ 1 ], meta: { 'generator': /LEPTON/i }, implies: [ 'PHP' ] },
'Liferay': { cats: [ 1 ], env: /^Liferay$/, headers: { 'Liferay-Portal': /.*/i } },
'LightMon': { cats: [ 1 ], meta: { 'generator': /LightMon/i }, headers: { 'X-Powered-By': /LightMon/i }, implies: [ 'PHP' ] },
'lighttpd': { cats: [ 22 ], headers: { 'Server': /lighttpd/i } },
'LimeSurvey': { cats: [ 19 ], headers: { 'generator': /LimeSurvey/i } },
'LiveJournal': { cats: [ 11 ], url: /^(www.)?.+\.livejournal\.com/i },
@ -227,6 +231,7 @@
'Nedstat': { cats: [ 10 ], html: /sitestat\(("|')http:\/\/nl\.sitestat\.com/ },
'Netmonitor': { cats: [ 10 ], script: /netmonitor\.fi\/nmtracker\.js/, env: /^netmonitor/ },
'Nginx': { cats: [ 22 ], headers: { 'Server': /nginx/i } },
'node.js': { cats: [ 27 ], },
'NOIX': { cats: [ 19 ], html: /<[^>]+(src|href)=[^>]*(\/media\/noix)|<!\-\- NOIX/i },
'nopCommerce': { cats: [ 6 ], html: /(<!\-\-Powered by nopCommerce|Powered by: <a[^>]+nopcommerce)/i },
'OneStat': { cats: [ 10 ], html: /var p=("|')http("|')\+\(d\.URL\.indexOf\('https:'\)==0\?'s':''\)\+("|'):\/\/stat\.onestat\.com\/stat\.aspx\?tagver/i },
@ -257,6 +262,7 @@
'Piwik': { cats: [ 10 ], html: /var piwikTracker = Piwik\.getTracker\(/i, env: /^Piwik$/i },
'Plentymarkets': { cats: [ 6 ], meta: { 'generator': /www\.plentyMarkets\./i } },
'Plesk': { cats: [ 9 ], headers: { 'X-Powered-By-Plesk': /Plesk/i,'X-Powered-By': /PleskLin/i }, script: /common\.js\?plesk/i },
'Pligg': { cats: [ 1 ], meta: { 'generator': /Pligg/i }, html: /<span[^>]+id="xvotes-0/, env: /pligg_/i },
'Plone': { cats: [ 1 ], meta: { 'generator': /Plone/i }, implies: [ 'Python' ] },
'Plura': { cats: [ 19 ], html: /<iframe src="http:\/\/pluraserver\.com/ },
'Posterous': { cats: [ 1, 11 ], html: /<div class=("|')posterous/i, env: /^Posterous/i },
@ -271,11 +277,12 @@
'Raphael': { cats: [ 25 ], script: /raphael.*\.js/, env: /^Raphael$/ },
'ReallyCMS': { cats: [ 1 ], meta: { 'generator': /ReallyCMS/ } },
'reCAPTCHA': { cats: [ 16 ], script: /(api\-secure\.recaptcha\.net|recaptcha_ajax\.js)/, html: /<div[^>]+id=("|')recaptcha_image/, env: /^Recaptcha$/ },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /Red Hat/i, 'X-Powered-By': /Red Hat/i } },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /(Red Hat|rhel[0-9]+)/i, 'X-Powered-By': /Red Hat/i } },
'Reddit': { cats: [ 2 ], html: /(<script[^>]+>var reddit = {|<a[^>]+Powered by Reddit|powered by <a[^>]+>reddit<)/i, url: /^(www\.)?reddit\.com/, env: /^reddit$/, implies: [ 'Python' ] },
'Redmine': { cats: [ 13 ], meta: { 'description': /Redmine/i }, html: /Powered by <a href=("|')[^>]+Redmine/i, implies: [ 'Ruby' ] },
'Reinvigorate': { cats: [ 10 ], html: /reinvigorate\.track\("/ },
'RequireJS': { cats: [ 12 ], script: /require.*\.js/ , env: /^requirejs$/},
'RequireJS': { cats: [ 12 ], script: /require.*\.js/, env: /^requirejs$/ },
'RoundCube': { cats: [ 30 ], html: /<title>RoundCube/, env: /(rcmail|rcube_|roundcube)/i },
'Ruby': { cats: [ 27 ], headers: { 'Server': /(Mongrel|WEBrick|Ruby|mod_rails|mod_rack|Phusion.Passenger)/i, 'X-Powered-By': /(mod_rails|mod_rack|Phusion.Passenger)/i }, meta: { 'csrf-param': /authenticity_token /i } },
'S.Builder': { cats: [ 1 ], meta: { 'generator': /S\.Builder/i } },
's9y': { cats: [ 1 ], meta: { 'generator': /Serendipity/i, 'Powered-By': /Serendipity/i } },
@ -368,6 +375,7 @@
'YUI': { cats: [ 12 ], script: /\/yui\/|yui\.yahooapis\.com/, env: /^YAHOO$/ },
'Zen Cart': { cats: [ 6 ], meta: { 'generator': /Zen Cart/i } },
'Zend': { cats: [ 22 ], headers: { 'X-Powered-By': /Zend/ } },
'Zepto': { cats: [ 12 ], script: /zepto.*.js/, env: /^Zepto$/ }
'Zepto': { cats: [ 12 ], script: /zepto.*.js/, env: /^Zepto$/ },
'Zinnia': { cats: [ 11 ], meta: { 'generator': /Zinnia/i }, implies: [ 'Django' ] }
};
})();