You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

156 lines
3.9 KiB

#! /usr/bin/python
# -*- coding: utf-8 -*-
from wappalyzer import Wappalyzer
TESTS = [
{
'url': 'http://www.hardgraft.com',
'apps': ['jQuery', 'Shopify', 'Nginx']
},
{
'url': 'http://its.bplaced.net',
'apps': ['WordPress', 'jQuery', 'Apache']
},
{
'url': 'http://www.bodybuilding.com/',
'apps': ['jQuery', 'Optimizely', 'SiteCatalyst', 'Apache Tomcat']
},
{
'url': 'http://guidedhelp21.weebly.com/',
'apps': ['Weebly', 'Apache', 'Quantcast', 'Google Analytics', 'jQuery']
},
{
'url': 'http://www.bancadelparque.com/',
'apps': ['Wix', 'Twitter Bootstrap']
},
{
'url': 'http://joomla.ru/',
'apps': ['Joomla', 'jQuery', 'MooTools', 'Yandex.Metrika', 'LiteSpeed']
},
{
'url': 'http://demoshop21.e-stile.ru/',
'apps': ['SiteEdit', 'PHP']
},
{
'url': 'http://umbraco.com',
'apps': ['Umbraco', 'IIS', 'Microsoft ASP.NET']
},
{
'url': 'http://johnsciacca.webs.com/',
'apps': ['Webs', 'RequireJS', 'Site Meter', 'Modernizr']
},
{
'url': 'http://www.1c-bitrix.ru/',
'apps': ['1C-Bitrix', 'Yandex.Metrika']
},
{
'url': 'http://amirocms.com',
'apps': ['Amiro.CMS']
},
{
'url': 'http://dle-news.ru',
'apps': ['DataLife Engine', 'CloudFlare']
},
{
'url': 'http://dotnetnuke.com',
'apps': ['DotNetNuke', 'Microsoft ASP.NET']
},
{
'url': 'http://www.schooldude.com',
'apps': ['DotNetNuke', 'Microsoft ASP.NET']
},
{
'url': 'http://www.sportsdirect.com/',
'apps': ['DotNetNuke', 'Microsoft ASP.NET']
},
{
'url': 'http://drupal.org',
'apps': ['Drupal', 'Varnish']
},
{
'url': 'http://www.komodocms.com/',
'apps': ['Komodo CMS']
},
{
'url': 'http://livestreetcms.com/',
'apps': ['LiveStreet CMS']
},
{
'url': 'http://modxcms.com/',
'apps': ['MODx']
},
{
'url': 'http://modx.ru/',
'apps': ['MODx']
},
{
'url': 'http://revo.modx.ru/',
'apps': ['MODx']
},
{
'url': 'http://www.punchbrand.com',
'apps': ['CS Cart']
},
{
'url': 'http://demo.cs-cart.com/',
'apps': ['CS Cart']
},
{
'url': 'https://livedemo.installatron.com/1404307206magento/',
'apps': ['Magento']
},
{
'url': 'http://livedemo.installatron.com/1404300689prestashop/',
'apps': ['Prestashop']
},
{
'url': 'http://demo.opencart.com/',
'apps': ['OpenCart']
},
{
'url': 'https://livedemo.installatron.com/1404307206oscommerce/',
'apps': ['osCommerce']
},
{
'url': 'http://www.ubercartdemo.com/',
'apps': ['Ubercart']
},
{
'url': 'http://demostore.x-cart.com/',
'apps': ['X-Cart']
},
{
'url': 'https://livedemo.installatron.com/1404307206zencart/',
'apps': ['Zen Cart']
},
{
'url': 'http://oreonfray83.wordpress.com',
'apps': ['WordPress.Com']
},
{
'url': 'http://www.try-phpbb.com/30x/',
'apps': ['phpBB']
},
]
def test():
wappalyzer = Wappalyzer(datafile_path='../../share/apps.json')
for site in TESTS:
print 'testing %s ...' % site['url']
result = wappalyzer.analyze(site['url'])
for app in site['apps']:
found = result.pop(app, None)
if found:
print '\t%s\t- ok\tconfidence=%d' % (app, found.get_confidence())
else:
print '\t%s\t- NOT FOUND' % (app)
return
if result:
print '\tUNEXPECTED APPS:'
for app_name, app in result.iteritems():
print '\t\t%s\t- ok\tconfidence=%d' % (app_name, app.get_confidence())
if __name__ == '__main__':
test()