def getDomainWhois(self, domain): """ @param domain: a Domain object containing the domain that you want whois_content for. @return a hashmap of all the webcontent for this domain. """ domain_val = domain.value tld = domain.tld url = domain_val + '.' + tld #next we grab all the whois content try: whois_parser = Whois_Parser() whois_server = self.whois_servers[tld] except Exception as e: self.whois_exceptions.append(e) try: creation_date = whois_parser.getCreationDate(url, whois_server) except Exception as e: creation_date = None self.whois_exceptions.append(e) try: privacy_prot = whois_parser.isWhoisPrivacyProtected(url, whois_server) except Exception as e: privacy_prot = None self.whois_exceptions.append(e) try: is_parking = whois_parser.isParking(url, whois_server) except Exception as e: is_parking = None self.whois_exceptions.append(e) return {"creation_date" : creation_date, "privacy_prot" : privacy_prot, "is_parking" : is_parking}
def work(self, index, domain): """ each thread does the work here """ url = domain + '.' + self.aTLD exceptions = [] if self.web_content: #target webcontent with this thread try: wpg = WebPageInfoGetter(url) wpg.id += str(index) wpg.setUpGetter(url) except Exception as e: exceptions.append(e) try: nilsimsa = wpg.getNilsimsaHash(url, False) except Exception as e: nilsimsa = None exceptions.append(e) try: image = wpg.getImageHash(url, False) except Exception as e: image = None exceptions.append(e) try: redirects = wpg.getNumberOfRedirects(url, False) except Exception as e: redirects = None exceptions.append(e) info = "-Domain: {}\nNilsimsa: {}\nImageHash: {}\nRedirects: {}\nExceptions: {}\n".format(url, nilsimsa, image, redirects, exceptions) self.window[index%self.window_size] = info else: #target only the whois content with this thread try: whois_parser = Whois_Parser() whois_server = whois_parser.server_info['.' + self.aTLD][0] except Exception as e: exceptions.append(e) try: creation_date = whois_parser.getCreationDate(url, whois_server) except Exception as e: creation_date = None exceptions.append(e) try: privacy_prot = whois_parser.isWhoisPrivacyProtected(url, whois_server) except Exception as e: privacy_prot = None exceptions.append(e) try: is_parking = whois_parser.isParking(url, whois_server) except Exception as e: is_parking = None exceptions.append(e) info = "-Domain: {}\nCreationDate: {}\nPrivacy: {}\nParking: {}\nExceptions: {}\n".format(url, creation_date, privacy_prot, is_parking, exceptions) self.window[index%self.window_size] = info
def _record_domain_info(self, a_domain, a_tld, a_file, switch=True): """ Record all information for a domain """ exceptions = [] domain_ctypos = self._generate_ctypos_for_domain(a_domain) #first we grab all the content we can via loading up the url try: wpg = WebPageInfoGetter(a_domain) wpg.setUpGetter(a_domain) except Exception as e: exceptions.append(e) try: nilsimsa = wpg.getNilsimsaHash(a_domain, False) except Exception as e: nilsimsa = None exceptions.append(e) try: image = wpg.getImageHash(a_domain, False) except Exception as e: image = None exceptions.append(e) try: redirects = wpg.getNumberOfRedirects(a_domain, False) except Exception as e: redirects = None exceptions.append(e) #next we grab all the whois content whois_server_found = False try: whois_parser = Whois_Parser() whois_server = whois_parser.server_info['.' + a_tld][0] whois_server_found = True except Exception as e: whois_server_found = False exceptions.append(e) try: if whois_server_found: creation_date = whois_parser.getCreationDate(a_domain, whois_server) else: creation_date = None except Exception as e: creation_date = None exceptions.append(e) try: if whois_server_found: privacy_prot = whois_parser.isWhoisPrivacyProtected(a_domain, whois_server) else: privacy_prot = None except Exception as e: privacy_prot = None exceptions.append(e) try: if whois_server_found: is_parking = whois_parser.isParking(a_domain, whois_server) else: is_parking = None except Exception as e: is_parking = None exceptions.append(e) #next we grab Alexa info #try: # is_top = self.alexa_reader.isDomainInAlexaTop(a_domain) #except Exception as e: # is_top = None # exceptions.append(e) with open(a_file, "a") as data_fp: #write out all of our data to the file data_fp.write("-Domain: {}\n".format(a_domain)) data_fp.write("NumberOfCandidates: {}\n".format(len(domain_ctypos))) data_fp.write("Candidates: {}\n".format(str(domain_ctypos))) data_fp.write("Nilsimsa: {}\n".format(nilsimsa)) data_fp.write("ImageHash: {}\n".format(image)) data_fp.write("Redirects: {}\n".format(redirects)) data_fp.write("CreationDate: {}\n".format(creation_date)) data_fp.write("Privacy: {}\n".format(privacy_prot)) data_fp.write("Parking: {}\n".format(is_parking)) for exception in exceptions: data_fp.write("Exception: {}\n".format(exception))
def navigateZoneFile(self, aGzipFile, aTLD="com"): """ Method to navigate all the domains -- and their candidates -- in a file """ dataFileName = aGzipFile.split('.')[0] #load the appropriate files into memory tld_files = self._loadCurrPrevAndNextFromFile(aGzipFile) for domain in tld_files["current"].keys(): #STORE ALL INFORMATION FOR THE FILE #First, now that contents are in memory, go after the candidates candidates = [] exceptions = [] #generate typos for the domain in question gtypos = self._generate_typos_inhash(domain.lower()) #iterate through gtypos looking if it exists in the files in memory. if so, we have a candidate for typo in gtypos: if self.isDomainCandidate(typo, tld_files["previous"], tld_files["current"], tld_files["next"]) and typo not in candidates: candidates.append(typo) url = domain + '.' + aTLD try: wpg = WebPageInfoGetter(url) wpg.setUpGetter(url) except Exception as e: exceptions.append(e) try: nilsimsa = wpg.getNilsimsaHash(url, False) except Exception as e: nilsimsa = None exceptions.append(e) try: image = wpg.getImageHash(url, False) except Exception as e: image = None exceptions.append(e) try: redirects = wpg.getNumberOfRedirects(url, False) except Exception as e: redirects = None exceptions.append(e) #next we grab all the whois content try: whois_parser = Whois_Parser() whois_server = whois_parser.server_info['.' + aTLD][0] except Exception as e: exceptions.append(e) try: creation_date = whois_parser.getCreationDate(url, whois_server) except Exception as e: creation_date = None exceptions.append(e) try: privacy_prot = whois_parser.isWhoisPrivacyProtected(url, whois_server) except Exception as e: privacy_prot = None exceptions.append(e) try: is_parking = whois_parser.isParking(url, whois_server) except Exception as e: is_parking = None exceptions.append(e) with open("/home/engelsjo/Documents/Research/tld_file_parser/data/{}_data/{}.data".format(aTLD, dataFileName), "a") as data_fp: #write out all of our data to the file data_fp.write("-Domain: {}\n".format(url)) data_fp.write("NumberOfCandidates: {}\n".format(len(candidates))) data_fp.write("Candidates: {}\n".format(str(candidates))) data_fp.write("Nilsimsa: {}\n".format(nilsimsa)) data_fp.write("ImageHash: {}\n".format(image)) data_fp.write("Redirects: {}\n".format(redirects)) data_fp.write("CreationDate: {}\n".format(creation_date)) data_fp.write("Privacy: {}\n".format(privacy_prot)) data_fp.write("Parking: {}\n".format(is_parking)) for exception in exceptions: data_fp.write("Exception: {}\n".format(exception)) print("done with file")