''' 对目标资产的管理,包括信息的更新维护等 ''' import re #pattern = r'^(https?://)?((?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}|(?:\d{1,3}\.){3}\d{1,3})(:\d+)?(/.*)?$' pattern = r'^(https?://)?((?:[0-9]{1,3}\.){3}[0-9]{1,3}|(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,})(:\d+)?(/.*)?$' class TargetManager: def __init__(self): pass # 辅助函数:验证IPv4地址的有效性 def _is_valid_ipv4(self,ip): parts = ip.split('.') if len(parts) != 4: return False for part in parts: if not part.isdigit() or not 0 <= int(part) <= 255: return False return True #验证目标格式的合法性,并提取域名或IP def validate_and_extract(self,input_str): ''' :param input_str: :return: bool,str,int(1-IP,2-domain) ''' regex_match = re.fullmatch(pattern, input_str) type = None if regex_match: domain_or_ip = regex_match.group(2) # 仅对 IPv4 格式的字符串进行有效性验证 if re.fullmatch(r'\d{1,3}(\.\d{1,3}){3}', domain_or_ip): if not self._is_valid_ipv4(domain_or_ip): return False, None,type else: type = 1 #IP else: type = 2 #domain return True, domain_or_ip,type else: return False, None,type g_TM = TargetManager() if __name__ == "__main__": tm = TargetManager() # 示例测试 test_cases = [ "http://192.168.1.1:8080/path", "https://example.com", "192.168.1.1:80", "example.com/path/to/resource", "ftp://invalid.com", # 不合规 "http://300.400.500.600" # 不合规 ] for case in test_cases: is_valid, result = tm.validate_and_extract(case) print(f"输入: '{case}' → 合规: {is_valid}, 提取结果: {result}")