Merge pull request #920 from passmarked/master

Various updates to work/fit nicely on NPMJS.org
main
Elbert Alias 10 years ago
commit 6d3ffa7599

@ -1,78 +1,145 @@
# 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 /<link[^>]* href=[^>]+font-awesome(?:\\.min)?\\.css/i': 100 },
confidenceTotal: 100,
detected: true,
excludes: [],
version: '',
versions: [] },
'Google Font API':
{ app: 'Google Font API',
confidence: { 'html /<link[^>]* 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 /<link.+?href="[^"]+bootstrap(?:\\.min)?\\.css/i': 100 },
confidenceTotal: 100,
detected: true,
excludes: [],
version: '',
versions: [] } }
Wappalyzer Author - Elbert Alias
## Install
Install wappalyzer from NPM with:
```bash
npm install wappalyzer
```
## Quickstart
```javascript
// load in the lib
var wappalyzer = require("wappalyzer");
// set our options
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);
})
// sample data
var data = {
url: options.url,
headers: {
test: 1
},
html: '<p>HTML CONTENT OF PAGE HERE</p>'
};
// 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 /<link[^>]* 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
[Wappalyzer](https://wappalyzer.com/) is a
[cross-platform](https://github.com/AliasIO/Wappalyzer/wiki/Drivers) utility that uncovers the
@ -89,8 +156,17 @@ 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).*
## Donations
Donate Bitcoin: 16gb4uGDAjaeRJwKVmKr2EXa8x2fmvT8EQ - *Thanks!*
![QR Code](https://wappalyzer.com/sites/default/themes/wappalyzer/images/bitcoinqrcode.png)

@ -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));
});

@ -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": {
@ -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"