/** * ██████████████████████████████████████████████ * █ █ * █ Auto Proxy Configuration Script █ * █ 自动代理配置脚本 █ * █ █ * █ By: Jack Liu █ * █ 邮箱:lqf@xlsys.cn █ * █ 时间:2025年6月17日 █ * █ 版权所有 © xlsys.cn & Jack Liu █ * █ █ * ██████████████████████████████████████████████ */ function FindProxyForURL(url, host) { // ████████████【配置参数区 - 可自由修改】████████████ // === 代理服务器定义 === var PROXY_MAIN = "PROXY 134.160.161.223:7899"; // 主代理服务器 //var PROXY_TEST = "PROXY lab.xlsys.cn:1081"; // 测试环境代理(未启用) // === IP匹配规则 === var IP_RULES = { "10.10.10.0/24": PROXY_MAIN, "192.168.40.0/24": PROXY_MAIN, "134.0.0.0/8": PROXY_MAIN, // "10.10.100.0/24": PROXY_TEST //未启用 }; // === 域名匹配规则 === var DOMAIN_RULES = { // ".leso114.com": PROXY_MAIN, //未启用 // ".xlsys.cn": PROXY_TEST //未启用 }; // ████████████████████████████████████████████████ // CIDR 转换工具函数 function cidrToMask(cidr) { var parts = cidr.split('/'); var ip = parts[0]; var bits = parseInt(parts[1]); var mask = ""; for (var i = 0; i < 4; i++) { var numBits = Math.min(bits, 8); mask += (i !== 0 ? "." : "") + (~(-1 << numBits)).toString(); bits -= numBits; } return [ip, mask]; } // IP 地址段匹配 function matchIpRules(ip) { for (var cidr in IP_RULES) { var [network, mask] = cidrToMask(cidr); if (isInNet(ip, network, mask)) { return IP_RULES[cidr]; } } return null; } // ████████████【核心逻辑开始】████████████ // 忽略本地主机名 if (isPlainHostName(host) || dnsDomainIs(host, ".localhost")) { return "DIRECT"; } // 匹配域名规则 for (var domain in DOMAIN_RULES) { if (dnsDomainIs(host, domain)) { return DOMAIN_RULES[domain]; } } // 匹配IP地址段 var ipProxy = matchIpRules(host); if (ipProxy) { return ipProxy; } // 默认直连 return "DIRECT"; }