From 1caf6f478bec968f975b33e2d999f77b7299162a Mon Sep 17 00:00:00 2001 From: Minhyung Kim <127458006+minbros@users.noreply.github.com> Date: Sat, 3 Oct 2026 21:55:59 +0900 Subject: [PATCH 1/2] =?UTF-8?q?chore(seo):=20=EB=84=A4=EC=9D=B4=EB=B2=84?= =?UTF-8?q?=20=EC=82=AC=EC=9D=B4=ED=8A=B8=20=EC=86=8C=EC=9C=A0=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80=20(#214)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/naver6376040bb3efd1c12d3560ee3aef78c7.html | 1 + 1 file changed, 1 insertion(+) create mode 100644 public/naver6376040bb3efd1c12d3560ee3aef78c7.html diff --git a/public/naver6376040bb3efd1c12d3560ee3aef78c7.html b/public/naver6376040bb3efd1c12d3560ee3aef78c7.html new file mode 100644 index 00000000..0e6f3ed7 --- /dev/null +++ b/public/naver6376040bb3efd1c12d3560ee3aef78c7.html @@ -0,0 +1 @@ +naver-site-verification: naver6376040bb3efd1c12d3560ee3aef78c7.html \ No newline at end of file From 262b8ca69842d66f71e871bb1624b856362bbd72 Mon Sep 17 00:00:00 2001 From: KangShingyu <103213494+KangShinGyu98@users.noreply.github.com> Date: Tue, 6 Oct 2026 14:42:41 +0900 Subject: [PATCH 2/2] =?UTF-8?q?hotfitx(join):=EC=B9=B4=ED=86=A1=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=B4=88=EB=8C=80=EC=8B=9C=20=EB=B9=88=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=98=A4=EB=A5=98=20(#219)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: “KangShinGyu” <“rkdtlseb@naver.com”> --- src/proxy.test.ts | 17 ++++++++++++++++- src/proxy.ts | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/proxy.test.ts b/src/proxy.test.ts index 05ea7925..e68b793c 100644 --- a/src/proxy.test.ts +++ b/src/proxy.test.ts @@ -33,13 +33,15 @@ describe("invite preview proxy indexing contract", () => { it.each([ "Discordbot/2.0", "KAKAOTALK-SCRAP/1.0", + "facebookexternalhit/1.1; kakaotalk-scrap/1.0; +https://devtalk.kakao.com/t/scrap/33984", "Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)", "facebookexternalhit/1.1", "Twitterbot/1.0", "LinkedInBot/1.0", "TelegramBot (like TwitterBot)", "WhatsApp/2.23", - "Line/13.0", + "line-poker/1.0", + "facebookexternalhit/1.1;line-poker/1.0", ])("rewrites supported social preview UA %s with noindex headers", async (ua) => { const response = await proxy(inviteRequest(ua)); @@ -62,6 +64,19 @@ describe("invite preview proxy indexing contract", () => { expect(response.headers.get("x-middleware-next")).toBe("1"); expect(verifySessionWithOptionalRefresh).toHaveBeenCalledOnce(); }); + + it.each([ + "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 KAKAOTALK 10.8.0", + "Mozilla/5.0 (Linux; Android 14; SM-S918N Build/UP1A.231005.007; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/124.0.6367.82 Mobile Safari/537.36;KAKAOTALK 2410800", + "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Safari Line/14.8.0", + "Mozilla/5.0 (Linux; Android 14; SM-S918N Build/UP1A.231005.007; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/124.0.6367.82 Mobile Safari/537.36 Line/14.8.0/IAB", + ])("serves the app page to in-app browser UA %s", async (ua) => { + const response = await proxy(inviteRequest(ua)); + + expect(response.headers.get("x-middleware-rewrite")).toBeNull(); + expect(response.headers.get("x-middleware-next")).toBe("1"); + expect(verifySessionWithOptionalRefresh).toHaveBeenCalledOnce(); + }); }); describe("protected route redirect indexing contract", () => { diff --git a/src/proxy.ts b/src/proxy.ts index a5113a52..902ef09e 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -7,7 +7,7 @@ import { verifySessionWithOptionalRefresh } from "@/lib/auth-server"; import { isProtectedAppPath } from "@/lib/auth-session"; const LINK_PREVIEW_BOT_UA = - /facebookexternalhit|kakaotalk|twitterbot|slackbot|discordbot|linkedinbot|telegrambot|whatsapp|(?:^|[\s;(])line(?:\/|[\s;)])/i; + /facebookexternalhit|kakaotalk-scrap|line-poker|twitterbot|slackbot|discordbot|linkedinbot|telegrambot|whatsapp/i; function isInvitePreviewRequest(request: NextRequest): boolean { const { pathname } = request.nextUrl;