diff --git a/backend/package.json b/backend/package.json index 5885939..53bff15 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "sub-store", - "version": "2.14.405", + "version": "2.14.406", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "main": "src/main.js", "scripts": { diff --git a/backend/src/restful/download.js b/backend/src/restful/download.js index 655d2e7..bf0282b 100644 --- a/backend/src/restful/download.js +++ b/backend/src/restful/download.js @@ -185,7 +185,7 @@ async function downloadSubscription(req, res) { if (!$arguments.noFlow) { // forward flow headers const flowInfo = await getFlowHeaders( - url, + $arguments?.insecure ? `${url}#insecure` : url, $arguments.flowUserAgent, undefined, proxy || sub.proxy, @@ -378,7 +378,7 @@ async function downloadCollection(req, res) { } if (!$arguments.noFlow) { const flowInfo = await getFlowHeaders( - url, + $arguments?.insecure ? `${url}#insecure` : url, $arguments.flowUserAgent, undefined, proxy || sub.proxy || collection.proxy, diff --git a/backend/src/restful/subscriptions.js b/backend/src/restful/subscriptions.js index 221beba..6cd2503 100644 --- a/backend/src/restful/subscriptions.js +++ b/backend/src/restful/subscriptions.js @@ -152,7 +152,7 @@ async function getFlowInfo(req, res) { } } else { const flowHeaders = await getFlowHeaders( - url, + $arguments?.insecure ? `${url}#insecure` : url, $arguments.flowUserAgent, undefined, sub.proxy, diff --git a/backend/src/utils/download.js b/backend/src/utils/download.js index 685d255..74980a7 100644 --- a/backend/src/utils/download.js +++ b/backend/src/utils/download.js @@ -157,8 +157,13 @@ export default async function download( $.write(cached, customCacheKey); } } else { + const insecure = $arguments?.insecure + ? isNode + ? { strictSSL: false } + : { insecure: true } + : undefined; $.info( - `Downloading...\nUser-Agent: ${userAgent}\nTimeout: ${requestTimeout}\nProxy: ${proxy}\nURL: ${url}`, + `Downloading...\nUser-Agent: ${userAgent}\nTimeout: ${requestTimeout}\nProxy: ${proxy}\nInsecure: ${!!insecure}\nURL: ${url}`, ); try { const { body, headers } = await http.get({ @@ -167,6 +172,7 @@ export default async function download( ...(isLoon && proxy ? { node: proxy } : {}), ...(isQX && proxy ? { opts: { policy: proxy } } : {}), ...(proxy ? getPolicyDescriptor(proxy) : {}), + ...(insecure ? insecure : {}), }); if (headers) { diff --git a/backend/src/utils/flow.js b/backend/src/utils/flow.js index 9e0296c..e3ea6c8 100644 --- a/backend/src/utils/flow.js +++ b/backend/src/utils/flow.js @@ -47,6 +47,11 @@ export async function getFlowHeaders( // $.info(`使用缓存的流量信息: ${url}`); flowInfo = cached; } else { + const insecure = $arguments?.insecure + ? $.env.isNode + ? { strictSSL: false } + : { insecure: true } + : undefined; const { defaultProxy, defaultFlowUserAgent, defaultTimeout } = $.read(SETTINGS_KEY); let proxy = customProxy || defaultProxy; @@ -64,7 +69,7 @@ export async function getFlowHeaders( $.info( `使用 GET 方法从响应体获取流量信息: ${flowUrl}, User-Agent: ${ userAgent || '' - }`, + }, Insecure: ${!!insecure}, Proxy: ${proxy}`, ); const { body } = await http.get({ url: flowUrl, @@ -72,6 +77,11 @@ export async function getFlowHeaders( 'User-Agent': userAgent, }, timeout: requestTimeout, + ...(proxy ? { proxy } : {}), + ...(isLoon && proxy ? { node: proxy } : {}), + ...(isQX && proxy ? { opts: { policy: proxy } } : {}), + ...(proxy ? getPolicyDescriptor(proxy) : {}), + ...(insecure ? insecure : {}), }); flowInfo = body; } else { @@ -79,7 +89,7 @@ export async function getFlowHeaders( $.info( `使用 HEAD 方法从响应头获取流量信息: ${url}, User-Agent: ${ userAgent || '' - }, Proxy: ${proxy}`, + }, Insecure: ${!!insecure}, Proxy: ${proxy}`, ); const { headers } = await http.head({ url: url @@ -103,20 +113,23 @@ export async function getFlowHeaders( ...(isLoon && proxy ? { node: proxy } : {}), ...(isQX && proxy ? { opts: { policy: proxy } } : {}), ...(proxy ? getPolicyDescriptor(proxy) : {}), + ...(insecure ? insecure : {}), }); flowInfo = getFlowField(headers); } catch (e) { $.error( `使用 HEAD 方法从响应头获取流量信息失败: ${url}, User-Agent: ${ userAgent || '' - }, Proxy: ${proxy}: ${e.message ?? e}`, + }, Insecure: ${!!insecure}, Proxy: ${proxy}: ${ + e.message ?? e + }`, ); } if (!flowInfo) { $.info( `使用 GET 方法获取流量信息: ${url}, User-Agent: ${ userAgent || '' - }, Proxy: ${proxy}`, + }, Insecure: ${!!insecure}, Proxy: ${proxy}`, ); const { headers } = await http.get({ url: url @@ -140,6 +153,7 @@ export async function getFlowHeaders( ...(isLoon && proxy ? { node: proxy } : {}), ...(isQX && proxy ? { opts: { policy: proxy } } : {}), ...(proxy ? getPolicyDescriptor(proxy) : {}), + ...(insecure ? insecure : {}), }); flowInfo = getFlowField(headers); }