diff --git a/backend/src/restful/download.js b/backend/src/restful/download.js index a6897f3..3e4f0cb 100644 --- a/backend/src/restful/download.js +++ b/backend/src/restful/download.js @@ -1,4 +1,7 @@ -import { getPlatformFromHeaders } from '@/utils/platform'; +import { + getUserAgentFromHeaders, + getPlatformFromUserAgent, +} from '@/utils/user-agent'; import { COLLECTIONS_KEY, SUBS_KEY } from '@/constants'; import { findByName } from '@/utils/database'; import { getFlowHeaders } from '@/utils/flow'; @@ -16,10 +19,15 @@ async function downloadSubscription(req, res) { let { name } = req.params; name = decodeURIComponent(name); - const platform = - req.query.target || getPlatformFromHeaders(req.headers) || 'JSON'; + const userAgent = getUserAgentFromHeaders(req.headers); + + const platform = + req.query.target || getPlatformFromUserAgent(userAgent) || 'JSON'; + + $.info( + `正在下载订阅:${name}\ntarget: ${platform}\n来源 User-Agent: ${userAgent.UA}`, + ); - $.info(`正在下载订阅:${name}`); let { url, ua, @@ -172,13 +180,17 @@ async function downloadCollection(req, res) { let { name } = req.params; name = decodeURIComponent(name); + const userAgent = getUserAgentFromHeaders(req.headers); + const platform = - req.query.target || getPlatformFromHeaders(req.headers) || 'JSON'; + req.query.target || getPlatformFromUserAgent(userAgent) || 'JSON'; const allCols = $.read(COLLECTIONS_KEY); const collection = findByName(allCols, name); - $.info(`正在下载组合订阅:${name}`); + $.info( + `正在下载组合订阅:${name}\ntarget: ${platform}\n来源 User-Agent: ${userAgent.UA}`, + ); let { ignoreFailedRemoteSub, produceType, includeUnsupportedProxy } = req.query; diff --git a/backend/src/utils/platform.js b/backend/src/utils/user-agent.js similarity index 83% rename from backend/src/utils/platform.js rename to backend/src/utils/user-agent.js index 7f8fefd..f9f14dc 100644 --- a/backend/src/utils/platform.js +++ b/backend/src/utils/user-agent.js @@ -1,4 +1,4 @@ -export function getPlatformFromHeaders(headers) { +export function getUserAgentFromHeaders(headers) { const keys = Object.keys(headers); let UA = ''; let ua = ''; @@ -9,6 +9,9 @@ export function getPlatformFromHeaders(headers) { break; } } + return { UA, ua }; +} +export function getPlatformFromUserAgent({ ua, UA }) { if (UA.indexOf('Quantumult%20X') !== -1) { return 'QX'; } else if (UA.indexOf('Surfboard') !== -1) { @@ -38,3 +41,7 @@ export function getPlatformFromHeaders(headers) { return 'JSON'; } } +export function getPlatformFromHeaders(headers) { + const { UA, ua } = getUserAgentFromHeaders(headers); + return getPlatformFromUserAgent({ ua, UA }); +}