-Correct #82 errors

-Remove Google Friend connect because don't exist anymore

-Improved Ruby detection

-Few other little improvement
main
Camille Barneaud 13 years ago
parent 1bdae9ed94
commit 365ec95983

Binary file not shown.

Before

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 735 B

After

Width:  |  Height:  |  Size: 729 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 856 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 856 B

After

Width:  |  Height:  |  Size: 1020 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 B

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 735 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 735 B

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 735 B

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 B

After

Width:  |  Height:  |  Size: 1021 B

@ -38,13 +38,14 @@
};
w.apps = {
'1und1': { cats: [ 6 ], url: /\/shop\/catalog\/browse\?sessid\=/, implies: [ 'PHP' ] },
'1C-Bitrix': { cats: [ 1 ], headers: { 'X-Powered-CMS': /Bitrix Site Manager/, 'Set-Cookie': /BITRIX_/i}, html: /<link[^>]+components\/bitrix|(src|href)=("|')\/bitrix\/(js|templates)/i, script: /1c\-bitrix/i, implies: [ 'PHP' ] },
'1und1': { cats: [ 6 ], url: /\/shop\/catalog\/browse\?sessid\=/, implies: [ 'PHP' ] },
'2z Project': { cats: [ 1 ], meta: { 'generator': /2z project/i } },
'AddThis': { cats: [ 5 ], script: /addthis\.com\/js/, env: /^addthis$/ },
'Adobe CQ5': { cats: [ 1 ], url: /\/etc\/designs\//i, html: /<div class="[^"]*parbase/, implies: [ 'Java' ] },
'Adobe GoLive': { cats: [ 20 ], meta: { 'generator': /Adobe GoLive/i } },
'Advanced Web Stats': { cats: [ 10 ], html: /aws.src = [^<]+caphyon\-analytics/i, implies: [ 'Java' ] },
'Alloy': { cats: [ 12 ], env: /^AUI$/ },
'Ametys': { cats: [ 1 ], meta: { 'generator': /(Ametys|Anyware Technologies)/i }, script: /STools.js/, implies: [ 'Java' ] },
'Amiro.CMS': { cats: [ 1 ], meta: { 'generator': /Amiro/i }, html: /system_js\.php(\?|\-)script=/, implies: [ 'PHP' ] },
'AOLserver': { cats: [ 22 ], headers: { 'Server': /AOLserver/i } },
@ -55,14 +56,13 @@
'ATG Web Commerce': { cats: [ 6 ], headers: { 'X-ATG-Version': /ATG/i }, html: /<[^>]+_DARGS/ },
'Atlassian Confluence': { cats: [ 8 ], html: /Powered by <a href=.http:\/\/www\.atlassian\.com\/software\/confluence/i, implies: [ 'Java' ] },
'Atlassian Jira': { cats: [ 13 ], env: /^jira$/i, html: /Powered by <a href=.http:\/\/www\.atlassian\.com\/software\/jira/i, implies: [ 'Java' ] },
'Alloy': { cats: [ 12 ], env: /^AUI$/ },
'AWStats': { cats: [ 10 ], meta: { 'generator': /AWStats/i }, implies: [ 'Perl' ] },
'Banshee': { cats: [ 1, 18 ], html: /Built upon the <a href=("|')[^>]+banshee-php\.org/i, implies: [ 'PHP' ] },
'Backbone.js': { cats: [ 12 ], script: /backbone.*\.js/, env: /^Backbone$/, implies: [ 'Underscore.js' ] },
'Banshee': { cats: [ 1, 18 ], html: /Built upon the <a href=("|')[^>]+banshee-php\.org/i, implies: [ 'PHP' ] },
'BIGACE': { cats: [ 1 ], meta: { 'generator': /BIGACE/ }, html: /Powered by <a href=("|')[^>]+BIGACE|<!--\s+Site is running BIGACE/i, implies: [ 'PHP' ] },
'BigDump': { cats: [ 3 ], html: /<!-- <h1>BigDump: Staggered MySQL Dump Importer/, implies: [ 'PHP' ] },
'Bigware': { cats: [ 6 ], html: /Diese <a href=("|')http:\/\/www\.bigware\.de("|')|<center>[^<]+<a href="http:\/\/www\.bigware\.de[^"]*" target="_blank">\s*<u>Shopsoftware\s*<\/u>\s*<\/a>[^<]+<\/center>/i, url: /(\?|&)bigWAdminID=[a-z0-9]+(&|$)/i, headers: { 'Set-Cookie': /bigwareCsid|bigWAdminID/ }, implies: [ 'PHP' ] },
'blip.tv': { cats: [ 14 ], html: /<(param|embed)[^>]+blip\.tv\/play/i },
'Blip.tv': { cats: [ 14 ], html: /<(param|embed)[^>]+blip\.tv\/play/i },
'Blogger': { cats: [ 11 ], meta: { 'generator': /blogger/i }, url: /^(www.)?.+\.blogspot\.com/i },
'BrowserCMS': { cats: [ 1 ], meta: { 'generator': /BrowserCMS/i }, implies: [ 'Ruby' ] },
'Bugzilla': { cats: [ 13 ], html: /href="enter_bug\.cgi">/, implies: [ 'Perl' ] },
@ -73,8 +73,8 @@
'CentOS': { cats: [ 28 ], headers: { 'Server': /CentOS/i, 'X-Powered-By': /CentOS/i } },
'CFML': { cats: [ 27 ] },
'Chameleon': { cats: [ 1 ], meta: { 'generator': /chameleon\-cms/i }, implies: [ 'Apache', 'PHP' ] },
'Chartbeat': { cats: [ 10 ], html: /function loadChartbeat\(\) {/i },
'Chamilo': { cats: [ 21 ], meta: { 'generator': /Chamilo/i }, headers: { 'X-Powered-By': /Chamilo/i }, implies: [ 'PHP' ] },
'Chartbeat': { cats: [ 10 ], html: /function loadChartbeat\(\) {/i },
'Cherokee': { cats: [ 22 ], headers: { 'Server': /Cherokee/i } },
'CKEditor': { cats: [ 24 ], env: /^CKEDITOR$/i, implies: [ 'PHP' ] },
'ClickHeat': { cats: [ 10 ], script: /clickheat.*\.js/i, env: /^clickHeatBrowser$/, implies: [ 'PHP' ] },
@ -99,22 +99,22 @@
'Crazy Egg': { cats: [ 10 ], env: /CE2/, script: /cetrk\.com\/pages\/scripts\/[0-9]+\/[0-9]+\.js/ },
'CS Cart': { cats: [ 6 ], env: /fn_compare_strings/i, html: /&nbsp;Powered by (<a href=.http:\/\/www\.cs\-cart\.com|CS\-Cart)/i, implies: [ 'PHP' ] },
'CubeCart': { cats: [ 6 ], html: /(Powered by <a href=.http:\/\/www\.cubecart\.com|<p[^>]+>Powered by CubeCart)/i, meta: { 'generator': /cubecart/i }, implies: [ 'PHP' ] },
'cufon': { cats: [ 17 ], script: /cufon\-yui\.js/, env: /^Cufon$/ },
//'dashCommerce': { cats: [ 6 ], implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'Cufon': { cats: [ 17 ], script: /cufon\-yui\.js/, env: /^Cufon$/ },
'd3': { cats: [ 25 ], script: /d3(\.v2)(\.min)?\.js/ },
'Dancer': { cats: [ 18 ], headers: { 'X-Powered-By': /Perl Dancer/, 'Server': /Perl Dancer/ }, implies: [ 'Perl' ] },
'Danneo CMS': { cats: [ 1 ], headers: {'X-Powered-By': /CMS Danneo.*/i}, meta: { 'generator': /Danneo/i }, implies: [ 'Apache', 'PHP' ] },
'DataLife Engine': { cats: [ 1 ], env: /dle_root/i, meta: { 'generator': /DataLife Engine/i } },
//'dashCommerce': { cats: [ 6 ], implies: [ 'Microsoft ASP.NET', 'IIS', 'Windows Server' ] },
'DataLife Engine': { cats: [ 1 ], env: /dle_root/i, meta: { 'generator': /DataLife Engine/i }, implies: [ 'PHP', 'Apache' ] },
'David Webbox': { cats: [ 22 ], headers: { 'Server': /David-WebBox/i } },
'Debian': { cats: [ 28 ], headers: { 'Server': /Debian/i, 'X-Powered-By': /(Debian|dotdeb|etch|lenny|squeeze|wheezy)/i } },
'DedeCMS': { cats: [ 1 ], env: /^Dede/, script: /dedeajax/, implies: [ 'PHP' ] },
'Demandware': { cats: [ 6 ], headers: {'Server' : /Demandware eCommerce Server/i}, html: /<[^>]+demandware.edgesuite/, env: /^dwAnalytics/ },
'DHTMLX': { cats: [ 12 ], script: /dhtmlxcommon\.js/ },
'DirectAdmin': { cats: [ 9 ], html: /<a[^>]+>DirectAdmin<\/a> Web Control Panel/i, implies: [ 'PHP', 'Apache', 'phpMyAdmin', 'FrontPage' ] },
'DirectAdmin': { cats: [ 9 ], html: /<a[^>]+>DirectAdmin<\/a> Web Control Panel/i, implies: [ 'PHP', 'Apache' ] },
'Disqus': { cats: [ 15 ], script: /disqus_url/, html: /<div[^>]+id=("|')disqus_thread("|')/, env: /^DISQUS/i },
'Django': { cats: [ 18 ], html: /powered by <a[^>]+>Django/i, implies: [ 'Python' ] },
'Django CMS': { cats: [ 1 ], script: /media\/cms\/js\/csrf\.js/, headers: { 'Set-Cookie': /django/ }, implies: [ 'Django' ] },
'dojo': { cats: [ 12 ], script: /dojo(\.xd)?\.js/, env: /^dojo$/ },
'Dojo': { cats: [ 12 ], script: /dojo(\.xd)?\.js/, env: /^dojo$/ },
'Dokeos': { cats: [ 21 ], meta: { 'generator': /Dokeos/i }, html: /Portal <a[^>]+>Dokeos|@import "[^"]+dokeos_blue/i, headers: { 'X-Powered-By': /Dokeos/ }, implies: [ 'PHP', 'xajax', 'jQuery', 'CKEditor' ] },
'DokuWiki': { cats: [ 8 ], meta: { 'generator': /DokuWiki/i }, implies: [ 'PHP' ] },
'DotNetNuke': { cats: [ 1 ], meta: { 'generator': /DotNetNuke/i }, html: /(<!\-\- by DotNetNuke Corporation|<link[^>]+\/portals\/_default\/[^>]+\.css)/i, env: /^(DDN|DotNetNuke)/i, implies: [ 'Microsoft ASP.NET' ] },
@ -127,27 +127,26 @@
//'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$/ },
'ExtJS': { cats: [ 12 ], script: /ext\-base\.js/, env: /^Ext$/ },
'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' ] },
'FAST Search for SharePoint': { cats: [ 29 ], url: /Pages\/SearchResults\.aspx\?k\=/, implies: [ 'Microsoft SharePoint', 'Microsoft ASP.NET' ] },
'FAST ESP': { cats: [ 29 ], html: /fastsearch|searchProfile\=|searchCategory\=/i, url: /esppublished|searchProfile\=|searchCategory\=/i },
'Fact Finder': { cats: [ 29 ], html: /\/images\/fact-finder\.gif|ViewParametricSearch|factfinder|Suggest\.ff/i, url: /ViewParametricSearch|factfinder|ffsuggest/i },
'FAST ESP': { cats: [ 29 ], html: /fastsearch|searchProfile\=|searchCategory\=/i, url: /esppublished|searchProfile\=|searchCategory\=/i },
'FAST Search for SharePoint': { cats: [ 29 ], url: /Pages\/SearchResults\.aspx\?k\=/, implies: [ 'Microsoft SharePoint', 'Microsoft ASP.NET' ] },
'FlexCMP': { cats: [ 1 ], meta: { 'generator': /FlexCMP/ }, headers: { 'X-Powered-By': /FlexCMP/ } },
'FluxBB': { cats: [ 2 ], html: /Powered by (<strong>)?<a href=("|')[^>]+fluxbb/i },
'Flyspray': { cats: [ 13 ], html: /(<a[^>]+>Powered by Flyspray|<map id=("|')projectsearchform|Powered by <a href=("|')http:\/\/flyspray\.org\/("|'))/ },
'FreeBSD': { cats: [ 28 ], headers: { 'Server': /FreeBSD/i } },
'FWP': { cats: [ 6 ], meta: {'generator': /FWP Shop/ } },
'FrontPage': { cats: [ 20 ], meta: { 'generator': /Microsoft FrontPage/ }, html: /<html[^>]+urn:schemas\-microsoft\-com:office:office/i },
'FWP': { cats: [ 6 ], meta: {'generator': /FWP Shop/ } },
'Gallery': { cats: [ 7 ], env: /galleryAuthToken/, html: /<div id="gsNavBar" class="gcBorder1">/ },
'Gambio': { cats: [ 6 ], html: /brought to you by XT-Commerce|href=""templates\/gambio\/|content\.php\?coID=\d|<!-- gambio eof -->/, implies: [ 'PHP' ] },
'Gambio': { cats: [ 6 ], html: /<link+.*[^>] href="templates\/gambio\/|<a+.*[^>]content\.php\?coID=\d|<!-- gambio eof -->/, implies: [ 'PHP' ] },
'Gauges': { cats: [ 10 ], html: /t\.src = '\/\/secure\.gaug\.es\/track\.js/, env: /^_gauges$/ },
'Gentoo' : { cats: [ 28 ], headers: { 'X-Powered-By': /-?gentoo/} },
'Get Satisfaction': { cats: [ 13 ], html: /var feedback_widget = new GSFN\.feedback_widget\(feedback_widget_options\)/ },
'Google Analytics': { cats: [ 10 ], script: /(\.google\-analytics\.com\/ga\.js|google-analytics\.com\/urchin\.js)/, env: /^gaGlobal$/ },
'Google App Engine': { cats: [ 22 ], headers: { 'Server': /Google Frontend/i } },
'Google Font API': { cats: [ 17 ], script: /googleapis.com\/.+webfont/, html: /<link[^>]* href=("|')http:\/\/fonts\.googleapis\.com/, env: /^WebFont/ },
'Google Friend Connect': { cats: [ 5 ], script: /google.com\/friendconnect/ },
'Google Maps': { cats: [ 5 ], script: /(maps\.google\.com\/maps\?file=api|maps\.google\.com\/maps\/api\/staticmap)/ },
'Google Sites': { cats: [ 1 ], url: /sites.google.com/ },
'GoStats': { cats: [ 10 ], env: /^_go(stats|_track)/i },
@ -174,10 +173,10 @@
'Joomla': { cats: [ 1 ], 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 UI': { cats: [ 12 ], script: /jquery\-ui.*\.js/, implies: [ 'jQuery' ] },
'jQuery': { cats: [ 12 ], script: /jquery.*.js/, env: /^jQuery$/ },
'jQuery Mobile': { cats: [ 26 ], script: /jquery\.mobile.*\.js/i },
'jQuery Sparklines': { cats: [ 25 ], script: /jquery\.sparkline.*\.js/i },
'jQuery UI': { cats: [ 12 ], script: /jquery\-ui.*\.js/, implies: [ 'jQuery' ] },
'JS Charts': { cats: [ 25 ], script: /jscharts.*\.js/i, env: /^JSChart$/ },
'JTL Shop': { cats: [ 6 ], html: /(<input[^>]+name=('|")JTLSHOP|<a href=('|")jtl\.php)/i },
'K2': { cats: [ 19 ], html: /<!\-\- JoomlaWorks "K2"/, env: /^K2RatingURL$/, implies: [ 'Joomla' ] },
@ -188,9 +187,9 @@
'Kolibri CMS': { cats: [ 1 ], meta: { 'generator': /Kolibri/i } },
'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 } },
'lighttpd': { cats: [ 22 ], headers: { 'Server': /lighttpd/i } },
'LiveJournal': { cats: [ 11 ], url: /^(www.)?.+\.livejournal\.com/i },
'Liferay': { cats: [ 1 ], env: /^Liferay$/, headers: { 'Liferay-Portal': /.*/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 '] },
'Mambo': { cats: [ 1 ], meta: { 'generator': /Mambo/i } },
@ -241,19 +240,19 @@
'Percussion': { cats: [ 1 ], meta: { 'generator': /(Percussion|Rhythmyx)/i }, html: /<[^>]+class="perc-region/ },
'Perl': { cats: [ 27 ] },
'PHP': { cats: [ 27 ], headers: { 'Server': /php/i, 'X-Powered-By': /php/i, 'Set-Cookie': /PHPSESSID/ }, url: /\.php$/ },
'Phpcms': { cats: [ 1 ], env: /^phpcms/ },
'PHP-Fusion': { cats: [ 1 ], html: /Powered by <a href=("|')[^>]+php-fusion/i },
'PHP-Nuke': { cats: [ 2 ], meta: { 'generator': /PHP-Nuke/i }, html: /<[^>]+Powered by PHP\-Nuke/i },
'phpBB': { cats: [ 2 ], meta: { 'copyright': /phpBB Group/ }, html: /(Powered by <a[^>]+phpbb|<a[^>]+phpbb[^>]+class=.copyright|\tphpBB style name|<[^>]+styles\/(sub|pro)silver\/theme|<img[^>]+i_icon_mini|<table class="forumline)/i, env: /^(style_cookie_settings|phpbb_)/, headers: { 'Set-Cookie': /^phpbb/ }, implies: [ 'PHP' ] },
'phpCMS': { cats: [ 1 ], env: /^phpcms/ },
'phpDocumentor': { cats: [ 4 ], html: /<!-- Generated by phpDocumentor/, implies: [ 'PHP' ] },
'PHP-Fusion': { cats: [ 1 ], html: /Powered by <a href=("|')[^>]+php-fusion/i },
'phpMyAdmin': { cats: [ 3 ], html: /(var pma_absolute_uri = '|PMA_sendHeaderLocation\(|<title>phpMyAdmin<\/title>)/i, implies: [ 'PHP' ] },
'PHP-Nuke': { cats: [ 2 ], meta: { 'generator': /PHP-Nuke/i }, html: /<[^>]+Powered by PHP\-Nuke/i },
'phpPgAdmin': { cats: [ 3 ], html: /(<title>phpPgAdmin<\/title>|<span class=("|')appname("|')>phpPgAdmin)/i },
'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 },
'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 },
'Posterous': { cats: [ 1, 11 ], html: /<div class=("|')posterous/i, env: /^Posterous/i },
'Powergap': { cats: [ 6 ], html: /(s\d\d)\.php\?shopid=\1/ },
'Prestashop': { cats: [ 6 ], meta: { 'generator': /PrestaShop/i }, html: /Powered by <a href=("|')[^>]+PrestaShop/i },
'Prototype': { cats: [ 12 ], script: /(prototype|protoaculous)\.js/, env: /^Prototype$/ },
@ -262,15 +261,15 @@
'Python': { cats: [ 27 ] },
'Quantcast': { cats: [ 10 ], script: /edge\.quantserve\.com\/quant\.js/, env: /^quantserve$/ },
'Quick.Cart': { cats: [ 6 ], html: /<a href="[^>]+opensolution\.org\/">Powered by/i },
'ReallyCMS': { cats: [ 1 ], meta: { 'generator': /ReallyCMS/ } },
'Red Hat': { cats: [ 28 ], headers: { 'Server': /Red Hat/i, 'X-Powered-By': /Red Hat/i } },
'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 } },
'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 } },
'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 } },
'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$/ },
@ -330,28 +329,28 @@
'VP-ASP': { cats: [ 6 ], script: /vs350\.js/, html: /<a[^>]+>Powered By VP\-ASP Shopping Cart<\/a>/, implies: [ 'Microsoft ASP.NET' ] },
'W3Counter': { cats: [ 10 ], script: /w3counter\.com\/tracker\.js/ },
'Web Optimizer': { cats: [ 10 ], html: /<title [^>]*lang=("|')wo("|')>/ },
'Websale': { cats: [ 6 ], url: /\/websale7\// },
'webEdition': { cats: [ 1 ], meta: { 'generator': /webEdition/i, 'DC.title': /webEdition/i } },
'WebGUI': { cats: [ 1 ], meta: { 'generator': /WebGUI/i } },
'WebPublisher': { cats: [ 1 ], meta: { 'generator': /WEB\|Publisher/i } },
'Websale': { cats: [ 6 ], url: /\/websale7\// },
'WebsiteBaker': { cats: [ 1 ], meta: { 'generator': /WebsiteBaker/i } },
'Webtrekk': { cats: [ 10 ], html: /var webtrekk = new Object/ },
'Webtrends': { cats: [ 10 ], html: /<img[^>]+id=("|')DCSIMG("|')[^>]+webtrends/i, env: /^(WTOptimize|WebTrends)/i },
'Weebly': { cats: [ 1 ], html: /<[^>]+class=("|')weebly/i },
'WikkaWiki': { cats: [ 8 ], meta: { 'generator': /WikkaWiki/ }, html: /Powered by <a href=("|')[^>]+WikkaWiki/i },
'Windows Server': { cats: [ 28 ], headers: { 'Server': /Win32/i } },
'wink': { cats: [ 26, 12 ], script: /(\_base\/js\/base|wink).*\.js/i, env: /^wink$/ },
'Wink': { cats: [ 26, 12 ], script: /(\_base\/js\/base|wink).*\.js/i, env: /^wink$/ },
'Wolf CMS': { cats: [ 1 ], html: /<a href=("|')[^>]+wolfcms.org.+Wolf CMS.+inside/i },
'Woopra': { cats: [ 10 ], script: /static\.woopra\.com/ },
'WordPress': { cats: [ 1, 11 ], meta: { 'generator': /WordPress/i }, html: /<link rel=("|')stylesheet("|') [^>]+wp-content/i, env: /^wp_username$/, implies: [ 'PHP' ] },
'xajax': { cats: [ 12 ], script: /xajax_core.*\.js/i },
'Xajax': { cats: [ 12 ], script: /xajax_core.*\.js/i },
'Xanario': { cats: [ 6 ], meta: { 'generator': /xanario shopsoftware/i } },
'XenForo': { cats: [ 2 ], html: /(jQuery\.extend\(true, XenForo|Forum software by XenForo&trade;|<!\-\-XF:branding)/ },
'XiTi': { cats: [ 10 ], html: /<[^>]+src=("|')[^>]+xiti.com\/hit.xiti/i, env: /^Xt_/ },
'XMB': { cats: [ 2 ], html: /<!-- Powered by XMB/i },
'xui': { cats: [ 26, 12 ], script: /[^a-zA-Z]xui.*\.js/i, env: /^xui$/ },
'XOOPS': { cats: [ 1 ], meta: { 'generator': /XOOPS/i } },
'xtCommerce': { cats: [ 6 ], meta: { 'generator': /xt:Commerce/ }, html: /<div class=("|')copyright("|')>.+<a[^>]+>xt:Commerce/i },
'xui': { cats: [ 26, 12 ], script: /[^a-zA-Z]xui.*\.js/i, env: /^xui$/ },
'YaBB': { cats: [ 2 ], html: /Powered by <a href=("|')[^>]+yabbforum/i },
'Yahoo! Web Analytics': { cats: [ 10 ], script: /d\.yimg\.com\/mi\/ywa\.js/ },
'Yandex.Metrika': { cats: [ 10 ], script: /mc\.yandex\.ru\/metrika\/watch\.js/ },