From d48b9d0946e4a39f2c6373c4360305e4c5f3efd7 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Thu, 25 Apr 2024 23:04:10 +0200 Subject: [PATCH] chore(HTTPClient): Add X-Youtube-Client-Name and remove X-Origin headers (#645) --- src/utils/Constants.ts | 8 ++++++++ src/utils/HTTPClient.ts | 18 ++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/utils/Constants.ts b/src/utils/Constants.ts index 0f4c1ebf..2cb32cfe 100644 --- a/src/utils/Constants.ts +++ b/src/utils/Constants.ts @@ -34,12 +34,14 @@ export const OAUTH = Object.freeze({ }); export const CLIENTS = Object.freeze({ iOS: { + NAME_ID: '5', NAME: 'iOS', VERSION: '18.06.35', USER_AGENT: 'com.google.ios.youtube/18.06.35 (iPhone; CPU iPhone OS 14_4 like Mac OS X; en_US)', DEVICE_MODEL: 'iPhone10,6' }, WEB: { + NAME_ID: '1', NAME: 'WEB', VERSION: '2.20240111.09.00', API_KEY: 'AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8', @@ -47,28 +49,34 @@ export const CLIENTS = Object.freeze({ STATIC_VISITOR_ID: '6zpwvWUNAco' }, WEB_KIDS: { + NAME_ID: '76', NAME: 'WEB_KIDS', VERSION: '2.20230111.00.00' }, YTMUSIC: { + NAME_ID: '67', NAME: 'WEB_REMIX', VERSION: '1.20211213.00.00' }, ANDROID: { + NAME_ID: '3', NAME: 'ANDROID', VERSION: '18.48.37', SDK_VERSION: 33, USER_AGENT: 'com.google.android.youtube/18.48.37(Linux; U; Android 13; en_US; sdk_gphone64_x86_64 Build/UPB4.230623.005) gzip' }, YTSTUDIO_ANDROID: { + NAME_ID: '14', NAME: 'ANDROID_CREATOR', VERSION: '22.43.101' }, YTMUSIC_ANDROID: { + NAME_ID: '21', NAME: 'ANDROID_MUSIC', VERSION: '5.34.51' }, TV_EMBEDDED: { + NAME_ID: '85', NAME: 'TVHTML5_SIMPLY_EMBEDDED_PLAYER', VERSION: '2.0' } diff --git a/src/utils/HTTPClient.ts b/src/utils/HTTPClient.ts index bed48da7..c25ba6df 100644 --- a/src/utils/HTTPClient.ts +++ b/src/utils/HTTPClient.ts @@ -57,9 +57,16 @@ export default class HTTPClient { request_headers.set('Accept', '*/*'); request_headers.set('Accept-Language', '*'); request_headers.set('X-Goog-Visitor-Id', this.#session.context.client.visitorData || ''); - request_headers.set('X-Origin', request_url.origin); request_headers.set('X-Youtube-Client-Version', this.#session.context.client.clientVersion || ''); + const client_constant = Object.values(Constants.CLIENTS).find((client) => { + return client.NAME === this.#session.context.client.clientName; + }); + + if (client_constant) { + request_headers.set('X-Youtube-Client-Name', client_constant.NAME_ID); + } + if (Platform.shim.server) { request_headers.set('User-Agent', getRandomUserAgent('desktop')); request_headers.set('origin', request_url.origin); @@ -90,6 +97,14 @@ export default class HTTPClient { this.#adjustContext(n_body.context, n_body.client); request_headers.set('x-youtube-client-version', n_body.context.client.clientVersion); + const client_constant = Object.values(Constants.CLIENTS).find((client) => { + return client.NAME === n_body.context.client.clientName; + }); + + if (client_constant) { + request_headers.set('X-Youtube-Client-Name', client_constant.NAME_ID); + } + delete n_body.client; if (Platform.shim.server) { @@ -109,7 +124,6 @@ export default class HTTPClient { request_headers.set('User-Agent', Constants.CLIENTS.ANDROID.USER_AGENT); request_headers.set('X-GOOG-API-FORMAT-VERSION', '2'); request_headers.delete('X-Youtube-Client-Version'); - request_headers.delete('X-Origin'); } }