#!/usr/bin/python import urllib2, json, fileinput, sys, os, time from datetime import datetime from time import gmtime, strftime # Read key, single line with open('api-key.txt', 'r') as k: api_key = k.read().rstrip() def confirmEnforcement(indomains=[]): # This function takes a list of domains as an argument and compares that # to all the domains in an Umbrella Enforcement API integration # The API returns a maximum of 200 domains at a time. For 28,000 domains # it takes almost 2 minutes. # The function returns an array: # All domains found:True or False, # domains in the Enforcement API integration list, # Number of domains in the Enforcement API integration, # time it took in seconds next='https://s-platform.api.opendns.com/1.0/domains?customerKey='+api_key+'&limit=200' start_time = time.time() page=1 domains=[] while next != False: req = urllib2.Request(url=next) f = urllib2.urlopen(req) result = json.loads(f.read()) for i in range(len(result['data'])): domains.append(result['data'][i]['name']) next=result['meta']['next'] page += 1 time_elapsed=time.time() - start_time output = { 'AllDomains': all(x in domains for x in indomains), 'DomainList': domains, 'NoOfDomains': len(domains), 'TotalTime': time_elapsed } return output test=['google.com', 'cnn.com', 'dembowski.net'] print 'Getting domains in Enforcement API key' x = confirmEnforcement(test) print 'That took', x['TotalTime'], 'seconds.' print 'All Domains?', x['AllDomains'] print 'No of Domains:',x['NoOfDomains'] print 'Domains returned:' for domain in x['DomainList']: print domain print print 'Getting just the domains for tha API key' y=confirmEnforcement() print 'That took', y['TotalTime'], 'seconds.' print 'No of Domains:',y['NoOfDomains'] print 'Domains returned:' for domain in y['DomainList']: print domain