利用Python编写完整的网站检测工具
import requests import socket import ipwhois """ 1 whois 2 website test 3 header information retrieval 4 portscan 5 exit """ class WebsiteChecker: def __init__(self): self.banner() def banner(self): banner = """ ****************************************************************** ****************************************************************** Website Checker by Jason Wong V1.0 ****************************************************************** ****************************************************************** """ print(banner) def whois_retrieval(self,domain_name): try: ip_addr = socket.gethostbyname(domain_name) obj = ipwhois.IPWhois(ip_addr) result =obj.lookup_rdap(depth=2) print(result) except Exception as e: print(e) def website_test(self,domain_name): if not domain_name.startswith('http'): url = 'http://' + domain_name else: url = domain_name headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0' } try: response = requests.get(url=url, headers=headers) if response.status_code == 200: print("The website: %s is accessible!" % url) else: print("The website: %s is inaccessible!" % url) except Exception as e: print(e) print('Failed to execute the task!') def header_info(self, domain_name): if not domain_name.startswith('http'): url = 'http://' + domain_name else: url = domain_name headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0' } try: response = requests.get(url=url, headers=headers) if response.status_code == 200: print("The website: %s is accessible!" % url) headers_info = response.headers for k in headers_info: print(k, ": ", headers_info[k]) else: print("The website: %s is inaccessible!" % url) except Exception as e: print(e) print('Failed to execute the task!') def port_scan(self, domain_name): port_list = [21,22,25,53,80,443] ip_addr = socket.gethostbyname(domain_name) for port in port_list: client_s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_s.settimeout(2) if client_s.connect_ex((ip_addr, port)): continue else: print("Port %d is open " % port) def run(self): while True: print(""" Please choose your option: 1 whois 2 website test 3 header information retrieval 4 portscan 5 exit """) option = input("Choice: ") if option == '1': domain_name = input("Enter domain name: ") self.whois_retrieval(domain_name) elif option == '2': domain_name = input("Enter domain name: ") self.website_test(domain_name) elif option == '3': domain_name = input("Enter domain name: ") self.header_info(domain_name) elif option == '4': domain_name = input("Enter domain name: ") self.port_scan(domain_name) elif option == '5': break else: print("You input wrong data") if __name__ == "__main__": website_checker = WebsiteChecker() website_checker.run()
STRIVE FOR PROGRESS,NOT FOR PERFECTION