- Регистрация
- 21 Янв 2023
- Сообщения
- 409
- Автор темы
- #1
Ты WEB-Разработчик, и тебе нужен полезный инструмент, который поможет тебе?
Тогда этот скрипт - точно для тебя!
WARNING: В скрипте присутствует Лицензия, которая защищает мои авторские права, если вы собираетесь Сливать данный скрипт в других источниках, спросите для начала меня, если я дам добро - сливайте, с указанием автора (меня), Пожалуйста, уважайте чужой труд !!!
Тогда этот скрипт - точно для тебя!
WARNING: В скрипте присутствует Лицензия, которая защищает мои авторские права, если вы собираетесь Сливать данный скрипт в других источниках, спросите для начала меня, если я дам добро - сливайте, с указанием автора (меня), Пожалуйста, уважайте чужой труд !!!
whois
colorama
os
ssl
socket
datetime
time
dnspython
colorama
os
ssl
socket
datetime
time
dnspython
Python:
import whois
from colorama import Fore, Style
import os
import ssl
import socket
import datetime
import time
import dns.resolver
def loading_bar(duration):
print("Загрузка:")
for i in range(101):
print(f"\r{Fore.GREEN}|{'-' * i}{'|':>3} {i}%", end='')
time.sleep(duration / 100)
print()
def get_ssl_info(domain_name):
try:
context = ssl.create_default_context()
with context.wrap_socket(socket.socket(socket.AF_INET), server_hostname=domain_name) as s:
s.connect((domain_name, 443))
cert = s.getpeercert()
expiry_date = datetime.datetime.strptime(cert['notAfter'], "%b %d %H:%M:%S %Y %Z")
issuer = dict(x[0] for x in cert['issuer'])
issuer_info = f"{issuer['organizationName']} ({issuer['commonName']})"
if expiry_date > datetime.datetime.now():
ssl_status = f"{Fore.GREEN}Действителен до: {expiry_date}\nВыдан: {issuer_info}{Style.RESET_ALL}"
else:
ssl_status = f"{Fore.RED}Сертификат истек\nВыдан: {issuer_info}{Style.RESET_ALL}"
return ssl_status
except Exception as e:
return f"{Fore.RED}Ошибка при получении информации о SSL-сертификате: {e}{Style.RESET_ALL}"
def get_registrar(domain_info):
registrar = domain_info.registrar
if registrar is None:
return f"{Fore.RED}Информация о регистраторе недоступна{Style.RESET_ALL}"
else:
return f"{Fore.WHITE}{registrar}{Style.RESET_ALL}"
def get_ns_servers(domain_name):
try:
ns_servers = dns.resolver.resolve(domain_name, 'NS')
return ', '.join([ns.to_text() for ns in ns_servers])
except Exception as e:
return f"{Fore.RED}Информация о NS-серверах недоступна{Style.RESET_ALL}"
def print_developer_info():
developer_info = """
Developer Whois: pikamonov
VK: @vertusoffical
Page: @vertusoffical
"""
print(Fore.YELLOW + developer_info.center(os.get_terminal_size().columns) + Style.RESET_ALL)
def print_license(duration):
license_info = """
Лицензия:
Этот скрипт разработан и владеет им pikamonov.
Вы можете свободно использовать его для некоммерческих целей,
но несете полную ответственность за любое его использование
и распространение.
Социальные сети разработчика: VK: @vertusoffical TG: @vertus Page VK: @vertusoffical
"""
print(Fore.RED + license_info.center(os.get_terminal_size().columns) + Style.RESET_ALL)
for i in range(duration, 0, -1):
print(f"\rОсталось времени до скрытия лицензии: {i} секунд", end='')
time.sleep(1)
print("\r" + " " * os.get_terminal_size().columns, end='')
def main():
loading_bar(4)
print_license(7)
os.system('cls' if os.name == 'nt' else 'clear') # Вышел со скрипта!!!
print_developer_info()
while True:
domain_name = input("\nВведи доменное имя (например, arizona-rp.com): ")
try:
domain_info = whois.whois(domain_name)
ssl_info = get_ssl_info(domain_name)
registrar_info = get_registrar(domain_info)
ns_info = get_ns_servers(domain_name)
print("\nРезультаты:")
print(f"SSL-сертификат:\n{ssl_info}\n")
print(f"Регистратор:\n{registrar_info}\n")
print(f"NS-серверы:\n{ns_info}\n")
except Exception as e:
print(f"{Fore.RED}АААА, АШИПКА: {e}{Style.RESET_ALL}")
choice = input("Выберите действие:\n1) Проверить еще домен\n2) Выйти с скрипта\nТвой выбор: ").strip().lower()
if choice == "1" or choice.startswith("проверить"):
continue
elif choice == "2" or choice.startswith("выйти"):
print("Пока, ты ушел")
break
else:
print("Моя твоя не понимат, я знаю только 1 и 2....")
if __name__ == "__main__":
main()
Если ты заметил баг, или хочешь предложить идею для скрипта, пиши в эту тему
Последнее редактирование: