From 19aa0853a344654007951e863552af4f9f116f74 Mon Sep 17 00:00:00 2001 From: Jos Vooges | STH Date: Mon, 28 Sep 2026 20:48:48 +0200 Subject: [PATCH] Use the working Mac Chrome/122 User-Agent for Viaplay on server and all clients. --- .../nl/vonas/mediacluster/tv/playback/PlayerFactory.kt | 2 +- .../nl/vonas/mediacluster/tv/playback/PlayerFactory.kt | 2 +- apps/ios/VMC.xcodeproj/project.pbxproj | 8 ++++---- apps/ios/VMC/Playback/ClearKeyDashProxy.swift | 2 +- apps/ios/VMC/Playback/VLCPlayerController.swift | 2 +- apps/ios/VMC/UI/SettingsScreen.swift | 2 +- apps/ios/VMCTV/Playback/VLCPlayerController.swift | 2 +- apps/master-api/src/viaplay/client.ts | 4 ++-- apps/tizen-tv/www/js/player.js | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/apps/android-tv/app-mobile/src/main/java/nl/vonas/mediacluster/tv/playback/PlayerFactory.kt b/apps/android-tv/app-mobile/src/main/java/nl/vonas/mediacluster/tv/playback/PlayerFactory.kt index 287e618..ff45847 100644 --- a/apps/android-tv/app-mobile/src/main/java/nl/vonas/mediacluster/tv/playback/PlayerFactory.kt +++ b/apps/android-tv/app-mobile/src/main/java/nl/vonas/mediacluster/tv/playback/PlayerFactory.kt @@ -192,7 +192,7 @@ fun buildTvPlayer(context: Context): ExoPlayer { /** Gedeelde HTTP-client voor HLS-segmenten (connectie-hergebruik). */ private const val VIAPLAY_BROWSER_UA = - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36" + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" private fun isViaplayCdnHost(host: String): Boolean = host.contains("viaplay", ignoreCase = true) diff --git a/apps/android-tv/app/src/main/java/nl/vonas/mediacluster/tv/playback/PlayerFactory.kt b/apps/android-tv/app/src/main/java/nl/vonas/mediacluster/tv/playback/PlayerFactory.kt index 55ef78f..4a7d59c 100644 --- a/apps/android-tv/app/src/main/java/nl/vonas/mediacluster/tv/playback/PlayerFactory.kt +++ b/apps/android-tv/app/src/main/java/nl/vonas/mediacluster/tv/playback/PlayerFactory.kt @@ -201,7 +201,7 @@ fun buildTvPlayer(context: Context, audioPassthrough: Boolean = false): ExoPlaye /** Gedeelde HTTP-client voor HLS-segmenten (connectie-hergebruik). */ private const val VIAPLAY_BROWSER_UA = - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36" + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" private fun isViaplayCdnHost(host: String): Boolean = host.contains("viaplay", ignoreCase = true) diff --git a/apps/ios/VMC.xcodeproj/project.pbxproj b/apps/ios/VMC.xcodeproj/project.pbxproj index c0eaa7f..28bc006 100644 --- a/apps/ios/VMC.xcodeproj/project.pbxproj +++ b/apps/ios/VMC.xcodeproj/project.pbxproj @@ -345,7 +345,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 66; + CURRENT_PROJECT_VERSION = 67; DEVELOPMENT_TEAM = X25NYX3K49; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -360,7 +360,7 @@ "$(inherited)", "@executable_path/Frameworks" ); - MARKETING_VERSION = 0.5.53; + MARKETING_VERSION = 0.5.54; OTHER_LDFLAGS = ("$(inherited)", "-ObjC"); PRODUCT_BUNDLE_IDENTIFIER = nl.vonas.mediacluster.ios; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -378,7 +378,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 66; + CURRENT_PROJECT_VERSION = 67; DEVELOPMENT_TEAM = X25NYX3K49; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -393,7 +393,7 @@ "$(inherited)", "@executable_path/Frameworks" ); - MARKETING_VERSION = 0.5.53; + MARKETING_VERSION = 0.5.54; OTHER_LDFLAGS = ("$(inherited)", "-ObjC"); PRODUCT_BUNDLE_IDENTIFIER = nl.vonas.mediacluster.ios; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/apps/ios/VMC/Playback/ClearKeyDashProxy.swift b/apps/ios/VMC/Playback/ClearKeyDashProxy.swift index f205c1e..e10fc1a 100644 --- a/apps/ios/VMC/Playback/ClearKeyDashProxy.swift +++ b/apps/ios/VMC/Playback/ClearKeyDashProxy.swift @@ -1050,7 +1050,7 @@ final class ClearKeyDashProxy { let host = url.host?.lowercased() ?? "" if host.contains("viaplay") { req.setValue( - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", forHTTPHeaderField: "User-Agent" ) req.setValue("https://viaplay.com/", forHTTPHeaderField: "Referer") diff --git a/apps/ios/VMC/Playback/VLCPlayerController.swift b/apps/ios/VMC/Playback/VLCPlayerController.swift index 8733204..91eb89a 100644 --- a/apps/ios/VMC/Playback/VLCPlayerController.swift +++ b/apps/ios/VMC/Playback/VLCPlayerController.swift @@ -460,7 +460,7 @@ final class VLCPlayerController: NSObject, ObservableObject, VLCMediaPlayerDeleg media.addOption(":freetype-rel-fontsize=\(subtitleRelFontSize)") let viaplay = url.host?.localizedCaseInsensitiveContains("viaplay") == true if viaplay && !viaLocalProxy { - media.addOption(":http-user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36") + media.addOption(":http-user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36") media.addOption(":http-referrer=https://viaplay.com/") } else { media.addOption(":http-user-agent=VLC/3.0.21 LibVLC/3.0.21") diff --git a/apps/ios/VMC/UI/SettingsScreen.swift b/apps/ios/VMC/UI/SettingsScreen.swift index 59923ba..15bb242 100644 --- a/apps/ios/VMC/UI/SettingsScreen.swift +++ b/apps/ios/VMC/UI/SettingsScreen.swift @@ -96,7 +96,7 @@ struct SettingsScreen: View { Section("Info") { LabeledContent("App", value: "VMC iOS") - LabeledContent("Versie", value: "0.5.53") + LabeledContent("Versie", value: "0.5.54") LabeledContent("Live TV", value: app.iptvEnabled ? "Aan" : "Uit") LabeledContent("Events", value: app.eventsEnabled ? "Aan" : "Uit") } diff --git a/apps/ios/VMCTV/Playback/VLCPlayerController.swift b/apps/ios/VMCTV/Playback/VLCPlayerController.swift index 7d732ce..4baaa17 100644 --- a/apps/ios/VMCTV/Playback/VLCPlayerController.swift +++ b/apps/ios/VMCTV/Playback/VLCPlayerController.swift @@ -22,7 +22,7 @@ final class VLCPlayerController: NSObject, ObservableObject, VLCMediaPlayerDeleg private static func applyCdnHeaders(to media: VLCMedia, url: URL) { if url.host?.localizedCaseInsensitiveContains("viaplay") == true { - media.addOption(":http-user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36") + media.addOption(":http-user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36") media.addOption(":http-referrer=https://viaplay.com/") } } diff --git a/apps/master-api/src/viaplay/client.ts b/apps/master-api/src/viaplay/client.ts index 17b7735..4a97b6b 100644 --- a/apps/master-api/src/viaplay/client.ts +++ b/apps/master-api/src/viaplay/client.ts @@ -3,9 +3,9 @@ import type { ViaplayAccountCreds } from "./accounts"; import { toMediaGuid } from "./accounts"; import { inventoryFromNames, pickPlayCookies, type CookieInventory } from "./cookies"; -/** Zelfde UA als het werkende livescript (viaplay3.py). Edge/153 + sec-ch-ua gaf Don't go. */ +/** Zelfde UA als de werkende losse MPD-speler (Mac Chrome/122). */ export const VIAPLAY_USER_AGENT = - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"; + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"; export type ViaplayPlayResult = { mediaGuid: string; diff --git a/apps/tizen-tv/www/js/player.js b/apps/tizen-tv/www/js/player.js index 54884cb..3b0cfa0 100644 --- a/apps/tizen-tv/www/js/player.js +++ b/apps/tizen-tv/www/js/player.js @@ -384,7 +384,7 @@ var ua = "Mozilla/5.0 (SMART-TV; Linux; Tizen 6.0) AppleWebKit/537.36"; if (/viaplay/i.test(url)) { ua = - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"; + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"; } webapis.avplay.setStreamingProperty("USER_AGENT", ua); } catch (e2) {}