#!/usr/bin/env python3 """ This script performs a basic request to each of the domains in the current list of dotgov domains hosted at https://flatgithub.com/cisagov/dotgov-data/blob/main/?filename=current-full.csv This script can be run locally to generate data and currently takes some time to run. """ import csv import requests DOMAIN_LIST_URL = ( "https://raw.githubusercontent.com/cisagov/dotgov-data/main/current-full.csv" ) data = requests.get(DOMAIN_LIST_URL).content.decode("utf-8") csv_data = list(csv.reader(data.splitlines(), delimiter=",")) domains = csv_data[1:] fields = csv_data[0] + ["Response"] def check_status_response(domain): try: response = requests.get(f"https://{domain}", timeout=3).status_code except Exception as e: response = type(e).__name__ return response full_data = [] for domain in domains: domain_name = domain[0] response = check_status_response(domain_name) full_data.append(domain + [response]) with open("../data/response_codes.csv", "w") as f: writer = csv.writer(f) writer.writerow(fields) writer.writerows(full_data)