diff --git a/.gitignore b/.gitignore index af6546711..19de018bb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,11 @@ .vagrant build/* - -drivers/npm/node_modules -drivers/npm/npm-debug.log - src/icons/converted/* -package.json -node_modules/ +node_modules npm-debug.log -Thumbs.db -ehthumbs.db -Desktop.ini -$RECYCLE.BIN/ +tags !.gitkeep diff --git a/bin/wappalyzer-build b/bin/wappalyzer-build index 24e0f788c..6a18d6bb6 100755 --- a/bin/wappalyzer-build +++ b/bin/wappalyzer-build @@ -24,7 +24,7 @@ node $WAPPALYZER_NODE_PATH/node_modules/jsonlint/lib/cli.js -ist $'\t' $WAPPALYZ echo "Compressing PNG and SVG icons..." -node $WAPPALYZER_NODE_PATH/node_modules/imagemin-cli/cli.js $WAPPALYZER_ROOT/src/icons/* $WAPPALYZER_ROOT/src/icons +node $WAPPALYZER_NODE_PATH/node_modules/imagemin-cli/cli.js $WAPPALYZER_ROOT/src/icons/* --out-dir $WAPPALYZER_ROOT/src/icons 2>&1 > /dev/null echo "Converting SVG icons to PNG..." @@ -50,10 +50,6 @@ node $WAPPALYZER_NODE_PATH/node_modules/imagemin-cli/cli.js $WAPPALYZER_ROOT/src wappalyzer links -# Npm Module -mkdir -p $WAPPALYZER_ROOT/build/wappalyzer_npm/ -cp -R $WAPPALYZER_ROOT/src/drivers/npm/* $WAPPALYZER_ROOT/build/wappalyzer_npm/ - # Mozilla Firefox echo "Building Firefox driver..." @@ -70,17 +66,13 @@ pushd $WAPPALYZER_ROOT/src/drivers/chrome > /dev/null zip -qr $WAPPALYZER_ROOT/build/wappalyzer_chrome.zip . -popd > /dev/null - -# Bookmarklet -echo "Building Bookmarklet driver..." - -echo "var json =" > /tmp/bookmarklet +# Google Chrome +echo "Building WebExtension driver..." -cat $WAPPALYZER_ROOT/src/apps.json >> /tmp/bookmarklet +pushd $WAPPALYZER_ROOT/src/drivers/webextension > /dev/null -echo -e ";\n\nwappalyzer.apps = json.apps;\nwappalyzer.categories = json.categories;" >> /tmp/bookmarklet +zip -qr $WAPPALYZER_ROOT/build/wappalyzer_webextension.zip . -mv /tmp/bookmarklet $WAPPALYZER_ROOT/src/drivers/bookmarklet/js/apps.js +popd > /dev/null echo "Done. Builds have been created in $WAPPALYZER_ROOT/build." diff --git a/bin/wappalyzer-links b/bin/wappalyzer-links index 1d033d908..dbb52a483 100755 --- a/bin/wappalyzer-links +++ b/bin/wappalyzer-links @@ -27,44 +27,34 @@ path="$path/src" echo "Creating hard links..." -ln -f $path/wappalyzer.js $path/drivers/firefox/lib -ln -f $path/apps.json $path/drivers/firefox/data -ln -f $path/icons/*.png $path/drivers/firefox/data/images/icons -ln -f $path/icons/*.svg $path/drivers/firefox/data/images/icons -ln -f $path/utils/*.js $path/drivers/firefox/data/js +ln -f $path/wappalyzer.js $path/drivers/phantomjs +ln -f $path/apps.json $path/drivers/phantomjs + +ln -f $path/wappalyzer.js $path/drivers/firefox +ln -f $path/apps.json $path/drivers/firefox/data +ln -f $path/icons/*.png $path/drivers/firefox/data/images/icons +ln -f $path/icons/*.svg $path/drivers/firefox/data/images/icons +ln -f $path/utils/iframe.js $path/drivers/firefox/data/js ln -f $path/wappalyzer.js $path/drivers/chrome/js ln -f $path/apps.json $path/drivers/chrome ln -f $path/icons/*.png $path/drivers/chrome/images/icons +ln -f $path/icons/*.svg $path/drivers/chrome/images/icons ln -f $path/utils/*.js $path/drivers/chrome/js -if [ compgen -G "$path/icons/converted/*.png" > /dev/null ]; then +if [ "$(compgen -G "$path/icons/converted/*.png" | head -n1)" ]; then ln -f $path/icons/converted/*.png $path/drivers/chrome/images/icons/converted fi -ln -f $path/wappalyzer.js $path/drivers/bookmarklet/js -ln -f $path/icons/*.png $path/drivers/bookmarklet/images/icons -ln -f $path/icons/*.svg $path/drivers/bookmarklet/images/icons - -ln -f $path/wappalyzer.js $path/drivers/html/js -ln -f $path/apps.json $path/drivers/html -ln -f $path/icons/*.png $path/drivers/html/images/icons -ln -f $path/icons/*.svg $path/drivers/html/images/icons - -ln -f $path/wappalyzer.js $path/drivers/php/js -ln -f $path/apps.json $path/drivers/php - -ln -f $path/wappalyzer.js $path/drivers/python/js -ln -f $path/apps.json $path/drivers/python +ln -f $path/wappalyzer.js $path/drivers/webextension/js +ln -f $path/apps.json $path/drivers/webextension +ln -f $path/icons/*.png $path/drivers/webextension/images/icons +ln -f $path/icons/*.svg $path/drivers/webextension/images/icons +ln -f $path/utils/*.js $path/drivers/webextension/js -ln -f $path/wappalyzer.js $path/drivers/phantomjs -ln -f $path/apps.json $path/drivers/phantomjs - -ln -f $path/wappalyzer.js $path/drivers/ruby/js -ln -f $path/apps.json $path/drivers/ruby - -ln -f $path/wappalyzer.js $path/drivers/npm -ln -f $path/apps.json $path/drivers/npm +if [ "$(compgen -G "$path/icons/converted/*.png" | head -n1)" ]; then + ln -f $path/icons/converted/*.png $path/drivers/webextension/images/icons/converted +fi echo "OK" diff --git a/bin/wappalyzer-validate b/bin/wappalyzer-validate index d9d09a617..0106c4d18 100755 --- a/bin/wappalyzer-validate +++ b/bin/wappalyzer-validate @@ -1,23 +1,20 @@ #!/bin/bash -path=$1 +path="$1" -if [ -z $path ] -then - if [ -z $WAPPALYZER_ROOT ] - then +if [ -z "$path" ]; then + if [ -z "$WAPPALYZER_ROOT" ]; then echo "-$(basename $0): No path specified" exit 1 fi - path=$WAPPALYZER_ROOT + path="$WAPPALYZER_ROOT" fi set -eu -if [ ! -d $path/src ] -then +if [ ! -d "$path/src" ]; then echo "-$(basename $0): Incorrect path" exit 1 @@ -27,7 +24,7 @@ path="$path/src" echo "Validating apps.json..." -node $WAPPALYZER_NODE_PATH/node_modules/jsonlint/lib/cli.js --quiet -V $WAPPALYZER_ROOT/schema.json $path/apps.json +node "$WAPPALYZER_NODE_PATH/node_modules/jsonlint/lib/cli.js" --quiet -V "$WAPPALYZER_ROOT/schema.json" "$path/apps.json" echo "Validating regular expressions..." diff --git a/bin/wappalyzer-validate-regex b/bin/wappalyzer-validate-regex index 36012c57a..f7976c116 100755 --- a/bin/wappalyzer-validate-regex +++ b/bin/wappalyzer-validate-regex @@ -80,7 +80,7 @@ for ( app in json.apps ) { } }); - if ( /[a-z]+:\/\//i.test(json.apps[app].website) ) { - throw new Error('Do not include the protocol in the website URL\n' + app + ': ' + json.apps[app].website); + if ( !/^https?:\/\//i.test(json.apps[app].website) ) { + throw new Error('Invalid website URL\n' + app + ': ' + json.apps[app].website); } } diff --git a/docker/Dockerfile b/docker/Dockerfile index e4834db06..ec435c0bd 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -8,9 +8,10 @@ ENV WAPPALYZER_ROOT /home/wappalyzer/synced ENV WAPPALYZER_NODE_PATH /home/wappalyzer/node # Install packages -RUN apt-get update && apt-get install -y sudo curl bzip2 zip libfreetype6 libfontconfig +RUN sed -i 's/archive\.ubuntu\.com/au.archive.ubuntu.com/g' /etc/apt/sources.list +RUN apt-get update && apt-get install -y sudo curl RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - -RUN apt-get install -y nodejs +RUN apt-get install -y nodejs bzip2 zip libfreetype6 libfontconfig rsync RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* @@ -39,7 +40,6 @@ RUN su wappalyzer -c "mkdir $WAPPALYZER_NODE_PATH" ADD node/package.json $WAPPALYZER_NODE_PATH/package.json -RUN ln -s -f /usr/local/bin/npm /usr/bin/npm RUN su wappalyzer -c "cd $WAPPALYZER_NODE_PATH && npm i" diff --git a/src/apps.json b/src/apps.json index d934d779e..975530295 100755 --- a/src/apps.json +++ b/src/apps.json @@ -7,7 +7,7 @@ "icon": "1and1.svg", "implies": "PHP", "url": "/shop/catalog/browse\\?sessid=", - "website": "1and1.com" + "website": "http://1and1.com" }, "1C-Bitrix": { "cats": [ @@ -21,7 +21,7 @@ "icon": "1C-Bitrix.png", "implies": "PHP", "script": "1c-bitrix", - "website": "www.1c-bitrix.ru" + "website": "http://www.1c-bitrix.ru" }, "2z Project": { "cats": [ @@ -31,7 +31,7 @@ "meta": { "generator": "2z project ([\\d.]+)\\;version:\\1" }, - "website": "2zproject-cms.ru" + "website": "http://2zproject-cms.ru" }, "3DM": { "cats": [ @@ -40,7 +40,7 @@ "html": "3ware 3DM([\\d\\.]+)?\\;version:\\1", "icon": "3DM.png", "implies": "3ware", - "website": "www.3ware.com" + "website": "http://www.3ware.com" }, "3dCart": { "cats": [ @@ -53,7 +53,7 @@ }, "icon": "3dCart.png", "script": "(?:twlh(?:track)?\\.asp|3d_upsell\\.js)", - "website": "www.3dcart.com" + "website": "http://www.3dcart.com" }, "3ware": { "cats": [ @@ -63,7 +63,20 @@ "Server": "3ware\\/?([\\d\\.]+)?\\;version:\\1" }, "icon": "3ware.png", - "website": "www.3ware.com" + "website": "http://www.3ware.com" + }, + "AD EBiS": { + "cats": [ + 10 + ], + "html": [ + "<!-- EBiS contents tag", + "<!--EBiS tag", + "<!-- Tag EBiS", + "<!-- EBiS common tag" + ], + "icon": "ebis.png", + "website": "http://www.ebis.ne.jp" }, "AMPcms": { "cats": [ @@ -76,7 +89,7 @@ }, "icon": "AMPcms.png", "implies": "PHP", - "website": "www.ampcms.org" + "website": "http://www.ampcms.org" }, "AOLserver": { "cats": [ @@ -86,24 +99,27 @@ "Server": "AOLserver/?([\\d.]+)?\\;version:\\1" }, "icon": "AOLserver.png", - "website": "aolserver.com" + "website": "http://aolserver.com" }, "AT Internet Analyzer": { "cats": [ 10 ], - "env": "^xtsite$", - "icon": "AT Internet Analyzer.png", - "website": "atinternet.com/en" + "env": [ + "^xtsite$", + "^ATInternet$" + ], + "icon": "AT Internet.png", + "website": "http://atinternet.com/en" }, "AT Internet XiTi": { "cats": [ 10 ], "env": "^Xt_", - "icon": "AT Internet XiTi.png", + "icon": "AT Internet.png", "script": "xiti\\.com/hit\\.xiti", - "website": "atinternet.com/en" + "website": "http://atinternet.com/en" }, "ATEN": { "cats": [ @@ -113,7 +129,7 @@ "Server": "ATEN HTTP Server(?:\\(?V?([\\d\\.]+)\\)?)?\\;version:\\1" }, "icon": "ATEN.png", - "website": "www.aten.com" + "website": "http://www.aten.com" }, "AWStats": { "cats": [ @@ -124,7 +140,7 @@ "meta": { "generator": "AWStats ([\\d.]+(?: \\(build [\\d.]+\\))?)\\;version:\\1" }, - "website": "awstats.sourceforge.net" + "website": "http://awstats.sourceforge.net" }, "Accessible Portal": { "cats": [ @@ -135,7 +151,15 @@ "meta": { "generator": "Accessible Portal" }, - "website": "www.accessibleportal.com" + "website": "http://www.accessibleportal.com" + }, + "Act-On": { + "cats": [ + 32 + ], + "env": "^ActOn$", + "icon": "ActOn.png", + "website": "http://act-on.com" }, "AdInfinity": { "cats": [ @@ -143,7 +167,7 @@ ], "icon": "AdInfinity.png", "script": "adinfinity\\.com\\.au", - "website": "adinfinity.com.au" + "website": "http://adinfinity.com.au" }, "AdRiver": { "cats": [ @@ -153,7 +177,7 @@ "html": "(?:<embed[^>]+(?:src=\"https?://mh\\d?\\.adriver\\.ru/|flashvars=\"[^\"]*(?:http:%3A//(?:ad|mh\\d?)\\.adriver\\.ru/|adriver_banner))|<(?:(?:iframe|img)[^>]+src|a[^>]+href)=\"https?://ad\\.adriver\\.ru/)", "icon": "AdRiver.png", "script": "(?:adriver\\.core\\.\\d\\.js|https?://(?:content|ad|masterh\\d)\\.adriver\\.ru/)", - "website": "adriver.ru" + "website": "http://adriver.ru" }, "AdRoll": { "cats": [ @@ -162,7 +186,7 @@ "env": "^adroll_", "icon": "AdRoll.svg", "script": "(?:a|s)\\.adroll\\.com", - "website": "adroll.com" + "website": "http://adroll.com" }, "Adcash": { "cats": [ @@ -172,7 +196,7 @@ "icon": "Adcash.svg", "script": "^[^\\/]*//(?:[^\\/]+\\.)?adcash\\.com/(?:script|ad)/", "url": "^https?://(?:[^\\/]+\\.)?adcash\\.com/script/pop_", - "website": "adcash.com" + "website": "http://adcash.com" }, "AddShoppers": { "cats": [ @@ -180,7 +204,7 @@ ], "icon": "AddShoppers.png", "script": "cdn\\.shop\\.pe/widget/", - "website": "www.addshoppers.com" + "website": "http://www.addshoppers.com" }, "AddThis": { "cats": [ @@ -189,7 +213,7 @@ "env": "^addthis", "icon": "AddThis.svg", "script": "addthis\\.com/js/", - "website": "www.addthis.com" + "website": "http://www.addthis.com" }, "AddToAny": { "cats": [ @@ -198,7 +222,29 @@ "env": "^a2apage_init$", "icon": "AddToAny.png", "script": "addtoany\\.com/menu/page\\.js", - "website": "www.addtoany.com" + "website": "http://www.addtoany.com" + }, + "Adminer": { + "cats": [ + 3 + ], + "html": [ + "Adminer</a> <span class=\"version\">([\\d.]+)</span>\\;version:\\1", + "onclick=\"bodyClick\\(event\\);\" onload=\"verifyVersion\\('([\\d.]+)'\\);\">\\;version:\\1" + ], + "icon": "adminer.png", + "implies": "PHP", + "website": "http://www.adminer.org" + }, + "Adnegah": { + "cats": [ + 36 + ], + "env": "^ados(?:Results)?$", + "html": "<iframe [^>]*src=\"[^\"]+adnegah\\.net", + "icon": "adnegah.png", + "script": "[^a-z]adnegah.*\\.js", + "website": "http://Adnegah.net" }, "Adobe ColdFusion": { "cats": [ @@ -213,7 +259,7 @@ "implies": "CFML", "script": "/cfajax/", "url": "\\.cfm(?:$|\\?)", - "website": "adobe.com/products/coldfusion-family.html" + "website": "http://adobe.com/products/coldfusion-family.html" }, "Adobe Experience Manager": { "cats": [ @@ -226,7 +272,7 @@ "icon": "Adobe Experience Manager.svg", "implies": "Java", "script": "/etc/designs/", - "website": "www.adobe.com/au/marketing-cloud/enterprise-content-management.html" + "website": "http://www.adobe.com/au/marketing-cloud/enterprise-content-management.html" }, "Adobe GoLive": { "cats": [ @@ -236,7 +282,7 @@ "meta": { "generator": "Adobe GoLive(?:\\s([\\d.]+))?\\;version:\\1" }, - "website": "www.adobe.com/products/golive" + "website": "http://www.adobe.com/products/golive" }, "Adobe Muse": { "cats": [ @@ -246,7 +292,7 @@ "meta": { "generator": "^Muse(?:$| ?/?(\\d[\\d.]+))\\;version:\\1" }, - "website": "muse.adobe.com" + "website": "http://muse.adobe.com" }, "Adobe RoboHelp": { "cats": [ @@ -258,7 +304,7 @@ "generator": "^Adobe RoboHelp(?: ([\\d]+))?\\;version:\\1" }, "script": "(?:wh(?:utils|ver|proxy|lang|topic|msg)|ehlpdhtm)\\.js", - "website": "adobe.com/products/robohelp.html" + "website": "http://adobe.com/products/robohelp.html" }, "Advanced Web Stats": { "cats": [ @@ -267,7 +313,7 @@ "html": "aws\\.src = [^<]+caphyon-analytics", "icon": "Advanced Web Stats.png", "implies": "Java", - "website": "www.advancedwebstats.com" + "website": "http://www.advancedwebstats.com" }, "Advert Stream": { "cats": [ @@ -276,7 +322,7 @@ "env": "^advst_is_above_the_fold$", "icon": "Advert Stream.png", "script": "(?:ad\\.advertstream\\.com|adxcore\\.com)", - "website": "www.advertstream.com" + "website": "http://www.advertstream.com" }, "Adzerk": { "cats": [ @@ -286,7 +332,7 @@ "html": "<iframe [^>]*src=\"[^\"]+adzerk\\.net", "icon": "Adzerk.png", "script": "adzerk\\.net/ados\\.js", - "website": "adzerk.com" + "website": "http://adzerk.com" }, "Aegea": { "cats": [ @@ -300,7 +346,7 @@ "PHP", "jQuery" ], - "website": "blogengine.ru" + "website": "http://blogengine.ru" }, "AfterBuy": { "cats": [ @@ -311,7 +357,15 @@ ], "icon": "after-buy.png", "script": "shop-static\\.afterbuy\\.de", - "website": "www.afterbuy.de" + "website": "http://www.afterbuy.de" + }, + "Aircall": { + "cats": [ + 52 + ], + "icon": "aircall.png", + "script": "^https?://cdn\\.aircall\\.io/", + "website": "http://aircall.io" }, "Airee": { "cats": [ @@ -321,7 +375,7 @@ "Server": "Airee" }, "icon": "Airee.png", - "website": "xn--80aqc2a.xn--p1ai" + "website": "http://xn--80aqc2a.xn--p1ai" }, "Akamai": { "cats": [ @@ -331,7 +385,18 @@ "X-Akamai-Transformed": "" }, "icon": "Akamai.png", - "website": "akamai.com" + "website": "http://akamai.com" + }, + "Akka HTTP": { + "cats": [ + 18, + 22 + ], + "headers": { + "Server": "akka-http(?:/([\\d.]+))?\\;version:\\1" + }, + "icon": "akka-http.png", + "website": "http://akka.io" }, "Algolia Realtime Search": { "cats": [ @@ -339,7 +404,7 @@ ], "env": "^AlgoliaSearch$", "icon": "Algolia Realtime Search.svg", - "website": "www.algolia.com" + "website": "http://www.algolia.com" }, "Allegro RomPager": { "cats": [ @@ -349,7 +414,7 @@ "Server": "Allegro-Software-RomPager(?:/([\\d.]+))?\\;version:\\1" }, "icon": "Allegro RomPager.png", - "website": "allegrosoft.com/embedded-web-server-s2" + "website": "http://allegrosoft.com/embedded-web-server-s2" }, "AlloyUI": { "cats": [ @@ -362,7 +427,7 @@ "YUI" ], "script": "^https?://cdn\\.alloyui\\.com/", - "website": "www.alloyui.com" + "website": "http://www.alloyui.com" }, "Amaya": { "cats": [ @@ -372,7 +437,37 @@ "meta": { "generator": "Amaya(?: V?([\\d.]+[a-z]))?\\;version:\\1" }, - "website": "www.w3.org/Amaya" + "website": "http://www.w3.org/Amaya" + }, + "Amazon Cloudfront": { + "cats": [ + 31 + ], + "headers": { + "X-Amz-Cf-Id": "" + }, + "icon": "Amazon-Cloudfront.svg", + "website": "http://aws.amazon.com/cloudfront/" + }, + "Amazon EC2": { + "cats": [ + 22 + ], + "headers": { + "Server": "\\(Amazon\\)" + }, + "icon": "aws-ec2.svg", + "website": "http://aws.amazon.com/ec2/" + }, + "Amazon S3": { + "cats": [ + 19 + ], + "headers": { + "Server": "AmazonS3" + }, + "icon": "aws-s3.svg", + "website": "http://aws.amazon.com/s3/" }, "Ametys": { "cats": [ @@ -384,7 +479,7 @@ "generator": "(?:Ametys|Anyware Technologies)" }, "script": "ametys\\.js", - "website": "ametys.org" + "website": "http://ametys.org" }, "Amiro.CMS": { "cats": [ @@ -395,37 +490,20 @@ "meta": { "generator": "Amiro" }, - "website": "amirocms.com" - }, - "Anchor CMS": { - "cats": [ - 1, - 11 - ], - "icon": "Anchor CMS.png", - "implies": [ - "PHP", - "MySQL" - ], - "meta": { - "generator": "Anchor CMS" - }, - "website": "anchorcms.com" + "website": "http://amirocms.com" }, "Angular Material": { "cats": [ 18 ], - "env": "^angular$", + "env": "^ngMaterial$", "icon": "Angular.svg", - "implies": [ - "AngularJS" - ], + "implies": "AngularJS", "script": [ "/([\\d.]+(?:\\-?rc[.\\d]*)*)/angular-material(?:\\.min)?\\.js\\;version:\\1", "angular-material.*\\.js" ], - "website": "material.angularjs.org" + "website": "http://material.angularjs.org" }, "AngularJS": { "cats": [ @@ -438,7 +516,7 @@ "/([\\d.]+(?:\\-?rc[.\\d]*)*)/angular(?:\\.min)?\\.js\\;version:\\1", "angular.*\\.js" ], - "website": "angularjs.org" + "website": "http://angularjs.org" }, "Apache": { "cats": [ @@ -448,7 +526,7 @@ "Server": "(?:Apache(?:$|/([\\d.]+)|[^/-])|(?:^|\b)HTTPD)\\;version:\\1" }, "icon": "Apache.svg", - "website": "apache.org" + "website": "http://apache.org" }, "Apache HBase": { "cats": [ @@ -456,7 +534,8 @@ ], "html": "<style[^>]+static/hbase", "icon": "Apache HBase.png", - "website": "hbase.apache.org" + "implies": "Java", + "website": "http://hbase.apache.org" }, "Apache Hadoop": { "cats": [ @@ -464,7 +543,7 @@ ], "html": "<style[^>]+static/hadoop", "icon": "Apache Hadoop.svg", - "website": "hadoop.apache.org" + "website": "http://hadoop.apache.org" }, "Apache JSPWiki": { "cats": [ @@ -472,9 +551,10 @@ ], "html": "<html[^>]* xmlns:jspwiki=", "icon": "Apache JSPWiki.png", + "implies": "Apache Tomcat", "script": "jspwiki", "url": "wiki\\.jsp", - "website": "jspwiki.org" + "website": "http://jspwiki.org" }, "Apache Tomcat": { "cats": [ @@ -485,7 +565,8 @@ "X-Powered-By": "\bTomcat\b(?:-([\\d.]+))?\\;version:\\1" }, "icon": "Apache Tomcat.svg", - "website": "tomcat.apache.org" + "implies": "Java", + "website": "http://tomcat.apache.org" }, "Apache Traffic Server": { "cats": [ @@ -495,7 +576,7 @@ "Server": "ATS/?([\\d.]+)?\\;version:\\1" }, "icon": "Apache Traffic Server.png", - "website": "trafficserver.apache.org/" + "website": "http://trafficserver.apache.org/" }, "Apache Wicket": { "cats": [ @@ -504,7 +585,7 @@ "env": "^Wicket", "icon": "Apache Wicket.svg", "implies": "Java", - "website": "wicket.apache.org" + "website": "http://wicket.apache.org" }, "AppNexus": { "cats": [ @@ -513,7 +594,7 @@ "html": "<(?:iframe|img)[^>]+adnxs\\.(?:net|com)", "icon": "AppNexus.svg", "script": "adnxs\\.(?:net|com)", - "website": "appnexus.com" + "website": "http://appnexus.com" }, "Arastta": { "cats": [ @@ -528,7 +609,7 @@ "icon": "Arastta.svg", "implies": "PHP", "script": "arastta\\.js", - "website": "arastta.org" + "website": "http://arastta.org" }, "Arc Forum": { "cats": [ @@ -536,7 +617,7 @@ ], "html": "ping\\.src = node\\.href;\\s+[^>]+\\s+}\\s+</script>", "icon": "Arc Forum.png", - "website": "arclanguage.org" + "website": "http://arclanguage.org" }, "Artifactory": { "cats": [ @@ -550,7 +631,7 @@ "script": [ "wicket/resource/org\\.artifactory\\." ], - "website": "jfrog.com/open-source/#os-arti" + "website": "http://jfrog.com/open-source/#os-arti" }, "Artifactory Web Server": { "cats": [ @@ -563,7 +644,7 @@ "implies": [ "Artifactory" ], - "website": "jfrog.com/open-source/#os-arti" + "website": "http://jfrog.com/open-source/#os-arti" }, "ArvanCloud": { "cats": [ @@ -574,7 +655,7 @@ "AR-PoweredBy": "Arvan Cloud \\(arvancloud.com\\)" }, "icon": "ArvanCloud.png", - "website": "www.ArvanCloud.com" + "website": "http://www.ArvanCloud.com" }, "AsciiDoc": { "cats": [ @@ -587,7 +668,7 @@ "meta": { "generator": "^AsciiDoc ([\\d.]+)\\;version:\\1" }, - "website": "www.methods.co.nz/asciidoc" + "website": "http://www.methods.co.nz/asciidoc" }, "Asymptix PHP Framework": { "cats": [ @@ -600,10 +681,8 @@ "Powered by <a href=\"http://www.asymptix.com/\" rel=\"external\">Asymptix PHP Framework</a>" ], "icon": "Asymptix PHP Framework.png", - "implies": [ - "PHP" - ], - "website": "github.com/Asymptix/Framework" + "implies": "PHP", + "website": "http://github.com/Asymptix/Framework" }, "Atlassian Bitbucket": { "cats": [ @@ -611,10 +690,11 @@ ], "env": "^bitbucket$", "icon": "Atlassian Bitbucket.svg", + "implies": "Python", "meta": { "application-name": "Bitbucket" }, - "website": "www.atlassian.com/software/bitbucket/overview/" + "website": "http://www.atlassian.com/software/bitbucket/overview/" }, "Atlassian Confluence": { "cats": [ @@ -629,7 +709,7 @@ "meta": { "confluence-request-time": "" }, - "website": "www.atlassian.com/software/confluence/overview/team-collaboration-software" + "website": "http://www.atlassian.com/software/confluence/overview/team-collaboration-software" }, "Atlassian FishEye": { "cats": [ @@ -640,7 +720,7 @@ }, "html": "<title>(?:Log in to )?FishEye (?:and Crucible )?([\\d.]+)?\\;version:\\1", "icon": "Atlassian FishEye.svg", - "website": "www.atlassian.com/software/fisheye/overview/" + "website": "http://www.atlassian.com/software/fisheye/overview/" }, "Atlassian Jira": { "cats": [ @@ -654,7 +734,7 @@ "ajs-version-number": "([\\d\\.]+)\\;version:\\1", "application-name": "JIRA" }, - "website": "www.atlassian.com/software/jira/overview/" + "website": "http://www.atlassian.com/software/jira/overview/" }, "Atlassian Jira Issue Collector": { "cats": [ @@ -666,7 +746,22 @@ "jira-issue-collector-plugin", "atlassian\\.jira\\.collector\\.plugin" ], - "website": "www.atlassian.com/software/jira/overview/" + "website": "http://www.atlassian.com/software/jira/overview/" + }, + "Aurelia": { + "cats": [ + 12 + ], + "html": [ + "<[^>]+aurelia-app=[^>]", + "<[^>]+data-main=[^>]aurelia-bootstrapper", + "<[^>]+au-target-id=[^>]\\d" + ], + "icon": "Aurelia.svg", + "script": [ + "aurelia(?:\\.min)?\\.js" + ], + "website": "http://aurelia.io" }, "Avangate": { "cats": [ @@ -676,7 +771,7 @@ "html": "]* href=\"^https?://edge\\.avangate\\.net/", "icon": "Avangate.svg", "script": "^https?://edge\\.avangate\\.net/", - "website": "avangate.com" + "website": "http://avangate.com" }, "BEM": { "cats": [ @@ -684,7 +779,7 @@ ], "html": "<[^>]+data-bem", "icon": "BEM.png", - "website": "en.bem.info" + "website": "http://en.bem.info" }, "BIGACE": { "cats": [ @@ -696,7 +791,7 @@ "meta": { "generator": "BIGACE ([\\d.]+)\\;version:\\1" }, - "website": "bigace.de" + "website": "http://bigace.de" }, "Backbone.js": { "cats": [ @@ -706,7 +801,7 @@ "icon": "Backbone.js.png", "implies": "Underscore.js", "script": "backbone.*\\.js", - "website": "backbonejs.org" + "website": "http://backbonejs.org" }, "Backdrop": { "cats": [ @@ -719,7 +814,7 @@ "meta": { "generator": "Backdrop CMS(?: (\\d))?\\;version:\\1" }, - "website": "backdropcms.org" + "website": "http://backdropcms.org" }, "Banshee": { "cats": [ @@ -732,7 +827,7 @@ "meta": { "generator": "Banshee PHP" }, - "website": "www.banshee-php.org" + "website": "http://www.banshee-php.org" }, "BaseHTTP": { "cats": [ @@ -743,30 +838,29 @@ }, "icon": "BaseHTTP.png", "implies": "Python", - "website": "docs.python.org/2/library/basehttpserver.html" + "website": "http://docs.python.org/2/library/basehttpserver.html" }, "BigDump": { "cats": [ 3 ], "html": "", "icon": "Business Catalyst.png", "script": "CatalystScripts", - "website": "businesscatalyst.com" + "website": "http://businesscatalyst.com" }, "BuySellAds": { "cats": [ @@ -955,21 +1065,21 @@ "html": "]*>[^<]+?bsa.src\\s*=\\s*['\"](?:https?:)?\\/{2}\\w\\d\\.buysellads\\.com\\/[\\w\\d\\/]+?bsa\\.js['\"]", "icon": "BuySellAds.png", "script": "^https?://s\\d\\.buysellads\\.com/", - "website": "buysellads.com" + "website": "http://buysellads.com" }, "C++": { "cats": [ 27 ], "icon": "C++.png", - "website": "isocpp.org" + "website": "http://isocpp.org" }, "CFML": { "cats": [ 27 ], "icon": "CFML.png", - "website": "adobe.com/products/coldfusion-family.html" + "website": "http://adobe.com/products/coldfusion-family.html" }, "CKEditor": { "cats": [ @@ -977,7 +1087,7 @@ ], "env": "^CKEDITOR$", "icon": "CKEditor.png", - "website": "ckeditor.com" + "website": "http://ckeditor.com" }, "CMS Made Simple": { "cats": [ @@ -991,18 +1101,18 @@ "meta": { "generator": "CMS Made Simple" }, - "website": "cmsmadesimple.org" + "website": "http://cmsmadesimple.org" }, "CMSimple": { "cats": [ 1 ], - "icon": "default.png", + "icon": "default.svg", "implies": "PHP", "meta": { "generator": "CMSimple( [\\d.]+)?\\;version:\\1" }, - "website": "www.cmsimple.org/en" + "website": "http://www.cmsimple.org/en" }, "CO2Stats": { "cats": [ @@ -1010,7 +1120,7 @@ ], "html": "src=[^>]+co2stats\\.com/propres\\.php", "icon": "CO2Stats.png", - "website": "co2stats.com" + "website": "http://co2stats.com" }, "CPG Dragonfly": { "cats": [ @@ -1024,7 +1134,7 @@ "meta": { "generator": "CPG Dragonfly" }, - "website": "dragonflycms.org" + "website": "http://dragonflycms.org" }, "CS Cart": { "cats": [ @@ -1037,7 +1147,7 @@ ], "icon": "CS Cart.png", "implies": "PHP", - "website": "www.cs-cart.com" + "website": "http://www.cs-cart.com" }, "CacheFly": { "cats": [ @@ -1049,7 +1159,7 @@ "X-CF2": "" }, "icon": "CacheFly.png", - "website": "www.cachefly.com" + "website": "http://www.cachefly.com" }, "Caddy": { "cats": [ @@ -1059,7 +1169,8 @@ "Server": "^Caddy$" }, "icon": "caddy.svg", - "website": "caddyserver.com" + "implies": "Go", + "website": "http://caddyserver.com" }, "CakePHP": { "cats": [ @@ -1073,14 +1184,14 @@ "meta": { "application-name": "CakePHP" }, - "website": "cakephp.org" + "website": "http://cakephp.org" }, "Canon": { "cats": [ 40 ], "icon": "Canon.png", - "website": "www.canon.com" + "website": "http://www.canon.com" }, "Canon HTTP Server": { "cats": [ @@ -1089,11 +1200,9 @@ "headers": { "Server": "CANON HTTP Server(?:/([\\d.]+))?\\;version:\\1" }, - "icon": "Canon HTTP Server.png", - "implies": [ - "Canon" - ], - "website": "www.canon.com" + "icon": "Canon.png", + "implies": "Canon", + "website": "http://www.canon.com" }, "Captch Me": { "cats": [ @@ -1103,7 +1212,7 @@ "env": "^Captchme", "icon": "Captch Me.svg", "script": "^https?://api\\.captchme\\.net/", - "website": "captchme.com" + "website": "http://captchme.com" }, "Carbon Ads": { "cats": [ @@ -1113,7 +1222,7 @@ "html": "<[a-z]+ [^>]*id=\"carbonads-container\"", "icon": "Carbon Ads.png", "script": "[^\\/]*\\/\\/(?:engine|srv)\\.carbonads\\.com\\/", - "website": "carbonads.net" + "website": "http://carbonads.net" }, "Cargo": { "cats": [ @@ -1126,7 +1235,7 @@ "cargo_title": "" }, "script": "/cargo\\.", - "website": "cargocollective.com" + "website": "http://cargocollective.com" }, "Catberry.js": { "cats": [ @@ -1139,7 +1248,7 @@ }, "icon": "Catberry.js.png", "implies": "Node.js", - "website": "catberry.org" + "website": "http://catberry.org" }, "Catwalk": { "cats": [ @@ -1150,7 +1259,7 @@ }, "icon": "Catwalk.png", "implies": "Canon", - "website": "www.canon.com" + "website": "http://www.canon.com" }, "CentOS": { "cats": [ @@ -1161,7 +1270,7 @@ "X-Powered-By": "CentOS" }, "icon": "CentOS.png", - "website": "centos.org" + "website": "http://centos.org" }, "CenteHTTPd": { "cats": [ @@ -1171,7 +1280,7 @@ "Server": "CenteHTTPd(?:/([\\d.]+))?\\;version:\\1" }, "icon": "CenteHTTPd.png", - "website": "cente.jp/cente/app/HTTPdc.html" + "website": "http://cente.jp/cente/app/HTTPdc.html" }, "Chameleon": { "cats": [ @@ -1185,7 +1294,7 @@ "meta": { "generator": "chameleon-cms" }, - "website": "chameleon-system.de" + "website": "http://chameleon-system.de" }, "Chamilo": { "cats": [ @@ -1200,7 +1309,7 @@ "meta": { "generator": "Chamilo ([\\d.]+)\\;version:\\1" }, - "website": "www.chamilo.org" + "website": "http://www.chamilo.org" }, "Chartbeat": { "cats": [ @@ -1209,7 +1318,7 @@ "env": "^_sf_(?:endpt|async_config)$", "icon": "Chartbeat.png", "script": "chartbeat\\.js", - "website": "chartbeat.com" + "website": "http://chartbeat.com" }, "Cherokee": { "cats": [ @@ -1219,7 +1328,7 @@ "Server": "Cherokee/([\\d.]+)\\;version:\\1" }, "icon": "Cherokee.png", - "website": "www.cherokee-project.com" + "website": "http://www.cherokee-project.com" }, "CherryPy": { "cats": [ @@ -1231,7 +1340,7 @@ }, "icon": "CherryPy.png", "implies": "Python", - "website": "www.cherrypy.org" + "website": "http://www.cherrypy.org" }, "Chitika": { "cats": [ @@ -1240,7 +1349,7 @@ "env": "ch_c(?:lient|olor_site_link)", "icon": "Chitika.png", "script": "scripts\\.chitika\\.net/", - "website": "chitika.com" + "website": "http://chitika.com" }, "Ckan": { "cats": [ @@ -1257,7 +1366,7 @@ "Java", "PostgreSQL\\;confidence:80" ], - "website": "ckan.org/" + "website": "http://ckan.org/" }, "ClickHeat": { "cats": [ @@ -1267,7 +1376,7 @@ "icon": "ClickHeat.png", "implies": "PHP", "script": "clickheat.*\\.js", - "website": "www.labsmedia.com/clickheat/index.html" + "website": "http://www.labsmedia.com/clickheat/index.html" }, "ClickTale": { "cats": [ @@ -1275,7 +1384,7 @@ ], "env": "^ClickTale", "icon": "ClickTale.png", - "website": "www.clicktale.com" + "website": "http://www.clicktale.com" }, "Clicky": { "cats": [ @@ -1284,7 +1393,7 @@ "env": "^clicky$", "icon": "Clicky.png", "script": "static\\.getclicky\\.com", - "website": "getclicky.com" + "website": "http://getclicky.com" }, "Clientexec": { "cats": [ @@ -1292,7 +1401,18 @@ ], "html": "clientexec\\.[^>]*\\s?=\\s?[^>]*;", "icon": "Clientexec.png", - "website": "www.clientexec.com" + "website": "http://www.clientexec.com" + }, + "CloudCart": { + "cats": [ + 6 + ], + "icon": "cloudcart.svg", + "meta": { + "author": "^CloudCart LLC$" + }, + "script": "/cloudcart-(?:assets|storage)/", + "website": "http://cloudcart.com" }, "CloudFlare": { "cats": [ @@ -1303,7 +1423,7 @@ "Server": "cloudflare" }, "icon": "CloudFlare.svg", - "website": "www.cloudflare.com" + "website": "http://www.cloudflare.com" }, "Cloudera": { "cats": [ @@ -1313,7 +1433,7 @@ "Server": "cloudera" }, "icon": "Cloudera.png", - "website": "www.cloudera.com" + "website": "http://www.cloudera.com" }, "CodeIgniter": { "cats": [ @@ -1325,7 +1445,7 @@ "html": "]+name=\"ci_csrf_token\"\\;version:2+", "icon": "CodeIgniter.png", "implies": "PHP", - "website": "codeigniter.com" + "website": "http://codeigniter.com" }, "CodeMirror": { "cats": [ @@ -1333,7 +1453,16 @@ ], "env": "^CodeMirror$", "icon": "CodeMirror.png", - "website": "codemirror.net" + "website": "http://codemirror.net" + }, + "Comandia": { + "cats": [ + 6 + ], + "env": "^Comandia$", + "html": "]+=['\"]//cdn\\.mycomandia\\.com", + "icon": "Comandia.svg", + "website": "http://comandia.com" }, "Commerce Server": { "cats": [ @@ -1344,7 +1473,7 @@ }, "icon": "Commerce Server.png", "implies": "Microsoft ASP.NET", - "website": "commerceserver.net" + "website": "http://commerceserver.net" }, "CompaqHTTPServer": { "cats": [ @@ -1354,7 +1483,7 @@ "Server": "CompaqHTTPServer\\/?([\\d\\.]+)?\\;version:\\1" }, "icon": "HP.svg", - "website": "www.hp.com" + "website": "http://www.hp.com" }, "Concrete5": { "cats": [ @@ -1367,7 +1496,7 @@ "generator": "concrete5 - ([\\d.ab]+)\\;version:\\1" }, "script": "concrete/js/", - "website": "concrete5.org" + "website": "http://concrete5.org" }, "Connect": { "cats": [ @@ -1378,7 +1507,7 @@ }, "icon": "Connect.png", "implies": "Node.js", - "website": "www.senchalabs.org/connect" + "website": "http://www.senchalabs.org/connect" }, "Contao": { "cats": [ @@ -1393,7 +1522,7 @@ "meta": { "generator": "^Contao Open Source CMS$" }, - "website": "contao.org" + "website": "http://contao.org" }, "Contenido": { "cats": [ @@ -1404,7 +1533,7 @@ "meta": { "generator": "Contenido ([\\d.]+)\\;version:\\1" }, - "website": "contenido.org/en" + "website": "http://contenido.org/en" }, "Contens": { "cats": [ @@ -1418,7 +1547,7 @@ "meta": { "generator": "Contensis CMS Version ([\\d.]+)\\;version:\\1" }, - "website": "www.contens.com/en/pub/index.cfm" + "website": "http://www.contens.com/en/pub/index.cfm" }, "ContentBox": { "cats": [ @@ -1430,7 +1559,7 @@ "meta": { "generator": "ContentBox powered by ColdBox" }, - "website": "www.gocontentbox.org" + "website": "http://www.gocontentbox.org" }, "ConversionLab": { "cats": [ @@ -1438,7 +1567,7 @@ ], "icon": "ConversionLab.png", "script": "conversionlab\\.trackset\\.com/track/tsend\\.js", - "website": "www.trackset.it/conversionlab" + "website": "http://www.trackset.it/conversionlab" }, "Coppermine": { "cats": [ @@ -1447,7 +1576,7 @@ "html": "", "icon": "InProces.png", "script": "brein/inproces/website/websitefuncties\\.js", - "website": "www.brein.nl/oplossing/product/website" + "website": "http://www.brein.nl/oplossing/product/website" }, "Incapsula": { "cats": [ @@ -3221,14 +3550,14 @@ "X-CDN": "Incapsula" }, "icon": "Incapsula.png", - "website": "www.incapsula.com" + "website": "http://www.incapsula.com" }, "Indexhibit": { "cats": [ 1 ], "html": "<(?:link|a href) [^>]+ndxz-studio", - "icon": "default.png", + "icon": "default.svg", "implies": [ "PHP", "Apache", @@ -3237,7 +3566,7 @@ "meta": { "generator": "Indexhibit" }, - "website": "www.indexhibit.org" + "website": "http://www.indexhibit.org" }, "Indico": { "cats": [ @@ -3248,7 +3577,7 @@ }, "html": "Powered by\\s+(?:CERN )?(?:CDS )?Indico( [\\d\\.]+)?\\;version:\\1", "icon": "Indico.png", - "website": "indico-software.org" + "website": "http://indico-software.org" }, "Indy": { "cats": [ @@ -3257,17 +3586,19 @@ "headers": { "Server": "Indy(?:/([\\d.]+))?\\;version:\\1" }, - "icon": "default.png", - "website": "indyproject.org" + "icon": "default.svg", + "website": "http://indyproject.org" }, - "Ink": { + "Infusionsoft": { "cats": [ - 18 + 32 ], - "html": "]*href=\"[^\"]+ink(?:\\.min)?\\.css", - "icon": "Ink.png", - "script": "ink.*\\.js", - "website": "ink.sapo.pt" + "html": [ + "]*name=\"infusionsoft_version\" [^>]*value=\"([^>]*)\" [^>]*\\/>\\;version:\\1", + "]*value=\"([^>]*)\" [^>]*name=\"infusionsoft_version\" [^>]*\\/>\\;version:\\1" + ], + "icon": "infusionsoft.svg", + "website": "http://infusionsoft.com" }, "InstantCMS": { "cats": [ @@ -3277,10 +3608,11 @@ "Set-Cookie": "InstantCMS\\[logdate\\]=" }, "icon": "InstantCMS.png", + "implies": "PHP", "meta": { "generator": "InstantCMS" }, - "website": "www.instantcms.ru" + "website": "http://www.instantcms.ru" }, "Intel Active Management Technology": { "cats": [ @@ -3291,7 +3623,7 @@ "Server": "Intel\\(R\\) Active Management Technology(?: ([\\d.]+))?\\;version:\\1" }, "icon": "Intel Active Management Technology.png", - "website": "intel.com" + "website": "http://intel.com" }, "IntenseDebate": { "cats": [ @@ -3299,7 +3631,7 @@ ], "icon": "IntenseDebate.png", "script": "intensedebate\\.com", - "website": "intensedebate.com" + "website": "http://intensedebate.com" }, "Intercom": { "cats": [ @@ -3308,7 +3640,7 @@ "env": "^Intercom$", "icon": "Intercom.png", "script": "(?:api\\.intercom\\.io/api|static\\.intercomcdn\\.com/intercom\\.v1)", - "website": "intercom.io" + "website": "http://intercom.io" }, "Intershop": { "cats": [ @@ -3316,7 +3648,7 @@ ], "icon": "Intershop.png", "script": "(?:is-bin|INTERSHOP)", - "website": "intershop.com" + "website": "http://intershop.com" }, "Invenio": { "cats": [ @@ -3327,7 +3659,7 @@ }, "html": "(?:Powered by|System)\\s+(?:CERN )?(?:CDS )?Invenio\\s*v?([\\d\\.]+)?\\;version:\\1", "icon": "Invenio.png", - "website": "invenio-software.org" + "website": "http://invenio-software.org" }, "Ionicons": { "cats": [ @@ -3335,7 +3667,7 @@ ], "html": "]* href=[^>]+ionicons(?:\\.min)?\\.css", "icon": "Ionicons.png", - "website": "ionicons.com" + "website": "http://ionicons.com" }, "JAlbum": { "cats": [ @@ -3346,7 +3678,7 @@ "meta": { "generator": "JAlbum( [\\d.]+)?\\;version:\\1" }, - "website": "jalbum.net/en" + "website": "http://jalbum.net/en" }, "JBoss Application Server": { "cats": [ @@ -3356,7 +3688,7 @@ "X-Powered-By": "JBoss(?:-([\\d.]+))?\\;version:\\1" }, "icon": "JBoss Application Server.png", - "website": "jboss.org/jbossas.html" + "website": "http://jboss.org/jbossas.html" }, "JBoss Web": { "cats": [ @@ -3368,7 +3700,7 @@ }, "icon": "JBoss Web.png", "implies": "JBoss Application Server", - "website": "jboss.org/jbossweb" + "website": "http://jboss.org/jbossweb" }, "JC-HTTPD": { "cats": [ @@ -3379,10 +3711,8 @@ "Server": "JC-HTTPD(?:/([\\d.]+))?\\;version:\\1" }, "icon": "JC-HTTPD.png", - "implies": [ - "Canon" - ], - "website": "canon.com" + "implies": "Canon", + "website": "http://canon.com" }, "JS Charts": { "cats": [ @@ -3391,7 +3721,7 @@ "env": "^JSChart$", "icon": "JS Charts.png", "script": "jscharts.*\\.js", - "website": "www.jscharts.com" + "website": "http://www.jscharts.com" }, "JTL Shop": { "cats": [ @@ -3402,7 +3732,7 @@ }, "html": "(?:]+name=\"JTLSHOP|]*\\s+href=[^>]*styles/kendo\\.common(?:\\.min)?\\.css[^>]*/>", "icon": "Kendo UI.png", "implies": "jQuery", - "website": "www.kendoui.com" + "website": "http://www.kendoui.com" }, "Kentico CMS": { "cats": [ @@ -3608,7 +3978,32 @@ "meta": { "generator": "Kentico CMS ([\\d.R]+ \\(build [\\d.]+\\))\\;version:\\1" }, - "website": "www.kentico.com" + "website": "http://www.kentico.com" + }, + "KeyCDN": { + "cats": [ + 31 + ], + "headers": { + "Server": "^keycdn-engine$" + }, + "icon": "KeyCDN.png", + "website": "http://www.keycdn.com" + }, + "Kibana": { + "cats": [ + 29, + 25 + ], + "headers": { + "kbn-name": "kibana", + "kbn-version": "^([\\d.]+)$\\;version:\\1" + }, + "html": "Kibana", + "icon": "kibana.svg", + "implies": "Node.js", + "url": "kibana#/dashboard/", + "website": "http://www.elastic.co/products/kibana" }, "KineticJS": { "cats": [ @@ -3617,7 +4012,17 @@ "env": "^Kinetic$", "icon": "KineticJS.png", "script": "kinetic(?:-v?([\\d.]+))?(?:\\.min)?\\.js\\;version:\\1", - "website": "kineticjs.com" + "website": "http://kineticjs.com" + }, + "Klarna Checkout": { + "cats": [ + 41, + 6, + 5 + ], + "env": "^_klarnaCheckout$", + "icon": "Klarna.svg", + "website": "http://klarna.com" }, "Knockout.js": { "cats": [ @@ -3625,7 +4030,7 @@ ], "env": "^ko$", "icon": "Knockout.js.png", - "website": "knockoutjs.com" + "website": "http://knockoutjs.com" }, "Koa": { "cats": [ @@ -3637,7 +4042,7 @@ }, "icon": "Koa.png", "implies": "Node.js", - "website": "koajs.com" + "website": "http://koajs.com" }, "Koala Framework": { "cats": [ @@ -3650,7 +4055,7 @@ "meta": { "generator": "^Koala Web Framework CMS" }, - "website": "koala-framework.org" + "website": "http://koala-framework.org" }, "Koego": { "cats": [ @@ -3659,7 +4064,7 @@ "env": "^ego_domains$", "icon": "Koego.png", "script": "tracking\\.koego\\.com/end/ego\\.js", - "website": "www.koego.com/en" + "website": "http://www.koego.com/en" }, "Kohana": { "cats": [ @@ -3671,7 +4076,7 @@ }, "icon": "Kohana.png", "implies": "PHP", - "website": "kohanaframework.org" + "website": "http://kohanaframework.org" }, "Koken": { "cats": [ @@ -3693,7 +4098,7 @@ "generator": "Koken ([\\d.]+)\\;version:\\1" }, "script": "koken(?:\\.js\\?([\\d.]+)|/storage)\\;version:\\1", - "website": "koken.me" + "website": "http://koken.me" }, "Kolibri CMS": { "cats": [ @@ -3702,11 +4107,11 @@ "headers": { "X-Powered-By": "Kolibri" }, - "icon": "default.png", + "icon": "default.svg", "meta": { "generator": "Kolibri" }, - "website": "alias.io" + "website": "http://alias.io" }, "Komodo CMS": { "cats": [ @@ -3717,7 +4122,7 @@ "meta": { "generator": "^Komodo CMS" }, - "website": "www.komodocms.com" + "website": "http://www.komodocms.com" }, "Koobi": { "cats": [ @@ -3728,7 +4133,7 @@ "meta": { "generator": "Koobi" }, - "website": "dream4.de/cms" + "website": "http://dream4.de/cms" }, "Kooboo CMS": { "cats": [ @@ -3740,7 +4145,7 @@ "icon": "Kooboo CMS.png", "implies": "Microsoft ASP.NET", "script": "/Kooboo", - "website": "kooboo.com" + "website": "http://kooboo.com" }, "Kotisivukone": { "cats": [ @@ -3748,7 +4153,7 @@ ], "icon": "Kotisivukone.png", "script": "kotisivukone(?:\\.min)?\\.js", - "website": "www.kotisivukone.fi" + "website": "http://www.kotisivukone.fi" }, "LEPTON": { "cats": [ @@ -3762,7 +4167,7 @@ "meta": { "generator": "LEPTON" }, - "website": "www.lepton-cms.org" + "website": "http://www.lepton-cms.org" }, "LabVIEW": { "cats": [ @@ -3772,7 +4177,7 @@ "Server": "LabVIEW(?:/([\\d\\.]+))?\\;version:\\1" }, "icon": "LabVIEW.png", - "website": "ni.com/labview" + "website": "http://ni.com/labview" }, "Laravel": { "cats": [ @@ -3783,15 +4188,15 @@ }, "icon": "Laravel.png", "implies": "PHP", - "website": "laravel.com" + "website": "http://laravel.com" }, "Lazy.js": { "cats": [ 12 ], - "icon": "default.png", + "icon": "default.svg", "script": "lazy(?:\\.browser)?(?:\\.min)?\\.js", - "website": "danieltao.com/lazy.js" + "website": "http://danieltao.com/lazy.js" }, "Leaflet": { "cats": [ @@ -3799,7 +4204,7 @@ ], "icon": "Leaflet.png", "script": "leaflet.*\\.js", - "website": "leafletjs.com" + "website": "http://leafletjs.com" }, "Less": { "cats": [ @@ -3807,7 +4212,7 @@ ], "html": "]+ rel=\"stylesheet/less\"", "icon": "Less.png", - "website": "lesscss.org" + "website": "http://lesscss.org" }, "Liferay": { "cats": [ @@ -3818,7 +4223,7 @@ "Liferay-Portal": "[a-z\\s]+([\\d.]+)\\;version:\\1" }, "icon": "Liferay.png", - "website": "www.liferay.com" + "website": "http://www.liferay.com" }, "Lift": { "cats": [ @@ -3829,7 +4234,7 @@ }, "icon": "Lift.png", "implies": "Scala", - "website": "liftweb.net" + "website": "http://liftweb.net" }, "LightMon Engine": { "cats": [ @@ -3840,13 +4245,11 @@ }, "html": "\\;version:\\1", + "icon": "mhonarc.png", + "website": "http://www.mhonarc.at" }, "MOBOTIX": { "cats": [ @@ -4077,24 +4515,26 @@ "publisher": "MOBOTIX AG\\;confidence:40" }, "url": "control/userimage\\.html\\;confidence:70", - "website": "mobotix.com" + "website": "http://mobotix.com" }, - "MODx": { + "MODX": { "cats": [ 1 ], "env": "^MODX_MEDIA_PATH$", "headers": { - "Set-Cookie": "SN4[a-f\\d]{12}", - "X-Powered-By": "^MODx" + "Set-Cookie": "SN5[a-f\\d]{12}", + "X-Powered-By": "^MODX" }, "html": [ - "]+>Powered by MODx", - "<(?:link|script)[^>]+assets/snippets/\\;confidence:20" + "]+>Powered by MODX", + "<(?:link|script)[^>]+assets/snippets/\\;confidence:20", + "]+id=\"ajaxSearch_form\\;confidence:20", + "]+id=\"ajaxSearch_input\\;confidence:20" ], - "icon": "MODx.png", + "icon": "MODX.png", "implies": "PHP", - "website": "modxcms.com" + "website": "http://modx.com" }, "MadAdsMedia": { "cats": [ @@ -4103,7 +4543,7 @@ "env": "^setM(?:Iframe|RefURL)$", "icon": "MadAdsMedia.png", "script": "^https?://(?:ads-by|pixel)\\.madadsmedia.com/", - "website": "madadsmedia.com" + "website": "http://madadsmedia.com" }, "Magento": { "cats": [ @@ -4127,7 +4567,25 @@ "static/_requirejs\\;confidence:50\\;version:2", "static/frontend\\;confidence:20\\;version:2" ], - "website": "www.magentocommerce.com" + "website": "http://www.magentocommerce.com" + }, + "Mailchimp": { + "cats": [ + 32 + ], + "html": [ + "
]*data-mailchimp-url", + "]*id=\"mc-embedded-subscribe-form\"", + "]*name=\"mc-embedded-subscribe-form\"", + "]*id=\"mc-email\"\\;confidence:20", + "" + ], + "icon": "mailchimp.svg", + "script": [ + "s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js", + "cdn-images.mailchimp.com/[^>]*.css" + ], + "website": "http://mailchimp.com" }, "Mambo": { "cats": [ @@ -4138,7 +4596,7 @@ "meta": { "generator": "Mambo" }, - "website": "mambo-foundation.org" + "website": "http://mambo-foundation.org" }, "MantisBT": { "cats": [ @@ -4146,7 +4604,8 @@ ], "html": "]+ alt=\"Powered by Mantis Bugtracker", "icon": "MantisBT.png", - "website": "www.mantisbt.org" + "implies": "PHP", + "website": "http://www.mantisbt.org" }, "ManyContacts": { "cats": [ @@ -4154,7 +4613,7 @@ ], "icon": "ManyContacts.png", "script": "\\/assets\\/js\\/manycontacts\\.min\\.js", - "website": "www.manycontacts.com" + "website": "http://www.manycontacts.com" }, "Marionette.js": { "cats": [ @@ -4167,7 +4626,7 @@ "Backbone.js" ], "script": "backbone\\.marionette.*\\.js", - "website": "marionettejs.com" + "website": "http://marionettejs.com" }, "Marketo": { "cats": [ @@ -4176,7 +4635,7 @@ "env": "^Munchkin$", "icon": "Marketo.png", "script": "munchkin\\.marketo\\.net/munchkin\\.js", - "website": "www.marketo.com" + "website": "http://www.marketo.com" }, "Materialize CSS": { "cats": [ @@ -4186,7 +4645,7 @@ "icon": "Materialize CSS.png", "implies": "jQuery", "script": "materialize(?:\\.min)?\\.js", - "website": "materializecss.com" + "website": "http://materializecss.com" }, "MathJax": { "cats": [ @@ -4195,27 +4654,44 @@ "env": "^MathJax$", "icon": "MathJax.png", "script": "mathjax\\.js", - "website": "mathjax.org" + "website": "http://mathjax.org" + }, + "Mattermost": { + "cats": [ + 2 + ], + "env": "mm_(?:config|license|user|current_user_id)", + "html": "", + "icon": "mattermost.png", + "implies": [ + "Go", + "React", + "PostgreSQL\\;confidence:50", + "MySQL\\;confidence:50" + ], + "website": "http://about.mattermost.com" }, "MaxCDN": { "cats": [ 31 ], "headers": { - "Server": "NetDNA" + "Server": "^NetDNA", + "X-CDN-Forward": "^maxcdn$" }, "icon": "MaxCDN.png", - "website": "www.maxcdn.com" + "website": "http://www.maxcdn.com" }, "MaxSite CMS": { "cats": [ 1 ], "icon": "MaxSite CMS.png", + "implies": "PHP", "meta": { "generator": "MaxSite CMS" }, - "website": "max-3000.com" + "website": "http://max-3000.com" }, "Mean.io": { "cats": [ @@ -4231,7 +4707,7 @@ "AngularJS", "Node.js" ], - "website": "mean.io" + "website": "http://mean.io" }, "MediaElement.js": { "cats": [ @@ -4239,7 +4715,7 @@ ], "env": "^mejs$", "icon": "MediaElement.js.png", - "website": "mediaelementjs.com" + "website": "http://mediaelementjs.com" }, "MediaTomb": { "cats": [ @@ -4249,7 +4725,7 @@ "Server": "MediaTomb(?:/([\\d.]+))?\\;version:\\1" }, "icon": "MediaTomb.png", - "website": "mediatomb.cc" + "website": "http://mediatomb.cc" }, "MediaWiki": { "cats": [ @@ -4257,10 +4733,11 @@ ], "html": "(?:]+>Powered by MediaWiki|<[^>]+id=\"t-specialpages)", "icon": "MediaWiki.png", + "implies": "PHP", "meta": { "generator": "MediaWiki" }, - "website": "www.mediawiki.org" + "website": "http://www.mediawiki.org" }, "Meebo": { "cats": [ @@ -4268,7 +4745,19 @@ ], "html": "(?: