From 21e46a4124861f831cbd2f3062720a2ac43d3876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Thu, 24 Oct 2024 15:19:58 +0800 Subject: [PATCH] =?UTF-8?q?optimize:=20=E6=98=AF=E5=90=A6=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E4=BB=A3=E7=90=86=E7=9A=84=E5=88=A4=E6=96=AD=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mitmproxy/src/lib/proxy/middleware/overwall.js | 11 ++--------- .../src/lib/proxy/mitmproxy/createConnectHandler.js | 8 ++++---- packages/mitmproxy/src/options.js | 4 ++-- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/packages/mitmproxy/src/lib/proxy/middleware/overwall.js b/packages/mitmproxy/src/lib/proxy/middleware/overwall.js index 72f0aa6..50230c7 100644 --- a/packages/mitmproxy/src/lib/proxy/middleware/overwall.js +++ b/packages/mitmproxy/src/lib/proxy/middleware/overwall.js @@ -148,14 +148,7 @@ function createOverwallMiddleware (overWallConfig) { return { sslConnectInterceptor: (req, cltSocket, head) => { const hostname = req.url.split(':')[0] - const ret = matched(hostname, overWallTargetMap) - if (ret == null) { - return null // 返回 null,由下一个拦截器校验 - } - if (ret === false) { - return false // 不拦截,预留这个判断,避免以后修改 matched 方法的代码出BUG - } - return true // 拦截 + return matched(hostname, overWallTargetMap) }, requestIntercept (context, req, res, ssl, next) { const { rOptions, log, RequestCounter } = context @@ -164,7 +157,7 @@ function createOverwallMiddleware (overWallConfig) { } const hostname = rOptions.hostname const matchedResult = matched(hostname, overWallTargetMap) - if (matchedResult == null || matchedResult === false) { + if (matchedResult == null || matchedResult === false || matchedResult === 'false') { return } const cacheKey = '__over_wall_proxy__' diff --git a/packages/mitmproxy/src/lib/proxy/mitmproxy/createConnectHandler.js b/packages/mitmproxy/src/lib/proxy/mitmproxy/createConnectHandler.js index 83fe6d6..9590210 100644 --- a/packages/mitmproxy/src/lib/proxy/mitmproxy/createConnectHandler.js +++ b/packages/mitmproxy/src/lib/proxy/mitmproxy/createConnectHandler.js @@ -9,11 +9,11 @@ const jsonApi = require('../../../json') function isSslConnect (sslConnectInterceptors, req, cltSocket, head) { for (const intercept of sslConnectInterceptors) { const ret = intercept(req, cltSocket, head) - log.debug(`拦截判断结果:${ret}, url: ${req.url}, intercept:`, intercept) - if (ret === false || ret === true) { - return ret + log.debug('当前拦截器返回结果:', ret, `, url: ${req.url}, intercept:`, intercept) + if (ret == null) { + continue } - // continue + return !(ret === false || ret === 'false') } return false } diff --git a/packages/mitmproxy/src/options.js b/packages/mitmproxy/src/options.js index 1a165fc..1c6094d 100644 --- a/packages/mitmproxy/src/options.js +++ b/packages/mitmproxy/src/options.js @@ -119,10 +119,10 @@ module.exports = (serverConfig) => { const matched = matchUtil.matchHostname(intercepts, hostname, 'matched intercepts') if ((!!matched) === true) { log.debug(`拦截器拦截:${req.url}, matched:`, matched) - return true // 拦截 + return matched // 拦截 } - return null // 未匹配到任何拦截配置,由下一个拦截器判断 + return null // 不在白名单中,也未配置在拦截功能中,跳过当前拦截器,由下一个拦截器判断 }, createIntercepts: (context) => { const rOptions = context.rOptions