From 418898faa91967ff8d60ab009d32ee49b6649ea5 Mon Sep 17 00:00:00 2001 From: Luan Date: Sat, 15 Feb 2025 21:03:08 -0300 Subject: [PATCH] feat: Add support for unencrypted onesie requests & responses Useful for those looking to skip encryption. --- examples/onesie-request/main.ts | 10 +++++--- .../encrypted_player_request.ts | 25 ++++++++----------- .../video_streaming/onesie_player_request.ts | 25 +++++++++---------- .../encrypted_player_request.proto | 2 +- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/examples/onesie-request/main.ts b/examples/onesie-request/main.ts index f16c36c..43e0cd3 100644 --- a/examples/onesie-request/main.ts +++ b/examples/onesie-request/main.ts @@ -108,7 +108,7 @@ async function prepareOnesieRequest(args: OnesieRequestArgs): Promise = { if (message.enableCompression !== undefined && message.enableCompression !== false) { writer.uint32(112).bool(message.enableCompression); } - if (message.onesiePlayerRequest !== undefined) { - OnesiePlayerRequest.encode(message.onesiePlayerRequest, writer.uint32(130).fork()).join(); + if (message.unencryptedOnesiePlayerRequest !== undefined && message.unencryptedOnesiePlayerRequest.length !== 0) { + writer.uint32(130).bytes(message.unencryptedOnesiePlayerRequest); } if (message.TQ !== undefined && message.TQ !== false) { writer.uint32(136).bool(message.TQ); @@ -154,7 +153,7 @@ export const EncryptedPlayerRequest: MessageFns = { break; } - message.onesiePlayerRequest = OnesiePlayerRequest.decode(reader, reader.uint32()); + message.unencryptedOnesiePlayerRequest = reader.bytes(); continue; case 17: if (tag !== 136) { @@ -187,9 +186,9 @@ export const EncryptedPlayerRequest: MessageFns = { YP: isSet(object.YP) ? globalThis.Boolean(object.YP) : false, pM: isSet(object.pM) ? globalThis.Boolean(object.pM) : false, enableCompression: isSet(object.enableCompression) ? globalThis.Boolean(object.enableCompression) : false, - onesiePlayerRequest: isSet(object.onesiePlayerRequest) - ? OnesiePlayerRequest.fromJSON(object.onesiePlayerRequest) - : undefined, + unencryptedOnesiePlayerRequest: isSet(object.unencryptedOnesiePlayerRequest) + ? bytesFromBase64(object.unencryptedOnesiePlayerRequest) + : new Uint8Array(0), TQ: isSet(object.TQ) ? globalThis.Boolean(object.TQ) : false, }; }, @@ -223,8 +222,8 @@ export const EncryptedPlayerRequest: MessageFns = { if (message.enableCompression !== undefined && message.enableCompression !== false) { obj.enableCompression = message.enableCompression; } - if (message.onesiePlayerRequest !== undefined) { - obj.onesiePlayerRequest = OnesiePlayerRequest.toJSON(message.onesiePlayerRequest); + if (message.unencryptedOnesiePlayerRequest !== undefined && message.unencryptedOnesiePlayerRequest.length !== 0) { + obj.unencryptedOnesiePlayerRequest = base64FromBytes(message.unencryptedOnesiePlayerRequest); } if (message.TQ !== undefined && message.TQ !== false) { obj.TQ = message.TQ; @@ -246,9 +245,7 @@ export const EncryptedPlayerRequest: MessageFns = { message.YP = object.YP ?? false; message.pM = object.pM ?? false; message.enableCompression = object.enableCompression ?? false; - message.onesiePlayerRequest = (object.onesiePlayerRequest !== undefined && object.onesiePlayerRequest !== null) - ? OnesiePlayerRequest.fromPartial(object.onesiePlayerRequest) - : undefined; + message.unencryptedOnesiePlayerRequest = object.unencryptedOnesiePlayerRequest ?? new Uint8Array(0); message.TQ = object.TQ ?? false; return message; }, diff --git a/protos/generated/video_streaming/onesie_player_request.ts b/protos/generated/video_streaming/onesie_player_request.ts index 15f5153..0051779 100644 --- a/protos/generated/video_streaming/onesie_player_request.ts +++ b/protos/generated/video_streaming/onesie_player_request.ts @@ -14,15 +14,12 @@ export interface OnesiePlayerRequest { url?: string | undefined; headers: HttpHeader[]; body?: string | undefined; - proxiedByTrustedBandaid?: - | boolean - | undefined; - /** Seen this on youtube.com and the YTMusic protos. Not sure what it is yet. */ - field6?: boolean | undefined; + proxiedByTrustedBandaid?: boolean | undefined; + skipResponseEncryption?: boolean | undefined; } function createBaseOnesiePlayerRequest(): OnesiePlayerRequest { - return { url: "", headers: [], body: "", proxiedByTrustedBandaid: false, field6: false }; + return { url: "", headers: [], body: "", proxiedByTrustedBandaid: false, skipResponseEncryption: false }; } export const OnesiePlayerRequest: MessageFns = { @@ -39,8 +36,8 @@ export const OnesiePlayerRequest: MessageFns = { if (message.proxiedByTrustedBandaid !== undefined && message.proxiedByTrustedBandaid !== false) { writer.uint32(32).bool(message.proxiedByTrustedBandaid); } - if (message.field6 !== undefined && message.field6 !== false) { - writer.uint32(48).bool(message.field6); + if (message.skipResponseEncryption !== undefined && message.skipResponseEncryption !== false) { + writer.uint32(48).bool(message.skipResponseEncryption); } return writer; }, @@ -85,7 +82,7 @@ export const OnesiePlayerRequest: MessageFns = { break; } - message.field6 = reader.bool(); + message.skipResponseEncryption = reader.bool(); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -104,7 +101,9 @@ export const OnesiePlayerRequest: MessageFns = { proxiedByTrustedBandaid: isSet(object.proxiedByTrustedBandaid) ? globalThis.Boolean(object.proxiedByTrustedBandaid) : false, - field6: isSet(object.field6) ? globalThis.Boolean(object.field6) : false, + skipResponseEncryption: isSet(object.skipResponseEncryption) + ? globalThis.Boolean(object.skipResponseEncryption) + : false, }; }, @@ -122,8 +121,8 @@ export const OnesiePlayerRequest: MessageFns = { if (message.proxiedByTrustedBandaid !== undefined && message.proxiedByTrustedBandaid !== false) { obj.proxiedByTrustedBandaid = message.proxiedByTrustedBandaid; } - if (message.field6 !== undefined && message.field6 !== false) { - obj.field6 = message.field6; + if (message.skipResponseEncryption !== undefined && message.skipResponseEncryption !== false) { + obj.skipResponseEncryption = message.skipResponseEncryption; } return obj; }, @@ -137,7 +136,7 @@ export const OnesiePlayerRequest: MessageFns = { message.headers = object.headers?.map((e) => HttpHeader.fromPartial(e)) || []; message.body = object.body ?? ""; message.proxiedByTrustedBandaid = object.proxiedByTrustedBandaid ?? false; - message.field6 = object.field6 ?? false; + message.skipResponseEncryption = object.skipResponseEncryption ?? false; return message; }, }; diff --git a/protos/video_streaming/encrypted_player_request.proto b/protos/video_streaming/encrypted_player_request.proto index 3abef4e..7a27001 100644 --- a/protos/video_streaming/encrypted_player_request.proto +++ b/protos/video_streaming/encrypted_player_request.proto @@ -13,6 +13,6 @@ message EncryptedPlayerRequest { optional bool YP = 10; optional bool pM = 13; optional bool enable_compression = 14; - optional OnesiePlayerRequest onesie_player_request = 16; + optional bytes unencrypted_onesie_player_request = 16; optional bool TQ = 17; } \ No newline at end of file