diff --git a/.gitignore b/.gitignore
index 4976d3661..bb1fc0562 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,5 @@ wappalyzer.xpi
!.gitkeep
node_modules/*
+
+drivers/npm/node_modules/
diff --git a/drivers/npm/.gitignore b/drivers/npm/.gitignore
new file mode 100644
index 000000000..c7273df57
--- /dev/null
+++ b/drivers/npm/.gitignore
@@ -0,0 +1,3 @@
+wappalyzer.js
+apps.json
+node_modules/
diff --git a/drivers/npm/README.md b/drivers/npm/README.md
new file mode 100644
index 000000000..8aa96b834
--- /dev/null
+++ b/drivers/npm/README.md
@@ -0,0 +1,96 @@
+# 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
+ }
+
+ wappalyzer.detectFromUrl(options,function (err,apps,appInfo) {
+ console.log(err,apps,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 /; rel=shortlink"
+ "Link": "; rel=shortlink"
},
"implies": [ "Python", "Solr", "Java", "PostgreSQL\\;confidence:80" ]
},
@@ -778,6 +778,12 @@
"cats": [ 22 ],
"headers": { "Server": "CouchDB/([\\d.]+)\\;version:\\1" }
},
+ "Cowboy": {
+ "website": "ninenines.eu",
+ "cats": [ 18, 22 ],
+ "headers": { "Server": "Cowboy" },
+ "implies": "Erlang"
+ },
"cPanel": {
"website": "www.cpanel.net",
"cats": [ 9 ],
@@ -1064,6 +1070,11 @@
"headers": { "Server": "\\beHTTP(?: v?([\\d\\.]+))?\\;version:\\1" },
"implies": "HP ProCurve"
},
+ "Elm": {
+ "website": "elm-lang.org",
+ "cats": [ 27, 12 ],
+ "env": "^Elm$"
+ },
"ELOG": {
"website": "midas.psi.ch/elog",
"cats": [ 19 ],
@@ -1442,7 +1453,7 @@
"Google PageSpeed": {
"website": "developers.google.com/speed/pagespeed/mod",
"cats": [ 23, 33 ],
- "headers": { "X-Mod-Pagespeed": "([\\d.]+)\\;version:\\1" }
+ "headers": { "X-Mod-Pagespeed": "([\\d.]+)\\;version:\\1", "X-Page-Speed": "(.+)\\;version:\\1" }
},
"Google Sites": {
"website": "sites.google.com",
@@ -3054,6 +3065,11 @@
"cats": [ 22 ],
"headers": { "Server": "RAID HTTPServer(?:/([\\d.]+))?\\;version:\\1" }
},
+ "Ramda": {
+ "website": "ramdajs.com",
+ "cats": [ 12 ],
+ "script": "ramda.*\\.js"
+ },
"Raphael": {
"website": "raphaeljs.com",
"cats": [ 25 ],
@@ -3159,6 +3175,12 @@
"headers": { "Server": "(?:mod_rails|mod_rack|Phusion(?:\\.|_)Passenger)\\;confidence:50", "X-Powered-By": "(?:mod_rails|mod_rack|Phusion[\\._ ]Passenger)(?: \\(mod_rails/mod_rack\\))?(?: ?/?([\\d\\.]+))?\\;version:\\1\\;confidence:50" },
"implies": "Ruby"
},
+ "RxJS" : {
+ "website": "reactive-extensions.github.io/RxJS/",
+ "cats": [ 12 ],
+ "script": "rx(?:\\.\\w+)?(?:\\.compat)?(?:\\.min)?\\.js",
+ "env": "^Rx$\\;confidence:20"
+ },
"S.Builder": {
"website": "www.sbuilder.ru",
"cats": [ 1 ],
@@ -3488,6 +3510,14 @@
"headers": { "X-ServedBy": "squarespace" },
"env": "^Squarespace"
},
+ "SquirrelMail": {
+ "website": "squirrelmail.org",
+ "cats": [ 30 ],
+ "html": "SquirrelMail version ([.\\d]+)[^<]*