diff --git a/.gitignore b/.gitignore index 19de018bb..7d65964c0 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,8 @@ npm-debug.log tags !.gitkeep + +Thumbs.db +Desktop.ini +*.DS_Store +._* diff --git a/bin/wappalyzer-build b/bin/wappalyzer-build index 45de3da42..9c4989728 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/* --out-dir $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..." @@ -37,9 +37,11 @@ do dest="$WAPPALYZER_ROOT/src/icons/converted/$(basename "$svg").png" - if [[ ! -f "$dest" ]]; then - node $WAPPALYZER_NODE_PATH/node_modules/svg2png/bin/svg2png-cli "$svg" --width=32 --height=32 --output "$dest" || true + if [[ -f "$dest" ]]; then + rm "$dest" fi + + #node $WAPPALYZER_NODE_PATH/node_modules/svg2png/bin/svg2png-cli "$svg" --width=32 --height=32 --output "$dest" || true done IFS="$OIFS" @@ -66,17 +68,17 @@ pushd $WAPPALYZER_ROOT/src/drivers/chrome > /dev/null zip -qr $WAPPALYZER_ROOT/build/wappalyzer_chrome.zip . -popd > /dev/null +# WebExtension +echo "Building WebExtension driver..." -# Bookmarklet -echo "Building Bookmarklet driver..." +pushd $WAPPALYZER_ROOT/src/drivers/webextension > /dev/null -echo "var json =" > /tmp/bookmarklet +zip -qr $WAPPALYZER_ROOT/build/wappalyzer_webextension.zip . -x manifest.edge.json -cat $WAPPALYZER_ROOT/src/apps.json >> /tmp/bookmarklet +zip -qr $WAPPALYZER_ROOT/build/wappalyzer_webextension.edge.zip . -x manifest.json -echo -e ";\n\nwappalyzer.apps = json.apps;\nwappalyzer.categories = json.categories;" >> /tmp/bookmarklet +printf "@ manifest.edge.json\n@=manifest.json\n" | zipnote -w $WAPPALYZER_ROOT/build/wappalyzer_webextension.edge.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 7e4b1e45d..251cebbf2 100755 --- a/bin/wappalyzer-links +++ b/bin/wappalyzer-links @@ -46,9 +46,14 @@ 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/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 + +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/schema.json b/schema.json index 8be26af2a..c70605b61 100644 --- a/schema.json +++ b/schema.json @@ -9,7 +9,16 @@ "additionalProperties": false, "patternProperties": { "^[0-9]+$": { - "type": "string" + "type": "object", + "required": true, + "properties": { + "priority": { + "type": "string" + }, + "name": { + "type": "string" + } + } } } }, @@ -22,7 +31,7 @@ "cats": { "type": "array", "items": { - "type": "integer" + "type": "string" }, "required": true }, diff --git a/src/apps.json b/src/apps.json index 363ee4648..04b2f0408 100755 --- a/src/apps.json +++ b/src/apps.json @@ -2,16 +2,16 @@ "apps": { "1&1": { "cats": [ - 6 + "6" ], "icon": "1and1.svg", "implies": "PHP", "url": "/shop/catalog/browse\\?sessid=", - "website": "1and1.com" + "website": "http://1and1.com" }, "1C-Bitrix": { "cats": [ - 1 + "1" ], "headers": { "Set-Cookie": "BITRIX_", @@ -21,31 +21,31 @@ "icon": "1C-Bitrix.png", "implies": "PHP", "script": "1c-bitrix", - "website": "www.1c-bitrix.ru" + "website": "http://www.1c-bitrix.ru" }, "2z Project": { "cats": [ - 1 + "1" ], "icon": "2z Project.png", "meta": { "generator": "2z project ([\\d.]+)\\;version:\\1" }, - "website": "2zproject-cms.ru" + "website": "http://2zproject-cms.ru" }, "3DM": { "cats": [ - 19 + "19" ], "html": "3ware 3DM([\\d\\.]+)?\\;version:\\1", "icon": "3DM.png", "implies": "3ware", - "website": "www.3ware.com" + "website": "http://www.3ware.com" }, "3dCart": { "cats": [ - 1, - 6 + "1", + "6" ], "headers": { "Set-Cookie": "3dvisit", @@ -53,21 +53,21 @@ }, "icon": "3dCart.png", "script": "(?:twlh(?:track)?\\.asp|3d_upsell\\.js)", - "website": "www.3dcart.com" + "website": "http://www.3dcart.com" }, "3ware": { "cats": [ - 22 + "22" ], "headers": { "Server": "3ware\\/?([\\d\\.]+)?\\;version:\\1" }, "icon": "3ware.png", - "website": "www.3ware.com" + "website": "http://www.3ware.com" }, "AD EBiS": { "cats": [ - 10 + "10" ], "html": [ "<!-- EBiS contents tag", @@ -76,11 +76,11 @@ "<!-- EBiS common tag" ], "icon": "ebis.png", - "website": "www.ebis.ne.jp" + "website": "http://www.ebis.ne.jp" }, "AMPcms": { "cats": [ - 1 + "1" ], "env": "^amp_js_init$", "headers": { @@ -89,166 +89,166 @@ }, "icon": "AMPcms.png", "implies": "PHP", - "website": "www.ampcms.org" + "website": "http://www.ampcms.org" }, "AOLserver": { "cats": [ - 22 + "22" ], "headers": { "Server": "AOLserver/?([\\d.]+)?\\;version:\\1" }, "icon": "AOLserver.png", - "website": "aolserver.com" + "website": "http://aolserver.com" }, "AT Internet Analyzer": { "cats": [ - 10 + "10" ], "env": [ "^xtsite$", "^ATInternet$" ], - "icon": "AT Internet Analyzer.png", - "website": "atinternet.com/en" + "icon": "AT Internet.png", + "website": "http://atinternet.com/en" }, "AT Internet XiTi": { "cats": [ - 10 + "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": [ - 22 + "22" ], "headers": { "Server": "ATEN HTTP Server(?:\\(?V?([\\d\\.]+)\\)?)?\\;version:\\1" }, "icon": "ATEN.png", - "website": "www.aten.com" + "website": "http://www.aten.com" }, "AWStats": { "cats": [ - 10 + "10" ], "icon": "AWStats.png", "implies": "Perl", "meta": { "generator": "AWStats ([\\d.]+(?: \\(build [\\d.]+\\))?)\\;version:\\1" }, - "website": "awstats.sourceforge.net" + "website": "http://awstats.sourceforge.net" }, "Accessible Portal": { "cats": [ - 1 + "1" ], "icon": "Accessible Portal.png", "implies": "PHP", "meta": { "generator": "Accessible Portal" }, - "website": "www.accessibleportal.com" + "website": "http://www.accessibleportal.com" }, "Act-On": { "cats": [ - 32 + "32" ], "env": "^ActOn$", "icon": "ActOn.png", - "website": "act-on.com" + "website": "http://act-on.com" }, "AdInfinity": { "cats": [ - 36 + "36" ], "icon": "AdInfinity.png", "script": "adinfinity\\.com\\.au", - "website": "adinfinity.com.au" + "website": "http://adinfinity.com.au" }, "AdRiver": { "cats": [ - 36 + "36" ], "env": "^adriver$", "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": [ - 36 + "36" ], "env": "^adroll_", "icon": "AdRoll.svg", "script": "(?:a|s)\\.adroll\\.com", - "website": "adroll.com" + "website": "http://adroll.com" }, "Adcash": { "cats": [ - 36 + "36" ], "env": "^(?:ac_bgclick_URL|ct_(?:siteunder|tag|n(?:SuUrl(?:Opp)?)|Su(?:Loaded|Url)))$", "icon": "Adcash.svg", "script": "^[^\\/]*//(?:[^\\/]+\\.)?adcash\\.com/(?:script|ad)/", "url": "^https?://(?:[^\\/]+\\.)?adcash\\.com/script/pop_", - "website": "adcash.com" + "website": "http://adcash.com" }, "AddShoppers": { "cats": [ - 5 + "5" ], "icon": "AddShoppers.png", "script": "cdn\\.shop\\.pe/widget/", - "website": "www.addshoppers.com" + "website": "http://www.addshoppers.com" }, "AddThis": { "cats": [ - 5 + "5" ], "env": "^addthis", "icon": "AddThis.svg", "script": "addthis\\.com/js/", - "website": "www.addthis.com" + "website": "http://www.addthis.com" }, "AddToAny": { "cats": [ - 5 + "5" ], "env": "^a2apage_init$", "icon": "AddToAny.png", "script": "addtoany\\.com/menu/page\\.js", - "website": "www.addtoany.com" + "website": "http://www.addtoany.com" }, "Adminer": { "cats": [ - 3 + "3" ], "html": [ "Adminer</a> <span class=\"version\">([\\d.]+)</span>\\;version:\\1", "onclick=\"bodyClick\\(event\\);\" onload=\"verifyVersion\\('([\\d.]+)'\\);\">\\;version:\\1" ], - "implies": "PHP", "icon": "adminer.png", - "website": "www.adminer.org" + "implies": "PHP", + "website": "http://www.adminer.org" }, "Adnegah": { "cats": [ - 36 + "36" ], "env": "^ados(?:Results)?$", "html": "<iframe [^>]*src=\"[^\"]+adnegah\\.net", "icon": "adnegah.png", "script": "[^a-z]adnegah.*\\.js", - "website": "Adnegah.net" + "website": "http://Adnegah.net" }, "Adobe ColdFusion": { "cats": [ - 18 + "18" ], "env": "^_cfEmails$", "headers": { @@ -259,11 +259,11 @@ "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": [ - 1 + "1" ], "html": [ "<div class=\"[^\"]*parbase", @@ -272,31 +272,31 @@ "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": [ - 20 + "20" ], "icon": "Adobe GoLive.png", "meta": { "generator": "Adobe GoLive(?:\\s([\\d.]+))?\\;version:\\1" }, - "website": "www.adobe.com/products/golive" + "website": "http://www.adobe.com/products/golive" }, "Adobe Muse": { "cats": [ - 20 + "20" ], "icon": "Adobe Muse.svg", "meta": { "generator": "^Muse(?:$| ?/?(\\d[\\d.]+))\\;version:\\1" }, - "website": "muse.adobe.com" + "website": "http://muse.adobe.com" }, "Adobe RoboHelp": { "cats": [ - 4 + "4" ], "env": "^gbWh(?:Ver|Lang|Msg|Util|Proxy)$", "icon": "Adobe RoboHelp.svg", @@ -304,39 +304,39 @@ "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": [ - 10 + "10" ], "html": "aws\\.src = [^<]+caphyon-analytics", "icon": "Advanced Web Stats.png", "implies": "Java", - "website": "www.advancedwebstats.com" + "website": "http://www.advancedwebstats.com" }, "Advert Stream": { "cats": [ - 36 + "36" ], "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": [ - 36 + "36" ], "env": "^ados(?:Results)?$", "html": "<iframe [^>]*src=\"[^\"]+adzerk\\.net", "icon": "Adzerk.png", "script": "adzerk\\.net/ados\\.js", - "website": "adzerk.com" + "website": "http://adzerk.com" }, "Aegea": { "cats": [ - 11 + "11" ], "headers": { "X-Powered-By": "^E2 Aegea v(\\d+)$\\;version:\\1" @@ -346,79 +346,79 @@ "PHP", "jQuery" ], - "website": "blogengine.ru" + "website": "http://blogengine.ru" }, "AfterBuy": { "cats": [ - 6 + "6" ], "html": [ "<dd>This OnlineStore is brought to you by ViA-Online GmbH Afterbuy. Information and contribution at https://www.afterbuy.de</dd>" ], "icon": "after-buy.png", "script": "shop-static\\.afterbuy\\.de", - "website": "www.afterbuy.de" + "website": "http://www.afterbuy.de" }, "Aircall": { "cats": [ - 52 + "52" ], "icon": "aircall.png", "script": "^https?://cdn\\.aircall\\.io/", - "website": "aircall.io" + "website": "http://aircall.io" }, "Airee": { "cats": [ - 31 + "31" ], "headers": { "Server": "Airee" }, "icon": "Airee.png", - "website": "xn--80aqc2a.xn--p1ai" + "website": "http://xn--80aqc2a.xn--p1ai" }, "Akamai": { "cats": [ - 31 + "31" ], "headers": { "X-Akamai-Transformed": "" }, "icon": "Akamai.png", - "website": "akamai.com" + "website": "http://akamai.com" }, "Akka HTTP": { "cats": [ - 18, - 22 + "18", + "22" ], "headers": { "Server": "akka-http(?:/([\\d.]+))?\\;version:\\1" }, "icon": "akka-http.png", - "website": "akka.io" + "website": "http://akka.io" }, "Algolia Realtime Search": { "cats": [ - 29 + "29" ], "env": "^AlgoliaSearch$", "icon": "Algolia Realtime Search.svg", - "website": "www.algolia.com" + "website": "http://www.algolia.com" }, "Allegro RomPager": { "cats": [ - 22 + "22" ], "headers": { "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": [ - 12 + "12" ], "env": "^AUI$", "icon": "AlloyUI.png", @@ -427,51 +427,51 @@ "YUI" ], "script": "^https?://cdn\\.alloyui\\.com/", - "website": "www.alloyui.com" + "website": "http://www.alloyui.com" }, "Amaya": { "cats": [ - 20 + "20" ], "icon": "Amaya.png", "meta": { "generator": "Amaya(?: V?([\\d.]+[a-z]))?\\;version:\\1" }, - "website": "www.w3.org/Amaya" + "website": "http://www.w3.org/Amaya" }, "Amazon Cloudfront": { "cats": [ - 31 + "31" ], "headers": { "X-Amz-Cf-Id": "" }, "icon": "Amazon-Cloudfront.svg", - "website": "aws.amazon.com/cloudfront/" - }, + "website": "http://aws.amazon.com/cloudfront/" + }, "Amazon EC2": { "cats": [ - 22 + "22" ], "headers": { "Server": "\\(Amazon\\)" }, "icon": "aws-ec2.svg", - "website": "aws.amazon.com/ec2/" - }, - "Amazon S3": { - "cats": [ - 19 - ], - "headers": { - "Server": "AmazonS3" - }, - "icon": "aws-s3.svg", - "website": "aws.amazon.com/s3/" - }, + "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": [ - 1 + "1" ], "icon": "Ametys.png", "implies": "Java", @@ -479,37 +479,22 @@ "generator": "(?:Ametys|Anyware Technologies)" }, "script": "ametys\\.js", - "website": "ametys.org" + "website": "http://ametys.org" }, "Amiro.CMS": { "cats": [ - 1 + "1" ], "icon": "Amiro.CMS.png", "implies": "PHP", "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 + "18" ], "env": "^ngMaterial$", "icon": "Angular.svg", @@ -518,11 +503,11 @@ "/([\\d.]+(?:\\-?rc[.\\d]*)*)/angular-material(?:\\.min)?\\.js\\;version:\\1", "angular-material.*\\.js" ], - "website": "material.angularjs.org" + "website": "http://material.angularjs.org" }, "AngularJS": { "cats": [ - 12 + "12" ], "env": "^angular$", "icon": "AngularJS.png", @@ -531,89 +516,89 @@ "/([\\d.]+(?:\\-?rc[.\\d]*)*)/angular(?:\\.min)?\\.js\\;version:\\1", "angular.*\\.js" ], - "website": "angularjs.org" + "website": "http://angularjs.org" }, "Apache": { "cats": [ - 22 + "22" ], "headers": { "Server": "(?:Apache(?:$|/([\\d.]+)|[^/-])|(?:^|\b)HTTPD)\\;version:\\1" }, "icon": "Apache.svg", - "website": "apache.org" + "website": "http://apache.org" }, "Apache HBase": { "cats": [ - 34 + "34" ], "html": "<style[^>]+static/hbase", - "implies": "Java", "icon": "Apache HBase.png", - "website": "hbase.apache.org" + "implies": "Java", + "website": "http://hbase.apache.org" }, "Apache Hadoop": { "cats": [ - 34 + "34" ], "html": "<style[^>]+static/hadoop", "icon": "Apache Hadoop.svg", - "website": "hadoop.apache.org" + "website": "http://hadoop.apache.org" }, "Apache JSPWiki": { "cats": [ - 8 + "8" ], "html": "<html[^>]* xmlns:jspwiki=", "icon": "Apache JSPWiki.png", - "script": "jspwiki", "implies": "Apache Tomcat", + "script": "jspwiki", "url": "wiki\\.jsp", - "website": "jspwiki.org" + "website": "http://jspwiki.org" }, "Apache Tomcat": { "cats": [ - 22 + "22" ], "headers": { "Server": "Apache-Coyote(/1\\.1)?\\;version:\\1?4.1+:", "X-Powered-By": "\bTomcat\b(?:-([\\d.]+))?\\;version:\\1" }, - "implies": "Java", "icon": "Apache Tomcat.svg", - "website": "tomcat.apache.org" + "implies": "Java", + "website": "http://tomcat.apache.org" }, "Apache Traffic Server": { "cats": [ - 22 + "22" ], "headers": { "Server": "ATS/?([\\d.]+)?\\;version:\\1" }, "icon": "Apache Traffic Server.png", - "website": "trafficserver.apache.org/" + "website": "http://trafficserver.apache.org/" }, "Apache Wicket": { "cats": [ - 18 + "18" ], "env": "^Wicket", "icon": "Apache Wicket.svg", "implies": "Java", - "website": "wicket.apache.org" + "website": "http://wicket.apache.org" }, "AppNexus": { "cats": [ - 36 + "36" ], "html": "<(?:iframe|img)[^>]+adnxs\\.(?:net|com)", "icon": "AppNexus.svg", "script": "adnxs\\.(?:net|com)", - "website": "appnexus.com" + "website": "http://appnexus.com" }, "Arastta": { "cats": [ - 6 + "6" ], "excludes": "OpenCart", "headers": { @@ -624,19 +609,19 @@ "icon": "Arastta.svg", "implies": "PHP", "script": "arastta\\.js", - "website": "arastta.org" + "website": "http://arastta.org" }, "Arc Forum": { "cats": [ - 2 + "2" ], "html": "ping\\.src = node\\.href;\\s+[^>]+\\s+}\\s+</script>", "icon": "Arc Forum.png", - "website": "arclanguage.org" + "website": "http://arclanguage.org" }, "Artifactory": { "cats": [ - 47 + "47" ], "env": "^ArtifactoryUpdates$", "html": [ @@ -646,11 +631,11 @@ "script": [ "wicket/resource/org\\.artifactory\\." ], - "website": "jfrog.com/open-source/#os-arti" + "website": "http://jfrog.com/open-source/#os-arti" }, "Artifactory Web Server": { "cats": [ - 22 + "22" ], "headers": { "Server": "Artifactory(?:/([\\d.]+))?\\;version:\\1" @@ -659,35 +644,35 @@ "implies": [ "Artifactory" ], - "website": "jfrog.com/open-source/#os-arti" + "website": "http://jfrog.com/open-source/#os-arti" }, "ArvanCloud": { "cats": [ - 31 + "31" ], "env": "^ArvanCloud$", "headers": { "AR-PoweredBy": "Arvan Cloud \\(arvancloud.com\\)" }, "icon": "ArvanCloud.png", - "website": "www.ArvanCloud.com" + "website": "http://www.ArvanCloud.com" }, "AsciiDoc": { "cats": [ - 1, - 20, - 27 + "1", + "20", + "27" ], "env": "^asciidoc$", "icon": "AsciiDoc.png", "meta": { "generator": "^AsciiDoc ([\\d.]+)\\;version:\\1" }, - "website": "www.methods.co.nz/asciidoc" + "website": "http://www.methods.co.nz/asciidoc" }, "Asymptix PHP Framework": { "cats": [ - 18 + "18" ], "headers": { "X-Powered-By": "Asymptix PHP Framework(?:.*)" @@ -697,11 +682,11 @@ ], "icon": "Asymptix PHP Framework.png", "implies": "PHP", - "website": "github.com/Asymptix/Framework" + "website": "http://github.com/Asymptix/Framework" }, "Atlassian Bitbucket": { "cats": [ - 47 + "47" ], "env": "^bitbucket$", "icon": "Atlassian Bitbucket.svg", @@ -709,11 +694,11 @@ "meta": { "application-name": "Bitbucket" }, - "website": "www.atlassian.com/software/bitbucket/overview/" + "website": "http://www.atlassian.com/software/bitbucket/overview/" }, "Atlassian Confluence": { "cats": [ - 8 + "8" ], "headers": { "X-Confluence-Request-Time": "" @@ -724,22 +709,22 @@ "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": [ - 47 + "47" ], "headers": { "Set-cookie": "FESESSIONID" }, "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": [ - 13 + "13" ], "env": "^jira$", "html": "Powered by\\s+]+atlassian\\.com/(?:software/jira|jira-bug-tracking/)[^>]+>Atlassian\\s+JIRA(?:[^v]*v(?:ersion: )?(\\d+\\.\\d+(?:\\.\\d+)?))?\\;version:\\1", @@ -749,56 +734,56 @@ "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": [ - 13, - 47 + "13", + "47" ], "icon": "Atlassian Jira.svg", "script": [ "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 + "12" ], - "icon": "Aurelia.svg", "html": [ "<[^>]+aurelia-app=[^>]", "<[^>]+data-main=[^>]aurelia-bootstrapper", "<[^>]+au-target-id=[^>]\\d" ], + "icon": "Aurelia.svg", "script": [ "aurelia(?:\\.min)?\\.js" ], - "website": "aurelia.io" + "website": "http://aurelia.io" }, "Avangate": { "cats": [ - 6 + "6" ], "env": "^(?:__)?avng8_", "html": "]* href=\"^https?://edge\\.avangate\\.net/", "icon": "Avangate.svg", "script": "^https?://edge\\.avangate\\.net/", - "website": "avangate.com" + "website": "http://avangate.com" }, "BEM": { "cats": [ - 12 + "12" ], "html": "<[^>]+data-bem", "icon": "BEM.png", - "website": "en.bem.info" + "website": "http://en.bem.info" }, "BIGACE": { "cats": [ - 1 + "1" ], "html": "(?:Powered by ]+BIGACE|", "icon": "Business Catalyst.png", "script": "CatalystScripts", - "website": "businesscatalyst.com" + "website": "http://businesscatalyst.com" }, "BuySellAds": { "cats": [ - 36 + "36" ], "env": "^_bsa", "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 + "27" ], "icon": "C++.png", - "website": "isocpp.org" + "website": "http://isocpp.org" }, "CFML": { "cats": [ - 27 + "27" ], "icon": "CFML.png", - "website": "adobe.com/products/coldfusion-family.html" + "website": "http://adobe.com/products/coldfusion-family.html" }, "CKEditor": { "cats": [ - 24 + "24" ], "env": "^CKEDITOR$", "icon": "CKEditor.png", - "website": "ckeditor.com" + "website": "http://ckeditor.com" }, "CMS Made Simple": { "cats": [ - 1 + "1" ], "headers": { "Set-Cookie": "^CMSSESSID" @@ -1116,30 +1101,30 @@ "meta": { "generator": "CMS Made Simple" }, - "website": "cmsmadesimple.org" + "website": "http://cmsmadesimple.org" }, "CMSimple": { "cats": [ - 1 + "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": [ - 10 + "10" ], "html": "src=[^>]+co2stats\\.com/propres\\.php", "icon": "CO2Stats.png", - "website": "co2stats.com" + "website": "http://co2stats.com" }, "CPG Dragonfly": { "cats": [ - 1 + "1" ], "headers": { "X-Powered-By": "Dragonfly CMS" @@ -1149,11 +1134,11 @@ "meta": { "generator": "CPG Dragonfly" }, - "website": "dragonflycms.org" + "website": "http://dragonflycms.org" }, "CS Cart": { "cats": [ - 6 + "6" ], "env": "^fn_compare_strings$", "html": [ @@ -1162,11 +1147,11 @@ ], "icon": "CS Cart.png", "implies": "PHP", - "website": "www.cs-cart.com" + "website": "http://www.cs-cart.com" }, "CacheFly": { "cats": [ - 31 + "31" ], "headers": { "Server": "^CFS ", @@ -1174,22 +1159,22 @@ "X-CF2": "" }, "icon": "CacheFly.png", - "website": "www.cachefly.com" + "website": "http://www.cachefly.com" }, "Caddy": { "cats": [ - 22 + "22" ], "headers": { "Server": "^Caddy$" }, - "implies": "Go", "icon": "caddy.svg", - "website": "caddyserver.com" + "implies": "Go", + "website": "http://caddyserver.com" }, "CakePHP": { "cats": [ - 18 + "18" ], "headers": { "Set-Cookie": "cakephp=" @@ -1199,49 +1184,49 @@ "meta": { "application-name": "CakePHP" }, - "website": "cakephp.org" + "website": "http://cakephp.org" }, "Canon": { "cats": [ - 40 + "40" ], "icon": "Canon.png", - "website": "www.canon.com" + "website": "http://www.canon.com" }, "Canon HTTP Server": { "cats": [ - 22 + "22" ], "headers": { "Server": "CANON HTTP Server(?:/([\\d.]+))?\\;version:\\1" }, - "icon": "Canon HTTP Server.png", + "icon": "Canon.png", "implies": "Canon", - "website": "www.canon.com" + "website": "http://www.canon.com" }, "Captch Me": { "cats": [ - 16, - 36 + "16", + "36" ], "env": "^Captchme", "icon": "Captch Me.svg", "script": "^https?://api\\.captchme\\.net/", - "website": "captchme.com" + "website": "http://captchme.com" }, "Carbon Ads": { "cats": [ - 36 + "36" ], "env": "^_carbonads", "html": "<[a-z]+ [^>]*id=\"carbonads-container\"", "icon": "Carbon Ads.png", "script": "[^\\/]*\\/\\/(?:engine|srv)\\.carbonads\\.com\\/", - "website": "carbonads.net" + "website": "http://carbonads.net" }, "Cargo": { "cats": [ - 1 + "1" ], "html": "]+Cargo feed", "icon": "Cargo.png", @@ -1250,12 +1235,12 @@ "cargo_title": "" }, "script": "/cargo\\.", - "website": "cargocollective.com" + "website": "http://cargocollective.com" }, "Catberry.js": { "cats": [ - 12, - 18 + "12", + "18" ], "env": "^catberry$", "headers": { @@ -1263,43 +1248,43 @@ }, "icon": "Catberry.js.png", "implies": "Node.js", - "website": "catberry.org" + "website": "http://catberry.org" }, "Catwalk": { "cats": [ - 22 + "22" ], "headers": { "Server": "Catwalk\\/?([\\d\\.]+)?\\;version:\\1" }, "icon": "Catwalk.png", "implies": "Canon", - "website": "www.canon.com" + "website": "http://www.canon.com" }, "CentOS": { "cats": [ - 28 + "28" ], "headers": { "Server": "CentOS", "X-Powered-By": "CentOS" }, "icon": "CentOS.png", - "website": "centos.org" + "website": "http://centos.org" }, "CenteHTTPd": { "cats": [ - 22 + "22" ], "headers": { "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": [ - 1 + "1" ], "icon": "Chameleon.png", "implies": [ @@ -1309,11 +1294,11 @@ "meta": { "generator": "chameleon-cms" }, - "website": "chameleon-system.de" + "website": "http://chameleon-system.de" }, "Chamilo": { "cats": [ - 21 + "21" ], "headers": { "X-Powered-By": "Chamilo ([\\d.]+)\\;version:\\1" @@ -1324,51 +1309,51 @@ "meta": { "generator": "Chamilo ([\\d.]+)\\;version:\\1" }, - "website": "www.chamilo.org" + "website": "http://www.chamilo.org" }, "Chartbeat": { "cats": [ - 10 + "10" ], "env": "^_sf_(?:endpt|async_config)$", "icon": "Chartbeat.png", "script": "chartbeat\\.js", - "website": "chartbeat.com" + "website": "http://chartbeat.com" }, "Cherokee": { "cats": [ - 22 + "22" ], "headers": { "Server": "Cherokee/([\\d.]+)\\;version:\\1" }, "icon": "Cherokee.png", - "website": "www.cherokee-project.com" + "website": "http://www.cherokee-project.com" }, "CherryPy": { "cats": [ - 18, - 22 + "18", + "22" ], "headers": { "Server": "CherryPy\\/?([\\d\\.]+)?\\;version:\\1" }, "icon": "CherryPy.png", "implies": "Python", - "website": "www.cherrypy.org" + "website": "http://www.cherrypy.org" }, "Chitika": { "cats": [ - 36 + "36" ], "env": "ch_c(?:lient|olor_site_link)", "icon": "Chitika.png", "script": "scripts\\.chitika\\.net/", - "website": "chitika.com" + "website": "http://chitika.com" }, "Ckan": { "cats": [ - 1 + "1" ], "headers": { "Access-Control-Allow-Headers": "X-CKAN-API-KEY", @@ -1381,67 +1366,78 @@ "Java", "PostgreSQL\\;confidence:80" ], - "website": "ckan.org/" + "website": "http://ckan.org/" }, "ClickHeat": { "cats": [ - 10 + "10" ], "env": "^clickHeat", "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": [ - 10 + "10" ], "env": "^ClickTale", "icon": "ClickTale.png", - "website": "www.clicktale.com" + "website": "http://www.clicktale.com" }, "Clicky": { "cats": [ - 10 + "10" ], "env": "^clicky$", "icon": "Clicky.png", "script": "static\\.getclicky\\.com", - "website": "getclicky.com" + "website": "http://getclicky.com" }, "Clientexec": { "cats": [ - 6 + "6" ], "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": [ - 31 + "31" ], "env": "^CloudFlare$", "headers": { "Server": "cloudflare" }, "icon": "CloudFlare.svg", - "website": "www.cloudflare.com" + "website": "http://www.cloudflare.com" }, "Cloudera": { "cats": [ - 34 + "34" ], "headers": { "Server": "cloudera" }, "icon": "Cloudera.png", - "website": "www.cloudera.com" + "website": "http://www.cloudera.com" }, "CodeIgniter": { "cats": [ - 18 + "18" ], "headers": { "Set-Cookie": "(?:exp_last_activity|exp_tracker|ci_(?:session|(csrf_token)))\\;version:\\1?2+:" @@ -1449,49 +1445,49 @@ "html": "]+name=\"ci_csrf_token\"\\;version:2+", "icon": "CodeIgniter.png", "implies": "PHP", - "website": "codeigniter.com" + "website": "http://codeigniter.com" }, "CodeMirror": { "cats": [ - 19 + "19" ], "env": "^CodeMirror$", "icon": "CodeMirror.png", - "website": "codemirror.net" + "website": "http://codemirror.net" }, "Comandia": { "cats": [ - 6 + "6" ], "env": "^Comandia$", "html": "]+=['\"]//cdn\\.mycomandia\\.com", "icon": "Comandia.svg", - "website": "comandia.com" + "website": "http://comandia.com" }, "Commerce Server": { "cats": [ - 6 + "6" ], "headers": { "COMMERCE-SERVER-SOFTWARE": "" }, "icon": "Commerce Server.png", "implies": "Microsoft ASP.NET", - "website": "commerceserver.net" + "website": "http://commerceserver.net" }, "CompaqHTTPServer": { "cats": [ - 22 + "22" ], "headers": { "Server": "CompaqHTTPServer\\/?([\\d\\.]+)?\\;version:\\1" }, "icon": "HP.svg", - "website": "www.hp.com" + "website": "http://www.hp.com" }, "Concrete5": { "cats": [ - 1 + "1" ], "env": "^CCM_IMAGE_PATH$", "icon": "Concrete5.png", @@ -1500,22 +1496,22 @@ "generator": "concrete5 - ([\\d.ab]+)\\;version:\\1" }, "script": "concrete/js/", - "website": "concrete5.org" + "website": "http://concrete5.org" }, "Connect": { "cats": [ - 18 + "18" ], "headers": { "X-Powered-By": "^Connect$" }, "icon": "Connect.png", "implies": "Node.js", - "website": "www.senchalabs.org/connect" + "website": "http://www.senchalabs.org/connect" }, "Contao": { "cats": [ - 1 + "1" ], "html": [ "", @@ -1526,22 +1522,22 @@ "meta": { "generator": "^Contao Open Source CMS$" }, - "website": "contao.org" + "website": "http://contao.org" }, "Contenido": { "cats": [ - 1 + "1" ], "icon": "Contenido.png", "implies": "PHP", "meta": { "generator": "Contenido ([\\d.]+)\\;version:\\1" }, - "website": "contenido.org/en" + "website": "http://contenido.org/en" }, "Contens": { "cats": [ - 1 + "1" ], "icon": "Contens.png", "implies": [ @@ -1551,131 +1547,131 @@ "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": [ - 1, - 11 + "1", + "11" ], "icon": "ContentBox.png", "implies": "Adobe ColdFusion", "meta": { "generator": "ContentBox powered by ColdBox" }, - "website": "www.gocontentbox.org" + "website": "http://www.gocontentbox.org" }, "ConversionLab": { "cats": [ - 10 + "10" ], "icon": "ConversionLab.png", "script": "conversionlab\\.trackset\\.com/track/tsend\\.js", - "website": "www.trackset.it/conversionlab" + "website": "http://www.trackset.it/conversionlab" }, "Coppermine": { "cats": [ - 7 + "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": [ - 31 + "31" ], "headers": { "X-CDN": "Incapsula" }, "icon": "Incapsula.png", - "website": "www.incapsula.com" + "website": "http://www.incapsula.com" }, "Indexhibit": { "cats": [ - 1 + "1" ], "html": "<(?:link|a href) [^>]+ndxz-studio", - "icon": "default.png", + "icon": "default.svg", "implies": [ "PHP", "Apache", @@ -3515,43 +3564,51 @@ "meta": { "generator": "Indexhibit" }, - "website": "www.indexhibit.org" + "website": "http://www.indexhibit.org" }, "Indico": { "cats": [ - 1 + "1" ], "headers": { "Set-cookie": "MAKACSESSION" }, "html": "Powered by\\s+(?:CERN )?(?:CDS )?Indico( [\\d\\.]+)?\\;version:\\1", "icon": "Indico.png", - "website": "indico-software.org" + "website": "http://indico-software.org" }, "Indy": { "cats": [ - 22 + "22" ], "headers": { "Server": "Indy(?:/([\\d.]+))?\\;version:\\1" }, - "icon": "default.png", - "website": "indyproject.org" + "icon": "default.svg", + "website": "http://indyproject.org" + }, + "InfernoJS": { + "cats": [ + "12" + ], + "env": "^Inferno$", + "icon": "InfernoJS.png", + "website": "https://infernojs.org/" }, "Infusionsoft": { "cats": [ - 32 + "32" ], "html": [ "]*name=\"infusionsoft_version\" [^>]*value=\"([^>]*)\" [^>]*\\/>\\;version:\\1", "]*value=\"([^>]*)\" [^>]*name=\"infusionsoft_version\" [^>]*\\/>\\;version:\\1" ], "icon": "infusionsoft.svg", - "website": "infusionsoft.com" + "website": "http://infusionsoft.com" }, "InstantCMS": { "cats": [ - 1 + "1" ], "headers": { "Set-Cookie": "InstantCMS\\[logdate\\]=" @@ -3561,87 +3618,87 @@ "meta": { "generator": "InstantCMS" }, - "website": "www.instantcms.ru" + "website": "http://www.instantcms.ru" }, "Intel Active Management Technology": { "cats": [ - 22, - 46 + "22", + "46" ], "headers": { "Server": "Intel\\(R\\) Active Management Technology(?: ([\\d.]+))?\\;version:\\1" }, "icon": "Intel Active Management Technology.png", - "website": "intel.com" + "website": "http://intel.com" }, "IntenseDebate": { "cats": [ - 15 + "15" ], "icon": "IntenseDebate.png", "script": "intensedebate\\.com", - "website": "intensedebate.com" + "website": "http://intensedebate.com" }, "Intercom": { "cats": [ - 10 + "10" ], "env": "^Intercom$", "icon": "Intercom.png", "script": "(?:api\\.intercom\\.io/api|static\\.intercomcdn\\.com/intercom\\.v1)", - "website": "intercom.io" + "website": "http://intercom.io" }, "Intershop": { "cats": [ - 6 + "6" ], "icon": "Intershop.png", "script": "(?:is-bin|INTERSHOP)", - "website": "intershop.com" + "website": "http://intershop.com" }, "Invenio": { "cats": [ - 50 + "50" ], "headers": { "Set-cookie": "INVENIOSESSION" }, "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": [ - 17 + "17" ], "html": "]* href=[^>]+ionicons(?:\\.min)?\\.css", "icon": "Ionicons.png", - "website": "ionicons.com" + "website": "http://ionicons.com" }, "JAlbum": { "cats": [ - 7 + "7" ], "icon": "JAlbum.png", "implies": "Java", "meta": { "generator": "JAlbum( [\\d.]+)?\\;version:\\1" }, - "website": "jalbum.net/en" + "website": "http://jalbum.net/en" }, "JBoss Application Server": { "cats": [ - 22 + "22" ], "headers": { "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": [ - 22 + "22" ], "excludes": "Apache Tomcat", "headers": { @@ -3649,11 +3706,11 @@ }, "icon": "JBoss Web.png", "implies": "JBoss Application Server", - "website": "jboss.org/jbossweb" + "website": "http://jboss.org/jbossweb" }, "JC-HTTPD": { "cats": [ - 22 + "22" ], "excludes": "Apache", "headers": { @@ -3661,171 +3718,171 @@ }, "icon": "JC-HTTPD.png", "implies": "Canon", - "website": "canon.com" + "website": "http://canon.com" }, "JS Charts": { "cats": [ - 25 + "25" ], "env": "^JSChart$", "icon": "JS Charts.png", "script": "jscharts.*\\.js", - "website": "www.jscharts.com" + "website": "http://www.jscharts.com" }, "JTL Shop": { "cats": [ - 6 + "6" ], "headers": { "Set-Cookie": "JTLSHOP=" }, "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": [ - 1 + "1" ], "headers": { "Set-Cookie": "CMSPreferredCulture=" @@ -3927,12 +3984,22 @@ "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 + "29", + "25" ], "headers": { "kbn-name": "kibana", @@ -3942,51 +4009,51 @@ "icon": "kibana.svg", "implies": "Node.js", "url": "kibana#/dashboard/", - "website": "www.elastic.co/products/kibana" + "website": "http://www.elastic.co/products/kibana" }, "KineticJS": { "cats": [ - 25 + "25" ], "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 + "41", + "6", + "5" ], "env": "^_klarnaCheckout$", "icon": "Klarna.svg", - "website": "klarna.com" + "website": "http://klarna.com" }, "Knockout.js": { "cats": [ - 12 + "12" ], "env": "^ko$", "icon": "Knockout.js.png", - "website": "knockoutjs.com" + "website": "http://knockoutjs.com" }, "Koa": { "cats": [ - 18, - 22 + "18", + "22" ], "headers": { "X-Powered-By": "^koa$" }, "icon": "Koa.png", "implies": "Node.js", - "website": "koajs.com" + "website": "http://koajs.com" }, "Koala Framework": { "cats": [ - 1, - 18 + "1", + "18" ], "html": "", "icon": "Lightspeed.svg", "script": "http://assets.webshopapp.com", "url": "seoshop.webshopapp.com", - "website": "www.lightspeedhq.com/products/ecommerce/" + "website": "http://www.lightspeedhq.com/products/ecommerce/" }, "Lighty": { "cats": [ - 18 + "18" ], "headers": { "Set-Cookie": "lighty_version" }, "icon": "Lighty.png", "implies": "PHP", - "website": "gitlab.com/lighty/framework" + "website": "http://gitlab.com/lighty/framework" }, "LimeSurvey": { "cats": [ - 19 + "19" ], "headers": { "generator": "LimeSurvey" }, "icon": "LimeSurvey.png", - "website": "limesurvey.org/" + "website": "http://limesurvey.org/" }, "LinkSmart": { "cats": [ - 36 + "36" ], "env": "^(?:_mb_site_guid$|LS_JSON|LinkSmart(?:_|$))", "icon": "LinkSmart.png", "script": "^https?://cdn\\.linksmart\\.com/linksmart_([\\d.]+?)(?:\\.min)?\\.js\\;version:\\1", - "website": "linksmart.com" + "website": "http://linksmart.com" }, "Linkedin": { "cats": [ - 5 + "5" ], "icon": "Linkedin.svg", "script": "//platform\\.linkedin\\.com/in\\.js", - "website": "linkedin.com" + "website": "http://linkedin.com" }, "List.js": { "cats": [ - 12 + "12" ], "env": "^List$", "icon": "List.js.png", "script": "^list\\.(?:min\\.)?js$", - "website": "www.listjs.com" + "website": "http://www.listjs.com" }, "LiteSpeed": { "cats": [ - 22 + "22" ], "headers": { "Server": "^LiteSpeed$" }, "icon": "LiteSpeed.png", - "website": "litespeedtech.com" + "website": "http://litespeedtech.com" }, "Lithium": { "cats": [ - 1 + "1" ], "env": [ "^LITHIUM$" @@ -4280,35 +4347,35 @@ "html": " ]+Powered by Lithium", "icon": "Lithium.png", "implies": "PHP", - "website": "www.lithium.com" + "website": "http://www.lithium.com" }, "LiveAgent": { "cats": [ - 52 + "52" ], "env": "^LiveAgent$", "icon": "LiveAgent.png", - "website": "www.ladesk.com" + "website": "http://www.ladesk.com" }, "LiveChat": { "cats": [ - 52 + "52" ], "icon": "LiveChat.png", "script": "cdn\\.livechatinc\\.com/.*tracking\\.js", - "website": "livechatinc.com" + "website": "http://livechatinc.com" }, "LiveJournal": { "cats": [ - 11 + "11" ], "icon": "LiveJournal.png", "url": "\\.livejournal\\.com", - "website": "www.livejournal.com" + "website": "http://www.livejournal.com" }, "LiveStreet CMS": { "cats": [ - 1 + "1" ], "env": "^LIVESTREET", "headers": { @@ -4316,11 +4383,11 @@ }, "icon": "LiveStreet CMS.png", "implies": "PHP", - "website": "livestreetcms.com" + "website": "http://livestreetcms.com" }, "Livefyre": { "cats": [ - 15 + "15" ], "env": [ "^fyre$", @@ -4329,11 +4396,11 @@ "html": "<[^>]+(?:id|class)=\"livefyre", "icon": "Livefyre.png", "script": "livefyre_init\\.js", - "website": "livefyre.com" + "website": "http://livefyre.com" }, "Liveinternet": { "cats": [ - 10 + "10" ], "html": [ "]*>[^]{0,128}?src\\s*=\\s*['\"]//counter\\.yadro\\.ru/hit(?:;\\S+)?\\?(?:t\\d+\\.\\d+;)?r", @@ -4343,19 +4410,19 @@ ], "icon": "Liveinternet.png", "script": "/js/al/common.js\\?[0-9_]+", - "website": "liveinternet.ru/rating/" + "website": "http://liveinternet.ru/rating/" }, "Lo-dash": { "cats": [ - 12 + "12" ], "icon": "Lo-dash.png", "script": "lodash.*\\.js", - "website": "www.lodash.com" + "website": "http://www.lodash.com" }, "Locomotive": { "cats": [ - 1 + "1" ], "html": "]*/sites/[a-z\\d]{24}/theme/stylesheets", "icon": "Locomotive.png", @@ -4363,81 +4430,89 @@ "Ruby on Rails", "MongoDB" ], - "website": "www.locomotivecms.com" + "website": "http://www.locomotivecms.com" }, "Logitech Media Server": { "cats": [ - 22, - 38 + "22", + "38" ], "headers": { "Server": "Logitech Media Server(?: \\(([\\d\\.]+))?\\;version:\\1" }, "icon": "Logitech Media Server.png", - "website": "www.mysqueezebox.com" + "website": "http://www.mysqueezebox.com" }, "Lotus Domino": { "cats": [ - 22 + "22" ], "headers": { "Server": "Lotus-Domino" }, "icon": "Lotus Domino.png", "implies": "Java", - "website": "www-01.ibm.com/software/lotus/products/domino" + "website": "http://www-01.ibm.com/software/lotus/products/domino" }, "Lua": { "cats": [ - 27 + "27" ], "headers": { "X-Powered-By": "\bLua(?: ([\\d.]+))?\\;version:\\1" }, "icon": "Lua.png", - "website": "www.lua.org" + "website": "http://www.lua.org" }, "Lucene": { "cats": [ - 34 + "34" ], "icon": "Lucene.png", "implies": "Java", - "website": "lucene.apache.org/core/" + "website": "http://lucene.apache.org/core/" }, "M.R. Inc BoxyOS": { "cats": [ - 28 + "28" ], - "icon": "M.R. Inc BoxyOS.png", - "website": "mrincworld.com" + "icon": "M.R. Inc.png", + "website": "http://mrincworld.com" }, "M.R. Inc SiteFrame": { "cats": [ - 18 + "18" ], "headers": { "Powered-By": "M\\.R\\. Inc SiteFrame" }, - "icon": "M.R. Inc SiteFrame.png", - "website": "mrincworld.com" + "icon": "M.R. Inc.png", + "website": "http://mrincworld.com" }, "M.R. Inc Webserver": { "cats": [ - 22 + "22" ], "headers": { "Server": "M\\.R\\. Inc Webserver" }, - "icon": "M.R. Inc Webserver.png", + "icon": "M.R. Inc.png", "implies": [ "M.R. Inc BoxyOS" ], - "website": "mrincworld.com" + "website": "http://mrincworld.com" + }, + "MHonArc": { + "cats": [ + "50" + ], + "html": "\\;version:\\1", + "icon": "mhonarc.png", + "website": "http://www.mhonarc.at" }, "MOBOTIX": { "cats": [ - 39 + "39" ], "icon": "MOBOTIX.png", "meta": { @@ -4446,11 +4521,11 @@ "publisher": "MOBOTIX AG\\;confidence:40" }, "url": "control/userimage\\.html\\;confidence:70", - "website": "mobotix.com" + "website": "http://mobotix.com" }, "MODX": { "cats": [ - 1 + "1" ], "env": "^MODX_MEDIA_PATH$", "headers": { @@ -4465,20 +4540,23 @@ ], "icon": "MODX.png", "implies": "PHP", - "website": "modx.com" + "meta": { + "generator": "MODX[^\\d.]*([\\d.]+)?\\;version:\\1" + }, + "website": "http://modx.com" }, "MadAdsMedia": { "cats": [ - 36 + "36" ], "env": "^setM(?:Iframe|RefURL)$", "icon": "MadAdsMedia.png", "script": "^https?://(?:ads-by|pixel)\\.madadsmedia.com/", - "website": "madadsmedia.com" + "website": "http://madadsmedia.com" }, "Magento": { "cats": [ - 6 + "6" ], "env": [ "^(?:Mage|VarienForm)$" @@ -4498,11 +4576,11 @@ "static/_requirejs\\;confidence:50\\;version:2", "static/frontend\\;confidence:20\\;version:2" ], - "website": "www.magentocommerce.com" + "website": "http://www.magentocommerce.com" }, "Mailchimp": { "cats": [ - 32 + "32" ], "html": [ "
]*data-mailchimp-url", @@ -4516,39 +4594,39 @@ "s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js", "cdn-images.mailchimp.com/[^>]*.css" ], - "website": "mailchimp.com" + "website": "http://mailchimp.com" }, "Mambo": { "cats": [ - 1 + "1" ], "excludes": "Joomla", "icon": "Mambo.png", "meta": { "generator": "Mambo" }, - "website": "mambo-foundation.org" + "website": "http://mambo-foundation.org" }, "MantisBT": { "cats": [ - 13 + "13" ], "html": "]+ alt=\"Powered by Mantis Bugtracker", "icon": "MantisBT.png", "implies": "PHP", - "website": "www.mantisbt.org" + "website": "http://www.mantisbt.org" }, "ManyContacts": { "cats": [ - 5 + "5" ], "icon": "ManyContacts.png", "script": "\\/assets\\/js\\/manycontacts\\.min\\.js", - "website": "www.manycontacts.com" + "website": "http://www.manycontacts.com" }, "Marionette.js": { "cats": [ - 12 + "12" ], "env": "^Marionette$", "icon": "Marionette.js.svg", @@ -4557,61 +4635,76 @@ "Backbone.js" ], "script": "backbone\\.marionette.*\\.js", - "website": "marionettejs.com" + "website": "http://marionettejs.com" }, "Marketo": { "cats": [ - 32 + "32" ], "env": "^Munchkin$", "icon": "Marketo.png", "script": "munchkin\\.marketo\\.net/munchkin\\.js", - "website": "www.marketo.com" + "website": "http://www.marketo.com" }, "Materialize CSS": { "cats": [ - 18 + "18" ], "html": "]* href=\"[^\"]*materialize(?:\\.min)?\\.css", "icon": "Materialize CSS.png", "implies": "jQuery", "script": "materialize(?:\\.min)?\\.js", - "website": "materializecss.com" + "website": "http://materializecss.com" }, "MathJax": { "cats": [ - 25 + "25" ], "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 + "31" ], "headers": { "Server": "^NetDNA", "X-CDN-Forward": "^maxcdn$" }, "icon": "MaxCDN.png", - "website": "www.maxcdn.com" + "website": "http://www.maxcdn.com" }, "MaxSite CMS": { "cats": [ - 1 + "1" ], "icon": "MaxSite CMS.png", "implies": "PHP", "meta": { "generator": "MaxSite CMS" }, - "website": "max-3000.com" + "website": "http://max-3000.com" }, "Mean.io": { "cats": [ - 12 + "12" ], "headers": { "X-Powered-CMS": "Mean\\.io" @@ -4620,32 +4713,31 @@ "implies": [ "MongoDB", "Express", - "AngularJS", - "Node.js" + "AngularJS" ], - "website": "mean.io" + "website": "http://mean.io" }, "MediaElement.js": { "cats": [ - 14 + "14" ], "env": "^mejs$", "icon": "MediaElement.js.png", - "website": "mediaelementjs.com" + "website": "http://mediaelementjs.com" }, "MediaTomb": { "cats": [ - 38 + "38" ], "headers": { "Server": "MediaTomb(?:/([\\d.]+))?\\;version:\\1" }, "icon": "MediaTomb.png", - "website": "mediatomb.cc" + "website": "http://mediatomb.cc" }, "MediaWiki": { "cats": [ - 8 + "8" ], "html": "(?:]+>Powered by MediaWiki|<[^>]+id=\"t-specialpages)", "icon": "MediaWiki.png", @@ -4653,40 +4745,40 @@ "meta": { "generator": "MediaWiki" }, - "website": "www.mediawiki.org" + "website": "http://www.mediawiki.org" }, "Meebo": { "cats": [ - 5 + "5" ], "html": "(?: