# Wappalyzer
[Wappalyzer ](http://wappalyzer.com/ ) is a
[browser extension ](http://wappalyzer.com/download ) that uncovers the
technologies used on websites. It detects
[content management systems ](http://wappalyzer.com/categories/cms ),
[web shops ](http://wappalyzer.com/categories/web-shops ),
[web servers ](http://wappalyzer.com/categories/web-servers ),
[JavaScript frameworks ](http://wappalyzer.com/categories/javascript-frameworks ),
[analytics tools ](http://wappalyzer.com/categories/analytics ) and
[many more ](http://wappalyzer.com/applications ).
*Licensed under the [GPL ](https://github.com/ElbertF/Wappalyzer/blob/master/LICENSE ).*
## Contributing
### Adding a new application
* Edit `share/apps.json` (use a JSON
[validator ](http://jsonformatter.curiousconcept.com )).
* Add a 16x16 PNG image to `share/images/icons` matching the application name
(use [Smush.it ](http://www.smushit.com ) or
[OptiPNG ](http://optipng.sourceforge.net ) for compression).
* Provide the URL to the application's website when submitting a pull request.
### Adding a new category
Please open an issue to discuss first. Adding a category involves updating `apps.json` ,
preference pages, locales and [wappalyzer.com ](http://wappalyzer.com ).
### Adding a new translation
#### Mozilla Firefox
Copy `drivers/firefox/locale/en-US` .
#### Google Chrome
Copy `drivers/chrome/_locales/en` .
## apps.json
#### Example
```javascript
"Application Name": {
"cats": [ 1 ],
"headers": { "X-Powered-By": "Application Name" },
"url": ".+\\.application-name\\.com",
"html": "< link [^ > ]application-name\\.css",
"meta": { "generator": [ "Application Name", "Alternative Application Name" ] },
"script": "application-name-([0-9.]+)\\.js\\;confidence:100\\;version:\\1",
"env": "ApplicationName",
"implies": [ "PHP" ],
}
```
### JSON fields
field | type | description
-----------|--------|------------
cats | array | List of category IDs. See [apps.json ](https://github.com/ElbertF/Wappalyzer/blob/master/share/apps.json ) for the complete list.
env | string | Global JavaScript variables, e.g. `jQuery` .
headers | object | HTTP Response headers, e.g. `X-Powered-By` .
html | string | Full HTML response body.
implies | array | The presence of one application can imply the presence of another, e.g. Drupal means PHP is also in use.
url | string | URL of the page, e.g. `http://wordpress.com/index.php` .
meta | object | HTML meta tags, e.g. `generator` .
script | string | `src` attribute of HTML script tags, e.g. `jquery.js` .
Except `cats` , all fields are optional.
Except `cats` and `implied` all fields except one or more patterns (either a string or an array of regular expressions).
### Patterns
Patterns are case insensitive [regular expressions ](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions ). No surrounding delimiters or flags are used.
Optional fields can be added, separated by `\\;` :
field | description
-----------|------------
confidence | Indicates less reliable patterns that may cause false positives. The aim is to achieve a combined confidence of 100%. Defaults to 100% for unspecified fields.
version | Gets the version number from a pattern match using a special syntax.
#### Version syntax
example | description
-----------|------------
`\\1` | Returns the first match
`\\1?a:` | Returns `a` if the first match contains a value, nothing otherwise
`\\1?a:b` | Returns `a` if the first match contains a value, `b` otherwise
`\\1?:b` | Returns nothing if the first match contains a value, `b` otherwise
`foo\\1` | Returns `foo` with the first match appended.
## Drivers
Wappalyzer is multi-platform. The main code lives in the `share/` directory and
platform specific code in `drivers/` . The sections below describe how to set up
a development environment for the various existing drivers.
To keep files synchronised between drivers, run `links.sh` (UNIX-like systems)
or `links.cmd` (Windows).
### Mozilla Firefox
* Place a file called `wappalyzer@crunchlabz.com` in the extensions directory in
your [profile folder ](http://kb.mozillazine.org/Profile_folder_-_Firefox )
(`~/.mozilla/firefox/xxxxx.default/extensions/` on Linux) containing the full
path to `drivers/firefox` .
* Restart Firefox
* Navigate to `about:config` and set `extensions.wappalyzer.debug` to `true` .
* Ctrl+Shift+J brings up a console for debugging.
### Google Chrome
* Navigate to `about:extensions`
* Check "Developer mode"
* Click "Load unpacked extension..."
* Select `drivers/chrome/`
### Bookmarklet
Beta version available for testing at
[wappalyzer.com/bookmarklet ](http://wappalyzer.com/bookmarklet ).
### HTML
The HTML driver serves purely as an example. It's a good starting point if you
want to port Wappalyzer to a new platform.
* Navigate to `drivers/html/`
### PHP
The PHP driver requires the [V8js ](http://php.net/manual/en/book.v8js.php )
class. Installing V8js using [PECL ](http://pecl.php.net/ ) on Debian Linux or
Ubuntu should be very straight forward:
* `# aptitude install php5-dev php-pear libv8-dev`
* `# pecl install channel://pecl.php.net/v8js-0.1.3`
* `# echo "extension=v8js.so" > /etc/php5/conf.d/v8js.ini`
Runnning Wappalyzer from the command line:
`$ php drivers/php/index.php wappalyzer.com`
Running Wappalyzer inside a PHP script:
```php
require('WappalyzerException.php');
require('Wappalyzer.php');
$wappalyzer = new Wappalyzer($url);
$detectedApps = $wappalyzer->analyze();
```
### Mozilla Jetpack
Work in progress, experimental. See https://wiki.mozilla.org/Jetpack.
## Unofficial drivers and ports
### Python
A Python port by [SebastianLopienski ](https://github.com/SebastianLopienski ). Part of a research project at [CERN ](http://cern.ch ).
https://github.com/SebastianLopienski/WAD
### Python
A Python driver by [@ebradbury ](https://github.com/ebradbury ).
https://github.com/ebradbury/Wappalyzer/tree/master/drivers/python
### Ruby
A Ruby port by [@skroutz ](https://github.com/skroutz ).
https://github.com/skroutz/wappalyzer-ruby
## Screenshots
Wappalyzer on Mozilla Firefox:
![A screenshot of Wappalyzer on Mozilla Firefox ](http://wappalyzer.com/sites/default/themes/wappalyzer/images/installed_firefox.png )
Wappalyzer on Google Chrome:
![A screenshot of Wappalyzer on Google Chrome ](http://wappalyzer.com/sites/default/themes/wappalyzer/images/installed_chrome.png )