# Wappalyzer

[Wappalyzer](https://www.wappalyzer.com/) is a
[cross-platform](https://github.com/AliasIO/Wappalyzer/wiki/Drivers) utility that uncovers the
technologies used on websites. It detects
[content management systems](https://www.wappalyzer.com/categories/cms),
[eCommerce platforms](https://www.wappalyzer.com/categories/ecommerce),
[web servers](https://www.wappalyzer.com/categories/web-servers),
[JavaScript frameworks](https://www.wappalyzer.com/categories/javascript-frameworks),
[analytics tools](https://www.wappalyzer.com/categories/analytics) and
[many more](https://www.wappalyzer.com/applications).


## Installation

```shell
$ npm i wappalyzer
```


## Run from the command line

```
node index.js [url] [options]
```

### Options

```
	--password           Password to be used for basic HTTP authentication
	--proxy              Proxy URL, e.g. 'http://user:pass@proxy:8080'
	--username           Username to be used for basic HTTP authentication
  --chunk-size=num     Process links in chunks.
  --debug=0|1          Output debug messages.
  --delay=ms           Wait for ms milliseconds between requests.
  --html-max-cols=num  Limit the number of HTML characters per line processed.
  --html-max-rows=num  Limit the number of HTML lines processed.
  --max-depth=num      Don't analyse pages more than num levels deep.
  --max-urls=num       Exit when num URLs have been analysed.
  --max-wait=ms        Wait no more than ms milliseconds for page resources to load.
  --recursive=0|1      Follow links on pages (crawler).
  --user-agent=str     Set the user agent string.
```


## Run from a script

```javascript
const Wappalyzer = require('./driver');
const Browser = require('./browsers/zombie');

const options = {
  debug: false,
  delay: 500,
  maxDepth: 3,
  maxUrls: 10,
  maxWait: 5000,
  recursive: true,
  userAgent: 'Wappalyzer',
  htmlMaxCols: 2000,
  htmlMaxRows: 2000,
};

const wappalyzer = new Wappalyzer(Browser, 'https://www.wappalyzer.com', options);

// Optionally override the default logger
// wappalyzer.log = (message, source, type) => console.log(message);

wappalyzer.analyze()
  .then(json => {
    process.stdout.write(`${JSON.stringify(json, null, 2)}\n`);

    process.exit(0);
  })
  .catch(error => {
    process.stderr.write(`${error}\n`);

    process.exit(1);
});
```
