#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import PyV8 import requests from urlparse import urlparse try: import json except ImportError: import simplejson as json class Wappalyzer(object): def __init__(self, url): self.file_dir = os.path.dirname(__file__) f = open(os.path.join(self.file_dir, 'apps.json')) data = json.loads(f.read()) f.close() self.categories = data['categories'] self.apps = data['apps'] self.url = url def analyze(self): ctxt = PyV8.JSContext() ctxt.enter() f1 = open(os.path.join(self.file_dir, 'js/wappalyzer.js')) f2 = open(os.path.join(self.file_dir, '../php/js/driver.js')) ctxt.eval(f1.read()) ctxt.eval(f2.read()) f1.close() f2.close() host = urlparse(self.url).hostname response = requests.get(self.url) html = response.text headers = dict(response.headers) data = {'host': host, 'url': self.url, 'html': html, 'headers': headers} apps = json.dumps(self.apps) categories = json.dumps(self.categories) return ctxt.eval("w.apps = %s; w.categories = %s; w.driver.data = %s; w.driver.init();" % (apps, categories, json.dumps(data))) if __name__ == '__main__': try: w = Wappalyzer(sys.argv[1]) print w.analyze() except IndexError: print ('Usage: python %s ' % sys.argv[0])