From e5f5184f113009db97e7fa42da7561441e152891 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Sat, 13 Apr 2024 23:10:07 +0800
Subject: [PATCH] =?UTF-8?q?script=E6=8B=A6=E6=88=AA=E5=99=A8=EF=BC=8C?=
=?UTF-8?q?=E6=94=AF=E6=8C=81=E9=85=8D=E7=BD=AE=E8=84=9A=E6=9C=AC=E7=9A=84?=
=?UTF-8?q?=E7=BB=9D=E5=AF=B9=E5=9C=B0=E5=9D=80=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/lib/interceptor/impl/req/proxy.js | 2 +-
.../src/lib/interceptor/impl/res/script.js | 26 +++++++++++++------
.../src/lib/proxy/middleware/overwall.js | 2 +-
3 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/packages/mitmproxy/src/lib/interceptor/impl/req/proxy.js b/packages/mitmproxy/src/lib/interceptor/impl/req/proxy.js
index baea4b5..ab8847f 100644
--- a/packages/mitmproxy/src/lib/interceptor/impl/req/proxy.js
+++ b/packages/mitmproxy/src/lib/interceptor/impl/req/proxy.js
@@ -33,7 +33,7 @@ function buildTargetUrl (rOptions, urlConf, interceptOpt, matched) {
targetUrl = urlConf
} else {
let uri = rOptions.path
- if (uri.indexOf('http') === 0) {
+ if (uri.indexOf('http:') === 0 || uri.indexOf('https:') === 0) {
// eslint-disable-next-line node/no-deprecated-api
const URL = url.parse(uri)
uri = URL.path
diff --git a/packages/mitmproxy/src/lib/interceptor/impl/res/script.js b/packages/mitmproxy/src/lib/interceptor/impl/res/script.js
index ac50212..180882a 100644
--- a/packages/mitmproxy/src/lib/interceptor/impl/res/script.js
+++ b/packages/mitmproxy/src/lib/interceptor/impl/res/script.js
@@ -6,10 +6,13 @@ function getScript (key, script) {
const hash = CryptoJs.SHA256(script).toString(CryptoJs.enc.Base64)
return `
-
- `
+
+`
+}
+function getScriptByAbsoluteUrl (scriptUrl) {
+ return `
+
+`
}
module.exports = {
@@ -25,11 +28,18 @@ module.exports = {
const scripts = monkey.get(setting.script.dirAbsolutePath)
let tags = getScript('global', scripts.global.script)
for (const key of keys) {
- const script = scripts[key]
- if (script == null) {
- continue
+ let scriptTag
+
+ if (key.indexOf('http:') === 0 || key.indexOf('https:') === 0) {
+ scriptTag = getScriptByAbsoluteUrl(key)
+ } else {
+ const script = scripts[key]
+ if (script == null) {
+ continue
+ }
+ scriptTag = getScript(key, script.script)
}
- const scriptTag = getScript(key, script.script)
+
tags += '\r\n' + scriptTag
}
res.setHeader('DS-Script-Interceptor', 'true')
diff --git a/packages/mitmproxy/src/lib/proxy/middleware/overwall.js b/packages/mitmproxy/src/lib/proxy/middleware/overwall.js
index f2b3e62..7ae4782 100644
--- a/packages/mitmproxy/src/lib/proxy/middleware/overwall.js
+++ b/packages/mitmproxy/src/lib/proxy/middleware/overwall.js
@@ -83,7 +83,7 @@ module.exports = function createOverWallIntercept (overWallConfig) {
const proxyTarget = domain + '/' + path + '/' + hostname + req.url
// const backup = interceptOpt.backup
- const proxy = proxyTarget.indexOf('http') === 0 ? proxyTarget : (rOptions.protocol + '//' + proxyTarget)
+ const proxy = proxyTarget.indexOf('http:') === 0 || proxyTarget.indexOf('https:') === 0 ? proxyTarget : (rOptions.protocol + '//' + proxyTarget)
// eslint-disable-next-line node/no-deprecated-api
const URL = url.parse(proxy)
rOptions.origional = lodash.cloneDeep(rOptions) // 备份原始请求参数