diff --git a/packages/mitmproxy/src/lib/interceptor/impl/req/proxy.js b/packages/mitmproxy/src/lib/interceptor/impl/req/proxy.js index 90efd33..f7f89c1 100644 --- a/packages/mitmproxy/src/lib/interceptor/impl/req/proxy.js +++ b/packages/mitmproxy/src/lib/interceptor/impl/req/proxy.js @@ -122,11 +122,22 @@ module.exports = { rOptions.agent = rOptions.agent.unVerifySslAgent unVerifySsl = true } - res.setHeader('DS-Interceptor', `proxy: ${proxyTarget}, sni: ${interceptOpt.sni}${unVerifySsl ? ', unVerifySsl' : ''}`) - log.info('proxy intercept: hostname:', originHostname, ', target:', proxyTarget, ', sni replace servername:', rOptions.servername, (unVerifySsl ? ', unVerifySsl' : '')) + + const unVerifySslStr = unVerifySsl ? ', unVerifySsl' : '' + res.setHeader('DS-Interceptor', `proxy: ${proxyTarget}, sni: ${interceptOpt.sni}${unVerifySslStr}`) + log.info(`proxy intercept: hostname: ${originHostname}, target: ${proxyTarget}, sni replace servername: ${rOptions.servername}${unVerifySslStr}`) + } else if (interceptOpt.unVerifySsl === true) { + if (rOptions.agent.options.rejectUnauthorized && rOptions.agent.unVerifySslAgent) { + rOptions.agent = rOptions.agent.unVerifySslAgent + res.setHeader('DS-Interceptor', `proxy: ${proxyTarget}, unVerifySsl`) + log.info(`proxy intercept: hostname: ${originHostname}, target: ${proxyTarget}, unVerifySsl`) + } else { + res.setHeader('DS-Interceptor', `proxy: ${proxyTarget}, already unVerifySsl`) + log.info(`proxy intercept: hostname: ${originHostname}, target: ${proxyTarget}, already unVerifySsl`) + } } else { res.setHeader('DS-Interceptor', `proxy: ${proxyTarget}`) - log.info('proxy intercept: hostname:', originHostname, ', target:', proxyTarget) + log.info(`proxy intercept: hostname: ${originHostname}, target:${proxyTarget}`) } return true diff --git a/packages/mitmproxy/src/lib/interceptor/impl/req/sni.js b/packages/mitmproxy/src/lib/interceptor/impl/req/sni.js index 134001c..782fb8a 100644 --- a/packages/mitmproxy/src/lib/interceptor/impl/req/sni.js +++ b/packages/mitmproxy/src/lib/interceptor/impl/req/sni.js @@ -12,9 +12,11 @@ module.exports = { rOptions.agent = rOptions.agent.unVerifySslAgent unVerifySsl = true } - res.setHeader('DS-Interceptor', `sni: ${interceptOpt.sni}${unVerifySsl ? ', unVerifySsl' : ''}`) - log.info('sni intercept: sni replace servername:', rOptions.hostname, '➜', rOptions.servername, (unVerifySsl ? ', unVerifySsl' : '')) + const unVerifySslStr = unVerifySsl ? ', unVerifySsl' : '' + res.setHeader('DS-Interceptor', `sni: ${interceptOpt.sni}${unVerifySslStr}`) + + log.info(`sni intercept: sni replace servername: ${rOptions.hostname} ➜ ${rOptions.servername}${unVerifySslStr}`) return true }, is (interceptOpt) { diff --git a/packages/mitmproxy/src/lib/interceptor/impl/req/unVerifySsl.js b/packages/mitmproxy/src/lib/interceptor/impl/req/unVerifySsl.js new file mode 100644 index 0000000..6a3e863 --- /dev/null +++ b/packages/mitmproxy/src/lib/interceptor/impl/req/unVerifySsl.js @@ -0,0 +1,21 @@ +module.exports = { + name: 'unVerifySsl', + priority: 123, + requestIntercept (context, interceptOpt, req, res, ssl, next) { + const { rOptions, log } = context + + if (rOptions.agent.options.rejectUnauthorized && rOptions.agent.unVerifySslAgent) { + rOptions.agent = rOptions.agent.unVerifySslAgent + log.info(`unVerifySsl intercept: ${rOptions.hostname}, unVerifySsl`) + res.setHeader('DS-Interceptor', 'unVerifySsl') + } else { + log.info(`unVerifySsl intercept: ${rOptions.hostname}, already unVerifySsl`) + res.setHeader('DS-Interceptor', 'already unVerifySsl') + } + + return true + }, + is (interceptOpt) { + return interceptOpt.unVerifySsl === true + }, +} diff --git a/packages/mitmproxy/src/lib/interceptor/index.js b/packages/mitmproxy/src/lib/interceptor/index.js index a37b6f5..790bcee 100644 --- a/packages/mitmproxy/src/lib/interceptor/index.js +++ b/packages/mitmproxy/src/lib/interceptor/index.js @@ -10,6 +10,7 @@ const requestReplace = require('./impl/req/requestReplace') const proxy = require('./impl/req/proxy') const sni = require('./impl/req/sni') +const unVerifySsl = require('./impl/req/unVerifySsl') const baiduOcr = require('./impl/req/baiduOcr') @@ -25,7 +26,7 @@ module.exports = [ OPTIONS, success, redirect, abort, cacheReq, requestReplace, - proxy, sni, + proxy, sni, unVerifySsl, baiduOcr, // response interceptor impls