6.4 KiB
Wappalyzer
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.
Contributing
Adding a new application
- 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.
Adding a new category
Please open an issue to discuss first. Adding a category involves updating apps.json
,
preference pages, locales and wappalyzer.com.
Adding a new translation
Mozilla Firefox
Copy drivers/firefox/locale/en-US
.
Google Chrome
Copy drivers/chrome/_locales/en
.
apps.json
Example
"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 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. 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 (~/.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.
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.
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 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();
Mozilla Jetpack
Work in progress, experimental. See https://wiki.mozilla.org/Jetpack.
Unofficial drivers and ports
Python
A Python port by SebastianLopienski. Part of a research project at CERN.
https://github.com/SebastianLopienski/WAD
Python
A Python driver by @ebradbury.
https://github.com/ebradbury/Wappalyzer/tree/master/drivers/python
Ruby
A Ruby port by @skroutz.
https://github.com/skroutz/wappalyzer-ruby
Screenshots
Wappalyzer on Mozilla Firefox:
Wappalyzer on Google Chrome: