41 lines
1.3 KiB
Python
Executable File
41 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import json
|
|
import urllib.request
|
|
import argparse
|
|
from collections import Counter
|
|
from operator import itemgetter
|
|
|
|
parser = argparse.ArgumentParser(description="API Call to collect data")
|
|
parser.add_argument("tenant", type=str, help="Tenant Name")
|
|
parser.add_argument("token", type=str, help="Tenat API Token")
|
|
parser.add_argument("-t", "--timeperiod", type=int, default='604800', help="Timeperiod (default: 604800)")
|
|
|
|
try:
|
|
args = parser.parse_args()
|
|
tenant = args.tenant
|
|
token = args.token
|
|
timeperiod = args.timeperiod
|
|
|
|
except argparse.ArgumentError as e:
|
|
print(str(e))
|
|
|
|
def print_dict(dict, json_content):
|
|
for key, value in sorted(dict.items(), key = itemgetter(1), reverse = True):
|
|
print ("{:<35s}{:5d}".format(key, value))
|
|
|
|
base_url = "https://{}.goskope.com/api/v1/events?token={}&type=page&timeperiod={}".format(tenant, token, timeperiod)
|
|
req = urllib.request.Request(base_url)
|
|
with urllib.request.urlopen(req) as response:
|
|
content = response.read()
|
|
json_content = json.loads(content)
|
|
|
|
domains = Counter(data['domain'] for data in json_content['data'])
|
|
categories = Counter(data['category'] for data in json_content['data'])
|
|
|
|
print ("==== Domains ===")
|
|
print_dict (domains, json_content)
|
|
print ("\n")
|
|
print ("==== Categories ===")
|
|
print_dict (categories)
|