利用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()

 

posted @ 2022-05-01 20:34  Jason_huawen  阅读(377)  评论(0编辑  收藏  举报