Wappalyzer is a browser extension that uncovers the technologies used on websites. It detects content management systems, web shops, web servers, JavaScript frameworks, analytics tools and many more.
Licensed under the GPL.
- Edit
share/apps.json
(use a JSON validator). - Add a 16x16 PNG image to
share/images/icons
matching the application name (use Smush.it or OptiPNG for compression). - Provide the URL to the application's website when submitting a pull request.
Please open an issue to discuss first. Adding a category involves updating apps.json
,
preference pages, locales and wappalyzer.com.
Copy drivers/firefox/locale/en-US
.
Copy drivers/chrome/_locales/en
.
"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:50\\;version:\\1",
"env": "ApplicationName",
"implies": "PHP\\;confidence:50",
}
field | type | description |
---|---|---|
cats | array | List of category IDs. See 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 are case insensitive 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. |
The confidence field can also be applied to the implied
field.
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. |
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).
- Place a file called
wappalyzer@crunchlabz.com
in the extensions directory in your profile folder (~/.mozilla/firefox/xxxxx.default/extensions/
on Linux) containing the full path todrivers/firefox
. - Restart Firefox
- Navigate to
about:config
and setextensions.wappalyzer.debug
totrue
. - Ctrl+Shift+J brings up a console for debugging.
- Navigate to
about:extensions
- Check "Developer mode"
- Click "Load unpacked extension..."
- Select
drivers/chrome/
Beta version available for testing at wappalyzer.com/bookmarklet.
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/
The PHP driver requires the V8js class. Installing V8js using PECL 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:
require('WappalyzerException.php');
require('Wappalyzer.php');
$wappalyzer = new Wappalyzer($url);
$detectedApps = $wappalyzer->analyze();
Work in progress, experimental. See https://wiki.mozilla.org/Jetpack.
A Python port by SebastianLopienski. Part of a research project at CERN.
https://github.com/SebastianLopienski/WAD
A Python driver by @ebradbury.
https://github.com/ebradbury/Wappalyzer/tree/master/drivers/python
A Ruby port by @skroutz.
https://github.com/skroutz/wappalyzer-ruby
Wappalyzer on Mozilla Firefox:
Wappalyzer on Google Chrome: