diff --git a/README.md b/README.md index 58b1c080d..999048349 100644 --- a/README.md +++ b/README.md @@ -1,139 +1,139 @@ -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). - - -Contributing ------------- - -**Adding a new application** - -* Edit `share/apps.json` -* Add a 16x16 PNG image to `share/images/icons` matching the application name. -* Provide the URL to the application's website when submitting a pull request. - -Example: - -```javascript -"Application Name": { - cats: [ "1" ], - headers: { "X-Powered-By": "Application Name" }, - url: ".+\\.application-name\\.com", - html: "]application-name\\.css", - meta: { "generator": "Application Name" }, - script: "application-name\\.js", - env: "ApplicationName", - implies: [ "PHP" ] - } -``` - - -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 the `links.sh` script (UNIX-like -systems only, Windows users can use `links.cmd`.) - - -**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** - -The Chrome version needs some love, if anyone wants to pick it up. It's -currently not as feature-rich as the Firefox add-on (although partially due to -API limitations.) - -* 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 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 - - -Screenshot ----------- - -Wappalyzer on Firefox: - -![Screenshot](http://wappalyzer.com/sites/default/themes/wappalyzer/images/installed.png) +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). + + +Contributing +------------ + +**Adding a new application** + +* Edit `share/apps.json` and use a validator like http://jsonformatter.curiousconcept.com/ to verify your modification. +* Add a 16x16 PNG image to `share/images/icons` matching the application name and compressed with a loss-less tools like http://www.smushit.com/ or optipng http://optipng.sourceforge.net/. +* Provide the URL to the application's website when submitting a pull request. + +Example: + +```javascript +"Application Name": { + cats: [ "1" ], + headers: { "X-Powered-By": "Application Name" }, + url: ".+\\.application-name\\.com", + html: "]application-name\\.css", + meta: { "generator": "Application Name" }, + script: "application-name\\.js", + env: "ApplicationName", + implies: [ "PHP" ] + } +``` + + +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 the `links.sh` script (UNIX-like +systems only, Windows users can use `links.cmd`.) + + +**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** + +The Chrome version needs some love, if anyone wants to pick it up. It's +currently not as feature-rich as the Firefox add-on (although partially due to +API limitations.) + +* 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 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 + + +Screenshot +---------- + +Wappalyzer on Firefox: + +![Screenshot](http://wappalyzer.com/sites/default/themes/wappalyzer/images/installed.png) \ No newline at end of file diff --git a/drivers/bookmarklet/images/icons/AsciiDoc.png b/drivers/bookmarklet/images/icons/AsciiDoc.png new file mode 100644 index 000000000..8b04896aa Binary files /dev/null and b/drivers/bookmarklet/images/icons/AsciiDoc.png differ diff --git a/drivers/bookmarklet/images/icons/Lockerz Share.png b/drivers/bookmarklet/images/icons/Lockerz Share.png new file mode 100644 index 000000000..8ea656e36 Binary files /dev/null and b/drivers/bookmarklet/images/icons/Lockerz Share.png differ diff --git a/drivers/bookmarklet/images/icons/phpwind.png b/drivers/bookmarklet/images/icons/phpwind.png new file mode 100644 index 000000000..510dc2b89 Binary files /dev/null and b/drivers/bookmarklet/images/icons/phpwind.png differ diff --git a/drivers/bookmarklet/json b/drivers/bookmarklet/json index d6979e676..68a3f0a60 100644 --- a/drivers/bookmarklet/json +++ b/drivers/bookmarklet/json @@ -53,7 +53,7 @@ "3dCart": { "cats": [ 1, 6 ], "headers": { "X-Powered-By": "3DCART" }, - "script": "(twlh(track)?\\.asp|3d_upsell.js)" + "script": "(twlh(track)?\\.asp|3d_upsell\\.js)" }, "Accessible Portal": { "cats": [ 1 ], @@ -77,7 +77,7 @@ }, "Advanced Web Stats": { "cats": [ 10 ], - "html": "aws.src = [^<]+caphyon-analytics", + "html": "aws\\.src = [^<]+caphyon-analytics", "implies": [ "Java" ] }, "Alloy": { @@ -87,7 +87,7 @@ "Ametys": { "cats": [ 1 ], "meta": { "generator": "(Ametys|Anyware Technologies)" }, - "script": "STools.js", + "script": "STools\\.js", "implies": [ "Java" ] }, "Amiro.CMS": { @@ -99,7 +99,7 @@ "AMPcms": { "cats": [ 1 ], "headers": { "X-AMP-Version": ".*", "Set-Cookie": "AMP=" }, - "env": "amp_js_init", + "env": "^amp_js_init$", "implies": [ "PHP" ] }, "AngularJS": { @@ -112,7 +112,7 @@ }, "Apache": { "cats": [ 22 ], - "headers": { "Server": "(Apache($|[^-])|HTTPD)" } + "headers": { "Server": "(Apache($|[^-])|HTTPD)" } }, "Apache JSPWiki": { "cats": [ 8 ], @@ -122,7 +122,7 @@ }, "Apache Tomcat": { "cats": [ 22 ], - "headers": { "Server": "Apache-Coyote" } + "headers": { "Server": "Apache-Coyote" } }, "Apache Traffic Server": { "cats": [ 22 ], @@ -132,6 +132,11 @@ "cats": [ 2 ], "html": "ping\\.src = node\\.href;" }, + "AsciiDoc": { + "cats": [ 1, 20, 27 ], + "meta": { "generator": "^AsciiDoc" }, + "env": "^asciidoc$" + }, "ATG Web Commerce": { "cats": [ 6 ], "headers": { "X-ATG-Version": "ATG" }, @@ -171,11 +176,11 @@ "implies": [ "PHP" ] }, "Bigcommerce": { - "cats": [ 6 ], + "cats": [ 6 ], "url": ".+\\.mybigcommerce\\.com", "html": "]+Cargo feed", "implies": [ "PHP" ] @@ -250,7 +254,8 @@ }, "Chamilo": { "cats": [ 21 ], - "meta": { "generator": "Chamilo" }, "headers": { "X-Powered-By": "Chamilo" }, + "meta": { "generator": "Chamilo" }, + "headers": { "X-Powered-By": "Chamilo" }, "implies": [ "PHP" ] }, "Chartbeat": { @@ -259,7 +264,8 @@ }, "Cherokee": { "cats": [ 22 ], - "headers": { "Server": "Cherokee" } }, + "headers": { "Server": "Cherokee" } + }, "CKEditor": { "cats": [ 24 ], "env": "^CKEDITOR$", @@ -314,7 +320,7 @@ "cats": [ 1 ], "script": "concrete/js/", "meta": { "generator": "concrete5" }, - "env": "CCM_IMAGE_PATH", + "env": "^CCM_IMAGE_PATH$", "implies": [ "PHP" ] }, "Connect": { @@ -324,7 +330,7 @@ }, "Contao": { "cats": [ 1, 6 ], - "html": "(|]+(typolight|contao).css)", + "html": "(|]+(typolight|contao)\\.css)", "implies": [ "PHP" ] }, "Contenido": { @@ -372,7 +378,7 @@ }, "Crazy Egg": { "cats": [ 10 ], - "env": "CE2", + "env": "^CE2$", "script": "cetrk\\.com/pages/scripts/\\d+/\\d+\\.js" }, "Cross Pixel": { @@ -382,7 +388,7 @@ }, "CS Cart": { "cats": [ 6 ], - "env": "fn_compare_strings", + "env": "^fn_compare_strings$", "html": " Powered by (]+demandware.edgesuite", - "env": "^dwAnalytics" + "env": "^dwAnalytics$" }, "DHTMLX": { "cats": [ 12 ], @@ -455,7 +461,7 @@ "cats": [ 15 ], "script": "disqus_url", "html": "]+id=\\\"disqus_thread\\\"", - "env": "^DISQUS" + "env": "^DISQUS$" }, "Django": { "cats": [ 18 ], @@ -490,7 +496,7 @@ "meta": { "generator": "DotNetNuke" }, "headers": { "X-Compressed-By": "DotNetNuke", "Set-Cookie": "DotNetNukeAnonymous=.+" }, "html": "|]+(typolight|contao).css)", + "html": "(|]+(typolight|contao)\\.css)", "implies": [ "PHP" ] }, "Contenido": { @@ -372,7 +378,7 @@ }, "Crazy Egg": { "cats": [ 10 ], - "env": "CE2", + "env": "^CE2$", "script": "cetrk\\.com/pages/scripts/\\d+/\\d+\\.js" }, "Cross Pixel": { @@ -382,7 +388,7 @@ }, "CS Cart": { "cats": [ 6 ], - "env": "fn_compare_strings", + "env": "^fn_compare_strings$", "html": " Powered by (]+demandware.edgesuite", - "env": "^dwAnalytics" + "env": "^dwAnalytics$" }, "DHTMLX": { "cats": [ 12 ], @@ -455,7 +461,7 @@ "cats": [ 15 ], "script": "disqus_url", "html": "]+id=\\\"disqus_thread\\\"", - "env": "^DISQUS" + "env": "^DISQUS$" }, "Django": { "cats": [ 18 ], @@ -490,7 +496,7 @@ "meta": { "generator": "DotNetNuke" }, "headers": { "X-Compressed-By": "DotNetNuke", "Set-Cookie": "DotNetNukeAnonymous=.+" }, "html": "|]+(typolight|contao).css)", + "html": "(|]+(typolight|contao)\\.css)", "implies": [ "PHP" ] }, "Contenido": { @@ -372,7 +378,7 @@ }, "Crazy Egg": { "cats": [ 10 ], - "env": "CE2", + "env": "^CE2$", "script": "cetrk\\.com/pages/scripts/\\d+/\\d+\\.js" }, "Cross Pixel": { @@ -382,7 +388,7 @@ }, "CS Cart": { "cats": [ 6 ], - "env": "fn_compare_strings", + "env": "^fn_compare_strings$", "html": " Powered by (]+demandware.edgesuite", - "env": "^dwAnalytics" + "env": "^dwAnalytics$" }, "DHTMLX": { "cats": [ 12 ], @@ -455,7 +461,7 @@ "cats": [ 15 ], "script": "disqus_url", "html": "]+id=\\\"disqus_thread\\\"", - "env": "^DISQUS" + "env": "^DISQUS$" }, "Django": { "cats": [ 18 ], @@ -490,7 +496,7 @@ "meta": { "generator": "DotNetNuke" }, "headers": { "X-Compressed-By": "DotNetNuke", "Set-Cookie": "DotNetNukeAnonymous=.+" }, "html": "|]+(typolight|contao).css)", + "html": "(|]+(typolight|contao)\\.css)", "implies": [ "PHP" ] }, "Contenido": { @@ -372,7 +378,7 @@ }, "Crazy Egg": { "cats": [ 10 ], - "env": "CE2", + "env": "^CE2$", "script": "cetrk\\.com/pages/scripts/\\d+/\\d+\\.js" }, "Cross Pixel": { @@ -382,7 +388,7 @@ }, "CS Cart": { "cats": [ 6 ], - "env": "fn_compare_strings", + "env": "^fn_compare_strings$", "html": " Powered by (]+demandware.edgesuite", - "env": "^dwAnalytics" + "env": "^dwAnalytics$" }, "DHTMLX": { "cats": [ 12 ], @@ -455,7 +461,7 @@ "cats": [ 15 ], "script": "disqus_url", "html": "]+id=\\\"disqus_thread\\\"", - "env": "^DISQUS" + "env": "^DISQUS$" }, "Django": { "cats": [ 18 ], @@ -490,7 +496,7 @@ "meta": { "generator": "DotNetNuke" }, "headers": { "X-Compressed-By": "DotNetNuke", "Set-Cookie": "DotNetNukeAnonymous=.+" }, "html": "|]+(typolight|contao).css)", + "html": "(|]+(typolight|contao)\\.css)", "implies": [ "PHP" ] }, "Contenido": { @@ -372,7 +378,7 @@ }, "Crazy Egg": { "cats": [ 10 ], - "env": "CE2", + "env": "^CE2$", "script": "cetrk\\.com/pages/scripts/\\d+/\\d+\\.js" }, "Cross Pixel": { @@ -382,7 +388,7 @@ }, "CS Cart": { "cats": [ 6 ], - "env": "fn_compare_strings", + "env": "^fn_compare_strings$", "html": " Powered by (]+demandware.edgesuite", - "env": "^dwAnalytics" + "env": "^dwAnalytics$" }, "DHTMLX": { "cats": [ 12 ], @@ -455,7 +461,7 @@ "cats": [ 15 ], "script": "disqus_url", "html": "]+id=\\\"disqus_thread\\\"", - "env": "^DISQUS" + "env": "^DISQUS$" }, "Django": { "cats": [ 18 ], @@ -490,7 +496,7 @@ "meta": { "generator": "DotNetNuke" }, "headers": { "X-Compressed-By": "DotNetNuke", "Set-Cookie": "DotNetNukeAnonymous=.+" }, "html": "|]+(typolight|contao).css)", + "html": "(|]+(typolight|contao)\\.css)", "implies": [ "PHP" ] }, "Contenido": { @@ -372,7 +378,7 @@ }, "Crazy Egg": { "cats": [ 10 ], - "env": "CE2", + "env": "^CE2$", "script": "cetrk\\.com/pages/scripts/\\d+/\\d+\\.js" }, "Cross Pixel": { @@ -382,7 +388,7 @@ }, "CS Cart": { "cats": [ 6 ], - "env": "fn_compare_strings", + "env": "^fn_compare_strings$", "html": " Powered by (]+demandware.edgesuite", - "env": "^dwAnalytics" + "env": "^dwAnalytics$" }, "DHTMLX": { "cats": [ 12 ], @@ -455,7 +461,7 @@ "cats": [ 15 ], "script": "disqus_url", "html": "]+id=\\\"disqus_thread\\\"", - "env": "^DISQUS" + "env": "^DISQUS$" }, "Django": { "cats": [ 18 ], @@ -490,7 +496,7 @@ "meta": { "generator": "DotNetNuke" }, "headers": { "X-Compressed-By": "DotNetNuke", "Set-Cookie": "DotNetNukeAnonymous=.+" }, "html": "|]+(typolight|contao).css)", + "html": "(|]+(typolight|contao)\\.css)", "implies": [ "PHP" ] }, "Contenido": { @@ -372,7 +378,7 @@ }, "Crazy Egg": { "cats": [ 10 ], - "env": "CE2", + "env": "^CE2$", "script": "cetrk\\.com/pages/scripts/\\d+/\\d+\\.js" }, "Cross Pixel": { @@ -382,7 +388,7 @@ }, "CS Cart": { "cats": [ 6 ], - "env": "fn_compare_strings", + "env": "^fn_compare_strings$", "html": " Powered by (]+demandware.edgesuite", - "env": "^dwAnalytics" + "env": "^dwAnalytics$" }, "DHTMLX": { "cats": [ 12 ], @@ -455,7 +461,7 @@ "cats": [ 15 ], "script": "disqus_url", "html": "]+id=\\\"disqus_thread\\\"", - "env": "^DISQUS" + "env": "^DISQUS$" }, "Django": { "cats": [ 18 ], @@ -490,7 +496,7 @@ "meta": { "generator": "DotNetNuke" }, "headers": { "X-Compressed-By": "DotNetNuke", "Set-Cookie": "DotNetNukeAnonymous=.+" }, "html": "