From 958d1e52c8c1c8cee62aed595bf27fc18fef35e6 Mon Sep 17 00:00:00 2001 From: xream Date: Sun, 31 Mar 2024 10:59:49 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=A2=E9=98=85=E7=9A=84=E6=9D=A5=E6=BA=90?= =?UTF-8?q?=20User-Agent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/restful/download.js | 24 ++++++++++++++----- .../src/utils/{platform.js => user-agent.js} | 9 ++++++- 2 files changed, 26 insertions(+), 7 deletions(-) rename backend/src/utils/{platform.js => user-agent.js} (83%) 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 }); +}