import re def IsOnionValid(url: str)-> bool: """ Checks if the domain(param) is a valid onion domain and return True else False. """ try: pattern = re.compile("^[A-Za-z0-9.]+(.onion)?$") url = url.strip().removesuffix('/') if url.startswith('http://'): domain = url.split('/')[2] if pattern.fullmatch(domain) is not None: if len(domain.split('.')) > 3: return False else: if len(domain) < 62: return False return True elif pattern.fullmatch(domain) is None: return False else: return False else: #TODO : edit the url to make sure it has http:// at the beginning, in case if it's missing? (problem is that it only returns true or false) if pattern.fullmatch(url) is not None: if len(url.split('.')) > 3: return False else: if len(url) < 62: return False return True elif pattern.fullmatch(url) is None: return False else: return False except Exception as e: return False def IsUrlValid(url:str)->bool: """ Check if url is valid both dark net end clearnet. """ pattern = re.compile("^[A-Za-z0-9:/.-]+$") url = str(url) if len(url) < 4: return False if url.endswith('.onion'): return IsOnionValid(url) else: if not url.__contains__('.'): return False if pattern.fullmatch(url) is None: return False return True