Source code
Revision control
Copy as Markdown
Other Tools
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
"use strict";
if (!navigator.userAgent.includes("Chrome/")) {
const { appVersion, userAgent } = navigator;
let actualPlatform = "linux";
if (appVersion.includes("Android")) {
actualPlatform = "android";
} else if (appVersion.includes("Macintosh")) {
actualPlatform = "mac";
} else if (appVersion.includes("Windows")) {
actualPlatform = "windows";
}
const wantedPlatform = window.__webcompat_spoof_platform ?? actualPlatform;
if (wantedPlatform) {
let osSegment = `Windows NT 10; Win64; x64`;
if (wantedPlatform == "android") {
const androidVer = userAgent.match(/Android [0-9.]+/) || "Android 6.0";
const device = userAgent.includes("Mobile")
? "Nexus 5 Build/MRA58N"
: "Nexus 7 Build/JSS15Q";
osSegment = `Linux; ${androidVer}; ${device}`;
} else if (wantedPlatform == "mac") {
osSegment = "Macintosh; Intel Mac OS X 10_15_7";
} else if (wantedPlatform == "linux") {
osSegment = "X11; Ubuntu; Linux x86_64";
}
const final_ua = `Mozilla/5.0 (${osSegment}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36`;
const nav = Object.getPrototypeOf(navigator);
const ua = Object.getOwnPropertyDescriptor(nav, "userAgent");
ua.get = () => final_ua;
Object.defineProperty(nav, "userAgent", ua);
window.__webcompat = (window.__webcompat ?? new Set()).add(
"navigator.userAgent"
);
}
}