2022-06-30 12:19:43 +08:00
|
|
|
export function getPlatformFromHeaders(headers) {
|
|
|
|
|
const keys = Object.keys(headers);
|
|
|
|
|
let UA = '';
|
2023-08-28 13:10:48 +08:00
|
|
|
let ua = '';
|
2022-06-30 12:19:43 +08:00
|
|
|
for (let k of keys) {
|
|
|
|
|
if (/USER-AGENT/i.test(k)) {
|
|
|
|
|
UA = headers[k];
|
2023-08-28 13:10:48 +08:00
|
|
|
ua = UA.toLowerCase();
|
2022-06-30 12:19:43 +08:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (UA.indexOf('Quantumult%20X') !== -1) {
|
|
|
|
|
return 'QX';
|
2023-12-27 00:24:06 +08:00
|
|
|
} else if (UA.indexOf('Surfboard') !== -1) {
|
|
|
|
|
return 'Surfboard';
|
2023-08-29 01:46:49 +08:00
|
|
|
} else if (UA.indexOf('Surge Mac') !== -1) {
|
|
|
|
|
return 'SurgeMac';
|
2022-06-30 12:19:43 +08:00
|
|
|
} else if (UA.indexOf('Surge') !== -1) {
|
|
|
|
|
return 'Surge';
|
|
|
|
|
} else if (UA.indexOf('Decar') !== -1 || UA.indexOf('Loon') !== -1) {
|
|
|
|
|
return 'Loon';
|
|
|
|
|
} else if (UA.indexOf('Shadowrocket') !== -1) {
|
2022-07-11 18:23:56 +08:00
|
|
|
return 'ShadowRocket';
|
2022-06-30 12:19:43 +08:00
|
|
|
} else if (UA.indexOf('Stash') !== -1) {
|
|
|
|
|
return 'Stash';
|
2023-08-28 13:10:48 +08:00
|
|
|
} else if (
|
|
|
|
|
ua === 'meta' ||
|
|
|
|
|
(ua.indexOf('clash') !== -1 && ua.indexOf('meta') !== -1)
|
|
|
|
|
) {
|
|
|
|
|
return 'ClashMeta';
|
|
|
|
|
} else if (ua.indexOf('clash') !== -1) {
|
|
|
|
|
return 'Clash';
|
|
|
|
|
} else if (ua.indexOf('v2ray') !== -1) {
|
|
|
|
|
return 'V2Ray';
|
2024-01-13 10:28:07 +08:00
|
|
|
} else if (ua.indexOf('sing-box') !== -1) {
|
|
|
|
|
return 'sing-box';
|
2022-06-30 12:19:43 +08:00
|
|
|
} else {
|
|
|
|
|
return 'JSON';
|
|
|
|
|
}
|
|
|
|
|
}
|