from iptocc import country_code # ISO 3166-1 alpha-2 to country name (common ones) COUNTRY_NAMES = { "CN": "中国", "US": "美国", "NG": "尼日利亚", "GH": "加纳", "KE": "肯尼亚", "TZ": "坦桑尼亚", "ZA": "南非", "EG": "埃及", "AE": "阿联酋", "SA": "沙特阿拉伯", "IQ": "伊拉克", "JO": "约旦", "PK": "巴基斯坦", "BD": "孟加拉国", "IN": "印度", "TH": "泰国", "VN": "越南", "ID": "印尼", "PH": "菲律宾", "MY": "马来西亚", "JP": "日本", "KR": "韩国", "GB": "英国", "DE": "德国", "FR": "法国", "RU": "俄罗斯", "BR": "巴西", "MX": "墨西哥", "AU": "加拿大", "AU": "澳大利亚", "TR": "土耳其", "IR": "伊朗", "MM": "缅甸", "KH": "柬埔寨", "LA": "老挝", "LK": "斯里兰卡", "NP": "尼泊尔", "UG": "乌干达", "ET": "埃塞俄比亚", "SN": "塞内加尔", "CI": "科特迪瓦", "CM": "喀麦隆", "CD": "刚果(金)", "MZ": "莫桑比克", } def resolve_country(ip: str) -> str: if not ip or ip in ("127.0.0.1", "::1", "localhost"): return "本地" try: code = country_code(ip) if code and code != "--": return COUNTRY_NAMES.get(code, code) return "未知" except Exception: return "未知"