Parse user agent header

This commit is contained in:
Ajay Ramachandran
2021-07-31 21:49:10 -04:00
parent bdf0953f35
commit 8f0f01e6b2
4 changed files with 36 additions and 3 deletions

View File

@@ -18,6 +18,7 @@ import { getReputation } from "../utils/reputation";
import { APIVideoData, APIVideoInfo } from "../types/youtubeApi.model";
import { UserID } from "../types/user.model";
import { isUserVIP } from "../utils/isUserVIP";
import { parseUserAgent } from "../utils/userAgent";
type CheckResult = {
pass: boolean,
@@ -550,8 +551,7 @@ function preprocessInput(req: Request) {
}
});
const userAgentAsArray = req.get("user-agent");
const userAgent = userAgentAsArray || "";
const userAgent = req.get("user-agent") ?? parseUserAgent(req.get("User-Agent")) ?? "";
return {videoID, userID, service, videoDuration, videoDurationParam, segments, userAgent};
}

13
src/utils/userAgent.ts Normal file
View File

@@ -0,0 +1,13 @@
export function parseUserAgent(userAgent: string): string {
const ua = userAgent.toLowerCase();
if (ua.includes("com.google.android.youtube/") || ua.includes("com.vanced.android.youtube/")) {
return `Vanced/${ua.match(/.android.youtube\/([^\s]+)/)[1]}`;
}
if (ua.includes("mpv_sponsorblock/")) {
return ua;
}
return "";
}