Compare commits

...

1 commit

3 changed files with 72 additions and 13 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
/dist/
.amo-upload-uuid

View file

@ -1,18 +1,73 @@
"use strict"; "use strict";
const WINDOWS_CHROME_UA = const CHROME_VERSION = "140.0.0.0";
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + const TARGET_HOSTS = [
"AppleWebKit/537.36 (KHTML, like Gecko) " + "netflix.com",
"Chrome/140.0.0.0 Safari/537.36"; "assets.nflxext.com"
];
browser.webRequest.onBeforeSendHeaders.addListener( function getOperatingSystem() {
const ua = globalThis.navigator?.userAgent || "";
const platform = globalThis.navigator?.platform || "";
const userAgentDataPlatform = globalThis.navigator?.userAgentData?.platform || "";
if (/Windows/i.test(ua) || /Win/i.test(platform) || /win/i.test(userAgentDataPlatform)) {
return "win";
}
if (/Mac/i.test(ua) || /Mac/i.test(platform) || /mac/i.test(userAgentDataPlatform)) {
return "mac";
}
if (/Linux/i.test(ua) || /Linux/i.test(platform) || /linux/i.test(userAgentDataPlatform)) {
return "linux";
}
return "linux";
}
function getChromeLikeUserAgent() {
const os = getOperatingSystem();
switch (os) {
case "mac":
return `Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${CHROME_VERSION} Safari/537.36`;
case "win":
return `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${CHROME_VERSION} Safari/537.36`;
case "linux":
default:
return `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${CHROME_VERSION} Safari/537.36`;
}
}
function isTargetHost(url) {
try {
const hostname = new URL(url).hostname.toLowerCase();
return hostname === "netflix.com" ||
hostname.endsWith(".netflix.com") ||
hostname === "assets.nflxext.com" ||
hostname.endsWith(".nflxext.com");
} catch {
return false;
}
}
const browserApi = globalThis.browser || globalThis.chrome;
browserApi.webRequest.onBeforeSendHeaders.addListener(
(details) => { (details) => {
if (!isTargetHost(details.url)) {
return {};
}
const requestHeaders = details.requestHeaders ?? []; const requestHeaders = details.requestHeaders ?? [];
const userAgentValue = getChromeLikeUserAgent();
let foundUserAgent = false; let foundUserAgent = false;
for (const header of requestHeaders) { for (const header of requestHeaders) {
if (header.name.toLowerCase() === "user-agent") { if (header.name.toLowerCase() === "user-agent") {
header.value = WINDOWS_CHROME_UA; header.value = userAgentValue;
foundUserAgent = true; foundUserAgent = true;
break; break;
} }
@ -21,7 +76,7 @@ browser.webRequest.onBeforeSendHeaders.addListener(
if (!foundUserAgent) { if (!foundUserAgent) {
requestHeaders.push({ requestHeaders.push({
name: "User-Agent", name: "User-Agent",
value: WINDOWS_CHROME_UA value: userAgentValue
}); });
} }
@ -30,7 +85,9 @@ browser.webRequest.onBeforeSendHeaders.addListener(
{ {
urls: [ urls: [
"*://netflix.com/*", "*://netflix.com/*",
"*://*.netflix.com/*" "*://*.netflix.com/*",
"*://assets.nflxext.com/*",
"*://*.nflxext.com/*"
] ]
}, },
[ [

View file

@ -1,8 +1,8 @@
{ {
"manifest_version": 3, "manifest_version": 3,
"name": "thisiswindowschromiumnetflix", "name": "thisischromiumnetflix",
"version": "1.0.0", "version": "2026.7.27.1",
"description": "Netflix에서 User-Agent를 Windows Chrome으로 고정합니다.", "description": "Netflix 관련 요청의 User-Agent를 운영체제에 맞춰 조정합니다.",
"permissions": [ "permissions": [
"webRequest", "webRequest",
@ -23,7 +23,7 @@
"browser_specific_settings": { "browser_specific_settings": {
"gecko": { "gecko": {
"id": "thisiswindowschromiumnetflix@imnya.ng", "id": "thisiswindowschromiumnetflix@imnya.ng",
"strict_min_version": "109.0", "strict_min_version": "142.0",
"data_collection_permissions": { "data_collection_permissions": {
"required": [ "required": [
"none" "none"
@ -31,4 +31,4 @@
} }
} }
} }
} }