ND(Node classification)节点分类,自动分类节点,自动识别节点关键词,提取出国家、地区元素并仅保留此部分;重复节点将自动添加序号并排序。声明:是AI写的,感觉有用。
操作方法:仅需填入在配置链接的别名部分中含有国家、地区信息的节点配置链接即可,由程序自动操作分类。
- 如何实现:
内置了 countryKeywords
国家信息数据库,或是敏感地区、争议地区信息数据库 disputedRegionsMap
;通过识别函数 extractRegionFromAlias(alias)
匹配原配置链接中的别名(remarks)。最后通过 replaceAlias(line, region, index)
替换函数替换原配置链接别名部分,为国家/地区+序号。
- 国家信息数据库
countryKeywords
// 国家和地区关键词库
const countryKeywords = [
"中国", "中国大陆", "中国香港", "香港", "澳门", "台湾", "台湾省", "台湾地区",
"阿富汗", "阿尔巴尼亚", "阿尔及利亚", "安道尔", "安哥拉",
"安提瓜和巴布达", "阿根廷", "亚美尼亚", "澳大利亚", "奥地利",
"阿塞拜疆", "巴哈马", "巴林", "孟加拉国", "巴巴多斯", "白俄罗斯", "比利时",
"伯利兹", "贝宁", "不丹", "玻利维亚", "波斯尼亚和黑塞哥维那", "博茨瓦纳",
"巴西", "文莱", "保加利亚", "布基纳法索", "布隆迪",
"柬埔寨", "喀麦隆", "加拿大", "佛得角", "中非共和国", "乍得", "智利", "中国台湾",
"哥伦比亚", "科摩罗", "刚果(布)", "刚果(金)", "哥斯达黎加",
"克罗地亚", "古巴", "塞浦路斯", "捷克", "丹麦",
"吉布提", "多米尼加", "多米尼加共和国", "厄瓜多尔", "埃及",
"萨尔瓦多", "赤道几内亚", "厄立特里亚", "爱沙尼亚", "埃塞俄比亚",
"斐济", "芬兰", "法国", "加蓬", "冈比亚", "格鲁吉亚",
"德国", "加纳", "希腊", "格林纳达", "危地马拉", "几内亚", "几内亚比绍",
"圭亚那", "海地", "洪都拉斯", "匈牙利", "冰岛",
"印度", "印度尼西亚", "伊朗", "伊拉克", "爱尔兰", "以色列",
"意大利", "牙买加", "日本", "约旦", "哈萨克斯坦",
"肯尼亚", "基里巴斯", "韩国", "科威特", "吉尔吉斯斯坦",
"老挝", "拉脱维亚", "黎巴嫩", "莱索托", "利比里亚",
"利比亚", "列支敦士登", "立陶宛", "卢森堡", "马其顿",
"马达加斯加", "马拉维", "马来西亚", "马尔代夫", "马里",
"马耳他", "马绍尔群岛", "毛里塔尼亚", "毛里求斯", "墨西哥",
"密克罗尼西亚", "摩尔多瓦", "摩纳哥", "蒙古", "黑山",
"摩洛哥", "莫桑比克", "缅甸", "纳米比亚", "瑙鲁",
"尼泊尔", "荷兰", "新西兰", "尼加拉瓜", "尼日尔",
"尼日利亚", "北马其顿", "挪威", "阿曼", "巴基斯坦",
"帕劳", "巴拿马", "巴布亚新几内亚", "巴拉圭", "秘鲁",
"菲律宾", "波兰", "葡萄牙", "卡塔尔", "罗马尼亚",
"俄罗斯", "卢旺达", "圣基茨和尼维斯", "圣卢西亚",
"圣文森特和格林纳丁斯", "萨摩亚", "圣马力诺", "圣多美和普林西比",
"沙特阿拉伯", "塞内加尔", "塞尔维亚", "塞舌尔",
"塞拉利昂", "新加坡", "斯洛伐克", "斯洛文尼亚",
"所罗门群岛", "索马里", "南非", "南苏丹", "西班牙",
"斯里兰卡", "苏丹", "苏里南", "斯威士兰", "瑞典",
"瑞士", "叙利亚", "塔吉克斯坦", "坦桑尼亚", "泰国",
"多哥", "汤加", "特立尼达和多巴哥", "突尼斯", "土耳其",
"土库曼斯坦", "图瓦卢", "乌干达", "乌克兰", "阿拉伯联合酋长国",
"英国", "美国", "乌拉圭", "乌兹别克斯坦", "瓦努阿图",
"梵蒂冈", "委内瑞拉", "越南", "也门", "赞比亚",
"津巴布韦"
];
- 地区数据库
disputedRegionsMap
// 受争议地区映射
const disputedRegionsMap = {
"台湾省": "台湾",
"台湾地区": "台湾",
"台湾": "台湾",
"香港特别行政区": "香港",
"香港": "香港",
"澳门特别行政区": "澳门",
"澳门": "澳门",
"西藏自治区": "中国",
"新疆维吾尔自治区": "中国",
"钓鱼岛": "中国",
"南海诸岛": "中国"
};
- 识别函数
extractRegionFromAlias(alias)
详解
function extractRegionFromAlias(alias) {
const aliasLower = alias.toLowerCase(); // 小写匹配,防止大小写不一致
// 优先匹配模糊映射表
for (const [key, val] of Object.entries(disputedRegionsMap)) {
if (aliasLower.includes(key.toLowerCase())) return val;
}
// 再匹配国家/地区关键词
for (const keyword of countryKeywords) {
if (aliasLower.includes(keyword.toLowerCase())) return keyword;
}
// 匹配不到就返回“未知”
return "未知";
}
- 替换函数
replaceAlias(line, region, index)
详解
function replaceAlias(line, region, index) {
const lastHashIndex = line.lastIndexOf('#');
const suffix = index > 1 ? index : '';
const finalAlias = region + suffix;
if (lastHashIndex === -1) {
return line + '#' + encodeURIComponent(finalAlias);
}
const basePart = line.slice(0, lastHashIndex);
return basePart + '#' + encodeURIComponent(finalAlias);
}
手动分组操作流程为:
- 填入原始配置链接,别名部分是何内容无要求;
- 设置分组区间、各分组统一别名(自动添加序号),每行一个,示例:
1-4=香港
5-6=台湾
当然,不必统一设置为某一特定国家或地区,可以用任意字符来替换原别名、或填充空白别名。
您可能需要入手一台便宜实惠的云服务器,建议您选择二五云,新用户可以使用一次性的9折优惠码:
1118
襄阳IPv6云,2h2g独立公网IPv6,每年仅需9.9。 大量低价、大带宽云服,都可以使用此优惠码!