From 93485c1b01b6fbf55a5ab826f106c63fed0d573b Mon Sep 17 00:00:00 2001 From: Piotr Lizonczyk Date: Tue, 7 Jul 2015 12:11:39 +0200 Subject: [PATCH 01/34] Added Materialize CSS application rule --- src/apps.json | 9 +++++++++ src/icons/Materialize CSS.png | Bin 0 -> 971 bytes 2 files changed, 9 insertions(+) create mode 100644 src/icons/Materialize CSS.png diff --git a/src/apps.json b/src/apps.json index 41a5a73b5..67b48d497 100755 --- a/src/apps.json +++ b/src/apps.json @@ -3438,6 +3438,15 @@ "script": "munchkin\\.marketo\\.net/munchkin\\.js", "website": "www.marketo.com" }, + "Materalize CSS": { + "cats": [ + 18 + ], + "html": "]* href=\"[^\"]*materialize(?:\\.min)?\\.css", + "implies": "jQuery", + "script": "materialize(?:\\.min)?\\.js", + "website": "materializecss.com" + }, "MathJax": { "cats": [ 25 diff --git a/src/icons/Materialize CSS.png b/src/icons/Materialize CSS.png new file mode 100644 index 0000000000000000000000000000000000000000..12be1b4a97b4e4b79055f3cf6621c27f2fc1fa2d GIT binary patch literal 971 zcmV;+12p`JP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2j2$= z2{k($pz!Vh00T=&L_t(o!|hhjZxvM-J?G9m+E*SginO!=1G*B!+K?F8z}keO(G9R* zp%{ZrjKZHlo+j9Y1&K;%2`rQn4GWEbfv(&bjmCxA`Y5k0eF5IDnK$>ixOe8wV5y;7 z-?y2$_kQ=g=R4o|?hG)rp$+Z-Zrp6KF>`*BvVVaL02oOad3JwX+C6z|?8Nk&1HW_c z6ZqHZEh000F9D!xnt zfYR_MK=802lkg9&@^)zr7=JdnB4k4r#S6P8Is(CL6E|f#JvyZZkZ=%Ksa5P2!gP< zPCWSR`YQmo<+5k+)YHBEnAB)M8$J<$)%VUkcLlAIpkA#9SI{#O!x9R=`b22=t|;nBv~5BfBw znzjvyHhTDm0MMFWSfa28bQ^4^jm|GWfuwVVpuS$MymV**Kq(C#{k^DYx$e-o!@3i* zwQ_s@W(VMC>K8ZeF7+1w*z4Q`fxU#?#af(cfKVM&;?{|z*)-swZj|nNzZ;UDmbJFs z3ex0#@D;yhEv=`L1dtsinfO>3pRHXkh;Z!W>#@Y&Tw5C@>ubiZ$%FdY`Mq`{m5S~5 z2ty*r6oK0w$XA3QNs!Y1q>r_}aTgGuLx62Pw6fL|I!^i_H(UV#+v|eax!FZ<%{_P} zRjTcFV>#L!2%)th03%!#gyepcFs9IOp!p()W)UR%Ypa5zKLlVQG{$FZzXCwz)b#HH zmq8+4u4i91-@c6v0hCW2zsDfB6R$QjP(Q4I?Qw+drA=c_W%mF8002ovPDHLkV1fus!kqvB literal 0 HcmV?d00001 From 2cabaa4773672fe5993d7d7db082a8ed97d719db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Lizo=C5=84czyk?= Date: Wed, 8 Jul 2015 09:56:51 +0200 Subject: [PATCH 02/34] Fixing typo in application name --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 67b48d497..0d7eb646c 100755 --- a/src/apps.json +++ b/src/apps.json @@ -3438,7 +3438,7 @@ "script": "munchkin\\.marketo\\.net/munchkin\\.js", "website": "www.marketo.com" }, - "Materalize CSS": { + "Materialize CSS": { "cats": [ 18 ], From 9401988aa4292f00df1ad0069c30260b4c7a41c0 Mon Sep 17 00:00:00 2001 From: Joost de Valk Date: Sat, 11 Jul 2015 11:21:24 +0200 Subject: [PATCH 03/34] Add Yoast SEO --- src/apps.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/apps.json b/src/apps.json index 0d7eb646c..5781c9077 100755 --- a/src/apps.json +++ b/src/apps.json @@ -6552,6 +6552,15 @@ ], "website": "yiiframework.com" }, + "Yoast SEO": { + "cats": [ + 32 + ], + "html": [ + "", + "", + "& zfZ1$r*PO5{oGFbJ$AM0}(Wt*ykukhxc*NU4TVA<9YO@}1(zvag_d91Y>a-;{UXH9c z>e*i!2!-9NQPCVTaKW|E^h>qfk@Y^>VNiN!$cLr)dXwR-|EX(pcjZ1XZeuS0k$dn2 z(^DL$*E1oWE{De`22Lc7MnwoRca4sFVd0o3N+`fAvfh2qkB1<*5-A9ixNWu{?DwM) zARjb#m$#RP2kc~4JKSdJ4Ep4Fp-Y{iQ!qDcmT74qfs_^)5Kj>UC(qNC6Vsj;lk#GI z@GA|w6}Ph4lOH@w=Mp_Cd*1BzX}JG1!D-%=r5%<>9q2W=-*qfAX$uc2vsKFaw(Q2W ztrKl6-?RGq=xxnSmzI1(E9xT5Y|Ylj5lWVXdwEHP@zV5EX$C(nKLZo+C~hE!3gU46 zC0rh#$Kz9bd?|lEMcFe}rvEeK Date: Mon, 13 Jul 2015 14:14:29 +0300 Subject: [PATCH 12/34] Hardcoded vk.com script path that invokes liveinternet counter --- src/apps.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps.json b/src/apps.json index cca728676..b0dce4063 100755 --- a/src/apps.json +++ b/src/apps.json @@ -3295,6 +3295,7 @@ "", " Date: Tue, 14 Jul 2015 14:19:46 +0800 Subject: [PATCH 13/34] OneAPM is an Application Performance Management provider in China http://www.oneapm.com/info/about.html --- src/apps.json | 9 ++++++++- src/icons/OneAPM.png | Bin 0 -> 18599 bytes 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 src/icons/OneAPM.png diff --git a/src/apps.json b/src/apps.json index 1f228333f..92d000258 100755 --- a/src/apps.json +++ b/src/apps.json @@ -3454,7 +3454,7 @@ ], "html": "]* href=\"[^\"]*materialize(?:\\.min)?\\.css", "implies": "jQuery", - "script": "materialize(?:\\.min)?\\.js", + "script": "materialize(?:\\.min)?\\.js", "website": "materializecss.com" }, "MathJax": { @@ -4012,6 +4012,13 @@ "env": "^OneStat", "website": "www.onestat.com" }, + "OneAPM": { + "cats": [ + 10 + ], + "env": "^BWEUM", + "website": "www.oneapm.com" + }, "Open AdStream": { "cats": [ 36 diff --git a/src/icons/OneAPM.png b/src/icons/OneAPM.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4f5314934ad78ec79e85160215ccc230eb456b GIT binary patch literal 18599 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 b9x*@}-vz61gKNw^@oizY&9ubWYv2C^K6xg5 literal 0 HcmV?d00001 From 0f40be3276fcfc8d276325163d0360377164cb03 Mon Sep 17 00:00:00 2001 From: Konstantin Mochalov Date: Tue, 14 Jul 2015 13:03:45 +0300 Subject: [PATCH 14/34] Added Caucho Resin --- src/apps.json | 10 ++++++++++ src/icons/Resin.png | Bin 0 -> 862 bytes 2 files changed, 10 insertions(+) create mode 100644 src/icons/Resin.png diff --git a/src/apps.json b/src/apps.json index 1f228333f..f7262534f 100755 --- a/src/apps.json +++ b/src/apps.json @@ -4746,6 +4746,16 @@ "script": "require.*\\.js", "website": "requirejs.org" }, + "Resin": { + "cats": [ + 22 + ], + "headers": { + "Server": "^Resin(?:/(\\S*))?;version=\\1" + }, + "implies": "Java", + "website": "caucho.com" + }, "Reveal.js": { "cats": [ 12 diff --git a/src/icons/Resin.png b/src/icons/Resin.png new file mode 100644 index 0000000000000000000000000000000000000000..1e26b7269d40fb7516498fbb4e797aba9ca8bbd3 GIT binary patch literal 862 zcmV-k1EKthP)eClUYIjrm^4>{G-8}JVxBfxgE(7+RdbeBbCy;UW&(Fi^yMz!C#BWV2sFQkIH9}%4mY3 zX_L!plgw+B%x;#=Z-}OFiKcRx%W|2{bD7R_n$L8a&vcv5cb(99ozQuZtbLQNexlNV zqtk(xv4WVggP5{~r`3n3)rp<9ik`NNs?v_F*pH&RkFMB}q`Q`{(VDc_p19qiyWgX; z#i+N*sKDW?!s4#P&w*M z%h~PB+U?QV;?myl(%fYz`;OO+? z=k4R??c?h8+t99_UY{L>hJgN@$~Za_VV`n^Y;4l_xtqq`1SYt_V@Ys`1<(y z`uO_%`TG3&`~Ca-{QLa<{QUj={r>&^{r&y^{r>*`{{H{}|J9q0djJ3c0b)x>M340X zgZTge0S`$;K~y-)W9TOU7)FqS-XQ0sK70yFea!74&g75FnVN^o)n#A*Y>)XCjI zOHMT%RY7N*j&-<0QGcZ~P_vqOd{$u(dTdr0CObv|>1bV0uoPg4?lKoIFkNS-q+r{I oML~B=F@({Roz_Zff*Jk_03~1ZBeP6OqyPW_07*qoM6N<$g04Hh<^TWy literal 0 HcmV?d00001 From b2e6b4f066991e2da23a81bb0376edf173f757cb Mon Sep 17 00:00:00 2001 From: Konstantin Mochalov Date: Tue, 14 Jul 2015 13:13:57 +0300 Subject: [PATCH 15/34] Double quotes because .outerHTML always serializes with double quotes --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index b0dce4063..81f003c23 100755 --- a/src/apps.json +++ b/src/apps.json @@ -3293,7 +3293,7 @@ "//counter.yadro.ru/hit(?:;\\S+)?\\?(?:t\\d+\\.\\d+;)?r", "", "", - " Date: Tue, 14 Jul 2015 13:46:31 +0300 Subject: [PATCH 16/34] Better regex for liveinternet + + + + + + + + + +
+
+
+
+
+

Preso Engines

+ "Presentation Engines" +
+
+ +
+
By | CodeLanka
+
+
+
+

+
+
+
+
+
+ + {{presentation.name}} + + + +
{{presentation.website}} + + + + {{presentation.description}} + +
+
+ +

{{presentation.stargazers_count}}

+
+
+ +

{{presentation.watchers_count}}

+
+
+ +

{{presentation.open_issues_count}}

+
+ +
+
+

Github - + {{presentation.github}} +

+

Demo - + {{presentation.demo}} +

+ +

License - {{presentation.license}}

+ +

Language - {{presentation.language}}

+
+
+
+
+
+
+
+
+
+ + + + + + + \ No newline at end of file From 064555fc2e95c195ed44d5cced05600b306adbc4 Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Fri, 17 Jul 2015 13:15:52 +0200 Subject: [PATCH 19/34] Updated to add "TESTING" as the NODE_ENV variable when testing to look for the module in another spot --- src/drivers/npm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/npm/package.json b/src/drivers/npm/package.json index d1131c707..71171aac7 100644 --- a/src/drivers/npm/package.json +++ b/src/drivers/npm/package.json @@ -4,7 +4,7 @@ "description": "NPM Module that uncovers the technologies used on websites", "main": "index.js", "scripts": { - "test": "mocha -t 15000" + "test": "NODE_ENV=testing mocha -t 15000" }, "repository": { "type": "git", From 938ccca7537c5ce8ee794df7e3ce14cfd2e19dad Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Fri, 17 Jul 2015 13:16:11 +0200 Subject: [PATCH 20/34] Added test for the #detectFromHTML method --- src/drivers/npm/test/test.js | 40 +++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/drivers/npm/test/test.js b/src/drivers/npm/test/test.js index ce4426172..8e994d1cc 100644 --- a/src/drivers/npm/test/test.js +++ b/src/drivers/npm/test/test.js @@ -1,4 +1,5 @@ -var assert = require("assert") +var assert = require("assert") +var fs = require('fs') describe('wappalyzer', function(){ describe('detectFromUrl', function(){ @@ -24,4 +25,41 @@ describe('wappalyzer', function(){ }) }) + describe('detectFromHTML', function(){ + it('should have the expected apps detected when passed raw info', function(done){ + + var wappalyzer = require("../index"); + + var expect = ['AngularJS','Font Awesome','Google Font API','Twitter Bootstrap','jQuery']; + + var options={ + url : "http://codelanka.github.io/Presentation-Engines", + hostname:"codelanka.github.io", + debug:false + } + + var data = { + + url: options.url, + headers: require('./sample.headers.json'), + html: fs.readFileSync('./test/sample.html').toString(), + headers: { + + headers: {} + + } + + }; + + wappalyzer.detectFromHTML(options, data, function (err,apps) { + + assert.equal(expect[0], apps[0]); + assert.equal(expect[1], apps[1]); + assert.equal(expect[2], apps[2]); + assert.equal(expect[3], apps[3]); + done(); + }) + + }) + }) }) From cba7d9fa8e8da5dc63b315682d7f9fe72815804d Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Sun, 19 Jul 2015 01:41:46 +0200 Subject: [PATCH 21/34] Updated to use the correct environment variable --- src/drivers/npm/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/npm/index.js b/src/drivers/npm/index.js index 153273a70..b975bb63f 100644 --- a/src/drivers/npm/index.js +++ b/src/drivers/npm/index.js @@ -94,7 +94,7 @@ function runWrappalyer(options, data, cb) { var wappalyzer = null; // change depending on the environment - if( process.env.NODE_ENV ) { + if( process.env.NODE_ENV == 'testing' ) { wappalyzer = require('../../wappalyzer').wappalyzer; From dabee8eaec510b894001c53002a68c41101d5aa1 Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Sun, 19 Jul 2015 02:48:57 +0200 Subject: [PATCH 22/34] Added 2 lines to make a "wappalyzer_npm" build folder that can be sent up to NPM. --- bin/wappalyzer-build | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/wappalyzer-build b/bin/wappalyzer-build index 331ff06d4..78aa462c7 100755 --- a/bin/wappalyzer-build +++ b/bin/wappalyzer-build @@ -17,6 +17,10 @@ jsonlint -ist $'\t' $WAPPALYZER_ROOT/src/apps.json 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..." From 43f9b2511d22e840e2416938e388a7d5578bdaef Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Sun, 19 Jul 2015 05:29:44 +0200 Subject: [PATCH 23/34] Fixed the path issue when packaged to NPM --- src/drivers/npm/index.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/drivers/npm/index.js b/src/drivers/npm/index.js index 153273a70..dd1ed8229 100644 --- a/src/drivers/npm/index.js +++ b/src/drivers/npm/index.js @@ -81,7 +81,20 @@ function getHTMLFromUrl(url, cb) { } function getAppsJson(cb) { - fs.readFile(path.resolve(__dirname, '../../apps.json'), 'utf8', function(err, data) { + + // depending on evironment select a direction to the path + var appsFileStr = path.resolve(__dirname, './apps.json'); + + // handle the environment variable if it's there + if(process.env.NODE_ENV == 'testing') { + + // set the apps.json to testing stage + appsFileStr = path.resolve(__dirname, '../../apps.json'); + + } + + // read in the file + fs.readFile(appsFileStr, 'utf8', function(err, data) { if (err) throw err; return cb(null, JSON.parse(data)); }); From 54b9ce1006a34a9dd3b1d1e10bdc69e319d3868d Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Sun, 19 Jul 2015 05:30:02 +0200 Subject: [PATCH 24/34] Upped with the version with one increment --- src/drivers/npm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/npm/package.json b/src/drivers/npm/package.json index 71171aac7..cff4a2833 100644 --- a/src/drivers/npm/package.json +++ b/src/drivers/npm/package.json @@ -1,6 +1,6 @@ { "name": "wappalyzer", - "version": "2.0.2", + "version": "2.0.3", "description": "NPM Module that uncovers the technologies used on websites", "main": "index.js", "scripts": { From 2406cb2a9c631d5175adb90085f1a7c3256f99ac Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Sun, 19 Jul 2015 05:31:17 +0200 Subject: [PATCH 25/34] Start of changes to README --- src/drivers/npm/README.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/drivers/npm/README.md b/src/drivers/npm/README.md index dbe53753d..2aa2e10ac 100644 --- a/src/drivers/npm/README.md +++ b/src/drivers/npm/README.md @@ -14,8 +14,34 @@ This is npm module for wappalyzer debug:false } + // detect from the url directly, library will make a request wappalyzer.detectFromUrl(options,function (err,apps,appInfo) { - console.log(err,apps,appInfo); + + // output for the test + console.dir(apps); + console.dir(appInfo); + + }) + + var data = { + + url: options.url, + headers: { + + test: 1 + + }, + html: '

HTML CONTENT OF PAGE HERE

' + + }; + + // detect from content you have already + wappalyzer.detectFromHTML(options,function (err,apps,appInfo) { + + // output for the test + console.dir(apps); + console.log(appInfo); + }) From dc9ea3164dd519a1fadd44277e8919aa245ab303 Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Sun, 19 Jul 2015 05:40:11 +0200 Subject: [PATCH 26/34] Updated the readme with new method and new sample along with formatting update to match NPMJS.org --- src/drivers/npm/README.md | 235 ++++++++++++++++++++++---------------- 1 file changed, 138 insertions(+), 97 deletions(-) diff --git a/src/drivers/npm/README.md b/src/drivers/npm/README.md index 2aa2e10ac..93c1794c0 100644 --- a/src/drivers/npm/README.md +++ b/src/drivers/npm/README.md @@ -1,102 +1,139 @@ # Wappalyzer -This is npm module for wappalyzer - - npm install wappalyzer - - - var wappalyzer = require("wappalyzer"); - - - var options={ - url : "http://codelanka.github.io/Presentation-Engines", - hostname:"codelanka.github.io", - debug:false - } - - // detect from the url directly, library will make a request - wappalyzer.detectFromUrl(options,function (err,apps,appInfo) { - - // output for the test - console.dir(apps); - console.dir(appInfo); - - }) - - var data = { - - url: options.url, - headers: { - - test: 1 - - }, - html: '

HTML CONTENT OF PAGE HERE

' - - }; - - // detect from content you have already - wappalyzer.detectFromHTML(options,function (err,apps,appInfo) { - - // output for the test - console.dir(apps); - console.log(appInfo); - - }) - - -####Output - - - null [ 'AngularJS', - 'Font Awesome', - 'Google Font API', - 'jQuery', - 'Twitter Bootstrap' ] { AngularJS: - { app: 'AngularJS', - confidence: - { 'script //([\\d.]+(\\-?rc[.\\d]*)*)/angular(\\.min)?\\.js/i': 100, - 'script /angular.*\\.js/i': 100 }, - confidenceTotal: 100, - detected: true, - excludes: [], - version: '1.3.5', - versions: [ '1.3.5' ] }, - 'Font Awesome': - { app: 'Font Awesome', - confidence: { 'html /]* href=[^>]+font-awesome(?:\\.min)?\\.css/i': 100 }, - confidenceTotal: 100, - detected: true, - excludes: [], - version: '', - versions: [] }, - 'Google Font API': - { app: 'Google Font API', - confidence: { 'html /]* href=[^>]+fonts\\.(?:googleapis|google)\\.com/i': 100 }, - confidenceTotal: 100, - detected: true, - excludes: [], - version: '', - versions: [] }, - jQuery: - { app: 'jQuery', - confidence: { 'script /jquery.*\\.js/i': 100 }, - confidenceTotal: 100, - detected: true, - excludes: [], - version: '', - versions: [] }, - 'Twitter Bootstrap': - { app: 'Twitter Bootstrap', - confidence: - { 'script /(?:twitter\\.github\\.com/bootstrap|bootstrap(?:\\.js|\\.min\\.js))/i': 100, - 'html /HTML CONTENT OF PAGE HERE

' + +}; + +// detect from content you have already +wappalyzer.detectFromHTML(options,function (err,apps,appInfo) { + + // output for the test + console.dir(apps); + console.log(appInfo); + +}) +``` +### Output from QuickStart + +```javascript + +// Apps +[ + 'CloudFlare', + 'Font Awesome', + 'Google Maps', + 'Modernizr', + 'Nginx', + 'RequireJS', + 'jQuery' +] + +// Detailed info on links +{ + CloudFlare: { + app: 'CloudFlare', + confidence: { 'headers Server /cloudflare/i': 100 }, + confidenceTotal: 100, + detected: true, + excludes: [], + version: '', + versions: [] + }, + 'Font Awesome': { + app: 'Font Awesome', + confidence: { 'html /]* href=[^>]+font-awesome(?:\.min)?\.css/i': 100 }, + confidenceTotal: 100, + detected: true, + excludes: [], + version: '', + versions: [] + }, + 'Google Maps': { + app: 'Google Maps', + confidence: { 'script ///maps.googleapis.com/maps/api/js/i': 100 }, + confidenceTotal: 100, + detected: true, + excludes: [], + version: '', + versions: [] }, + 'Modernizr': { + app: 'Modernizr', + confidence: { 'script /modernizr(?:-([\d.]*[\d]))?.*\.js/i': 100 }, + confidenceTotal: 100, + detected: true, + excludes: [], + version: '2.6.2', + versions: [ '2.6.2' ] }, + 'Nginx': { + app: 'Nginx', + confidence: { 'headers Server /nginx(?:/([\d.]+))?/i': 100 }, + confidenceTotal: 100, + detected: true, + excludes: [], + version: '', + versions: [] }, + 'RequireJS': { + app: 'RequireJS', + confidence: { 'script /require.*\.js/i': 100 }, + confidenceTotal: 100, + detected: true, + excludes: [], + version: '', + versions: [] }, + 'jQuery': { + app: 'jQuery', + confidence: + { 'script //([\d.]+)/jquery(\.min)?\.js/i': 100, + 'script /jquery.*\.js/i': 100 }, + confidenceTotal: 100, + detected: true, + excludes: [], + version: '1.10.1', + versions: [ '1.10.1' ] + } +} +``` +## Credits Wappalyzer Author - Elbert Alias @@ -115,8 +152,12 @@ Refer to the [wiki](https://github.com/AliasIO/Wappalyzer/wiki) for [contribute](https://github.com/AliasIO/Wappalyzer/wiki/Contributing) and [more](https://github.com/AliasIO/Wappalyzer/wiki/_pages). +## License + *Licensed under the [GPL](https://github.com/AliasIO/Wappalyzer/blob/master/LICENSE).* +## Donations + Donate Bitcoin: 16gb4uGDAjaeRJwKVmKr2EXa8x2fmvT8EQ - *Thanks!* ![QR Code](https://wappalyzer.com/sites/default/themes/wappalyzer/images/bitcoinqrcode.png) From 9064555dcd93a09aa81c12611fc5e5c6edc74eb6 Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Sun, 19 Jul 2015 05:43:46 +0200 Subject: [PATCH 27/34] Updated the readme credits to reflect who helped --- src/drivers/npm/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/drivers/npm/README.md b/src/drivers/npm/README.md index 93c1794c0..ee90272c2 100644 --- a/src/drivers/npm/README.md +++ b/src/drivers/npm/README.md @@ -135,7 +135,7 @@ wappalyzer.detectFromHTML(options,function (err,apps,appInfo) { ``` ## Credits -Wappalyzer Author - Elbert Alias +### Wappalyzer Author - Elbert Alias [Wappalyzer](https://wappalyzer.com/) is a [cross-platform](https://github.com/AliasIO/Wappalyzer/wiki/Drivers) utility that uncovers the @@ -152,6 +152,11 @@ Refer to the [wiki](https://github.com/AliasIO/Wappalyzer/wiki) for [contribute](https://github.com/AliasIO/Wappalyzer/wiki/Contributing) and [more](https://github.com/AliasIO/Wappalyzer/wiki/_pages). +### NPM Module + +* [Pasindu De Silva](https://github.com/pasindud) - Initial version with tests +* [Johann du Toit](http://johanndutoit.net) from [Passmarked](http://passmarked.com) - Updated to support just passing data and helped publish to NPMJS + ## License *Licensed under the [GPL](https://github.com/AliasIO/Wappalyzer/blob/master/LICENSE).* From 107ce4facf7b20f3ee6e25075e5ff23c8a02c774 Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Sun, 19 Jul 2015 05:45:16 +0200 Subject: [PATCH 28/34] Small formatting update in output code --- src/drivers/npm/README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/drivers/npm/README.md b/src/drivers/npm/README.md index ee90272c2..e7282dd61 100644 --- a/src/drivers/npm/README.md +++ b/src/drivers/npm/README.md @@ -95,7 +95,8 @@ wappalyzer.detectFromHTML(options,function (err,apps,appInfo) { detected: true, excludes: [], version: '', - versions: [] }, + versions: [] + }, 'Modernizr': { app: 'Modernizr', confidence: { 'script /modernizr(?:-([\d.]*[\d]))?.*\.js/i': 100 }, @@ -103,7 +104,8 @@ wappalyzer.detectFromHTML(options,function (err,apps,appInfo) { detected: true, excludes: [], version: '2.6.2', - versions: [ '2.6.2' ] }, + versions: [ '2.6.2' ] + }, 'Nginx': { app: 'Nginx', confidence: { 'headers Server /nginx(?:/([\d.]+))?/i': 100 }, @@ -111,7 +113,8 @@ wappalyzer.detectFromHTML(options,function (err,apps,appInfo) { detected: true, excludes: [], version: '', - versions: [] }, + versions: [] + }, 'RequireJS': { app: 'RequireJS', confidence: { 'script /require.*\.js/i': 100 }, @@ -119,7 +122,8 @@ wappalyzer.detectFromHTML(options,function (err,apps,appInfo) { detected: true, excludes: [], version: '', - versions: [] }, + versions: [] + }, 'jQuery': { app: 'jQuery', confidence: From f653554c05a405dc9b647daacc64ae009daeca7b Mon Sep 17 00:00:00 2001 From: Johann du Toit Date: Sun, 19 Jul 2015 05:48:18 +0200 Subject: [PATCH 29/34] Updated package to reflect package atm. Including moved me and Pasindu to contributors and Elbert to author --- src/drivers/npm/package.json | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/drivers/npm/package.json b/src/drivers/npm/package.json index cff4a2833..a342ed19c 100644 --- a/src/drivers/npm/package.json +++ b/src/drivers/npm/package.json @@ -11,9 +11,20 @@ "url": "https://github.com/AliasIO/Wappalyzer" }, "keywords": [ - "wappalyzer" + "wappalyzer", + "detect", + "stack", + "technologies" ], - "author": "Pasindu De Silva", + "contributors": [ + { + "name": "Pasindu De Silva" + }, + { + "name": "Johann du Toit" + } + ], + "author": "Elbert Alias", "license": "GPLv3", "bugs": { "url": "https://github.com/AliasIO/Wappalyzer/issues" From ab7e7b21095d594edb0e68054738339e16a169d7 Mon Sep 17 00:00:00 2001 From: Elbert Alias Date: Sun, 19 Jul 2015 13:58:12 +1000 Subject: [PATCH 30/34] Updated NPM package name --- src/apps.json | 177 +++++++++++++++++++++++++------------------------- 1 file changed, 90 insertions(+), 87 deletions(-) diff --git a/src/apps.json b/src/apps.json index 415f8d835..453ad68f4 100755 --- a/src/apps.json +++ b/src/apps.json @@ -1304,19 +1304,30 @@ "script": "dhtmlxcommon\\.js", "website": "dhtmlx.com" }, - "Discuz! X": { + "DNN": { "cats": [ - 2 + 1 ], + "env": "^DotNetNuke$", + "headers": { + "Cookie": "dnn_IsMobile=", + "DNNOutputCache": "", + "Set-Cookie": "DotNetNukeAnonymous=", + "X-Compressed-By": "DotNetNuke" + }, + "html": [ + "