From b80547944bfbfe2ff9bb1dbee12a451c96f96229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Fri, 7 Feb 2025 16:01:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8D=95=E8=8E=B7=E9=85=8D=E7=BD=AE=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E7=9A=84=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/mitmproxy/src/utils/util.match.js | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/mitmproxy/src/utils/util.match.js b/packages/mitmproxy/src/utils/util.match.js index 6d7da5e..dbdd588 100644 --- a/packages/mitmproxy/src/utils/util.match.js +++ b/packages/mitmproxy/src/utils/util.match.js @@ -32,23 +32,27 @@ function domainMapRegexply (hostMap) { const regexpMap = {} const origin = {} // 用于快速匹配,见matchHostname、matchHostnameAll方法 lodash.each(hostMap, (value, domain) => { - // 将域名匹配串格式如 `.xxx.com` 转换为 `*.xxx.com` - if (domain[0] === '.') { - if (hostMap[`*${domain}`] != null) { - return // 如果已经有匹配串 `*.xxx.com`,则忽略 `.xxx.com` + try { + // 将域名匹配串格式如 `.xxx.com` 转换为 `*.xxx.com` + if (domain[0] === '.') { + if (hostMap[`*${domain}`] != null) { + return // 如果已经有匹配串 `*.xxx.com`,则忽略 `.xxx.com` + } + domain = `*${domain}` } - domain = `*${domain}` - } - if (domain.includes('*') || domain[0] === '^') { - const regDomain = domain[0] !== '^' ? domainRegexply(domain) : domain - regexpMap[regDomain] = value + if (domain.includes('*') || domain[0] === '^') { + const regDomain = domain[0] !== '^' ? domainRegexply(domain) : domain + regexpMap[regDomain] = value - if (domain.indexOf('*') === 0 && domain.lastIndexOf('*') === 0) { + if (domain.indexOf('*') === 0 && domain.lastIndexOf('*') === 0) { + origin[domain] = value + } + } else { origin[domain] = value } - } else { - origin[domain] = value + } catch (e) { + log.error('匹配串有问题:', domain, e) } }) regexpMap.origin = origin