From befbfc453403066bf3958f71b4d22d034b2e420d Mon Sep 17 00:00:00 2001 From: As9xm <197338912+As9xm@users.noreply.github.com> Date: Tue, 8 Sep 2026 00:23:06 +0300 Subject: [PATCH] fix(proxy): remove double decode of url param to avoid URIError and smuggling --- src/app/api/live/precheck/route.ts | 3 +-- src/app/api/proxy/key/route.ts | 2 +- src/app/api/proxy/logo/route.ts | 2 +- src/app/api/proxy/m3u8/route.ts | 3 +-- src/app/api/proxy/segment/route.ts | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/app/api/live/precheck/route.ts b/src/app/api/live/precheck/route.ts index 7d24cc5bce..14a085926e 100644 --- a/src/app/api/live/precheck/route.ts +++ b/src/app/api/live/precheck/route.ts @@ -22,8 +22,7 @@ export async function GET(request: NextRequest) { const ua = liveSource.ua || 'AptvPlayer/1.4.10'; try { - const decodedUrl = decodeURIComponent(url); - + const decodedUrl = url; const response = await fetch(decodedUrl, { cache: 'no-cache', redirect: 'follow', diff --git a/src/app/api/proxy/key/route.ts b/src/app/api/proxy/key/route.ts index 39725543df..274fbf077b 100644 --- a/src/app/api/proxy/key/route.ts +++ b/src/app/api/proxy/key/route.ts @@ -22,7 +22,7 @@ export async function GET(request: Request) { const ua = liveSource.ua || 'AptvPlayer/1.4.10'; try { - const decodedUrl = decodeURIComponent(url); + const decodedUrl = url; console.log(decodedUrl); const response = await fetch(decodedUrl, { headers: { diff --git a/src/app/api/proxy/logo/route.ts b/src/app/api/proxy/logo/route.ts index 644b041ea9..b31acd6f5f 100644 --- a/src/app/api/proxy/logo/route.ts +++ b/src/app/api/proxy/logo/route.ts @@ -20,7 +20,7 @@ export async function GET(request: Request) { const ua = liveSource?.ua || 'AptvPlayer/1.4.10'; try { - const decodedUrl = decodeURIComponent(imageUrl); + const decodedUrl = imageUrl; const imageResponse = await fetch(decodedUrl, { cache: 'no-cache', redirect: 'follow', diff --git a/src/app/api/proxy/m3u8/route.ts b/src/app/api/proxy/m3u8/route.ts index 007622700c..8c30781fef 100644 --- a/src/app/api/proxy/m3u8/route.ts +++ b/src/app/api/proxy/m3u8/route.ts @@ -27,8 +27,7 @@ export async function GET(request: Request) { let responseUsed = false; try { - const decodedUrl = decodeURIComponent(url); - + const decodedUrl = url; response = await fetch(decodedUrl, { cache: 'no-cache', redirect: 'follow', diff --git a/src/app/api/proxy/segment/route.ts b/src/app/api/proxy/segment/route.ts index a21ef7b2fb..238a3b7106 100644 --- a/src/app/api/proxy/segment/route.ts +++ b/src/app/api/proxy/segment/route.ts @@ -25,7 +25,7 @@ export async function GET(request: Request) { let reader: ReadableStreamDefaultReader | null = null; try { - const decodedUrl = decodeURIComponent(url); + const decodedUrl = url; response = await fetch(decodedUrl, { headers: { 'User-Agent': ua,