diff --git a/app/src/main/java/app/revanced/integrations/youtube/patches/misc/SpoofStreamingDataPatch.java b/app/src/main/java/app/revanced/integrations/youtube/patches/misc/SpoofStreamingDataPatch.java index 59ddc6da57..a00bac4521 100644 --- a/app/src/main/java/app/revanced/integrations/youtube/patches/misc/SpoofStreamingDataPatch.java +++ b/app/src/main/java/app/revanced/integrations/youtube/patches/misc/SpoofStreamingDataPatch.java @@ -19,7 +19,6 @@ @SuppressWarnings("unused") public class SpoofStreamingDataPatch { private static final boolean SPOOF_STREAMING_DATA = Settings.SPOOF_STREAMING_DATA.get(); - private static final ClientType SPOOF_STREAMING_DATA_TYPE = Settings.SPOOF_STREAMING_DATA_TYPE.get(); /** * Any unreachable ip address. Used to intentionally fail requests. @@ -56,6 +55,10 @@ public static Uri blockGetWatchRequest(Uri playerRequestUri) { * Injection point. *
* Blocks /initplayback requests. + *
+ * In some cases, blocking all URLs containing the path `initplayback`
+ * using localhost can also cause playback issues.
+ * See this GitHub Issue.
*/
public static String blockInitPlaybackRequest(String originalUrlString) {
if (SPOOF_STREAMING_DATA) {
@@ -64,17 +67,9 @@ public static String blockInitPlaybackRequest(String originalUrlString) {
String path = originalUri.getPath();
if (path != null && path.contains("initplayback")) {
- String replacementUriString = (SPOOF_STREAMING_DATA_TYPE == ClientType.IOS)
- ? UNREACHABLE_HOST_URI_STRING
- // TODO: Ideally, a local proxy could be setup and block
- // the request the same way as Burp Suite is capable of
- // because that way the request is never sent to YouTube unnecessarily.
- // Just using localhost unfortunately does not work.
- : originalUri.buildUpon().clearQuery().build().toString();
-
- Logger.printDebug(() -> "Blocking 'initplayback' by returning unreachable url");
+ Logger.printDebug(() -> "Blocking 'initplayback' by clearing query");
- return replacementUriString;
+ return originalUri.buildUpon().clearQuery().build().toString();
}
} catch (Exception ex) {
Logger.printException(() -> "blockInitPlaybackRequest failure", ex);
@@ -158,7 +153,7 @@ public static byte[] removeVideoPlaybackPostBody(Uri uri, int method, byte[] pos
String path = uri.getPath();
String clientNameQueryKey = "c";
final boolean iosClient = "IOS".equals(uri.getQueryParameter(clientNameQueryKey));
- if (iosClient && path != null && path.contains("videoplayback")) {
+ if (path != null && path.contains("videoplayback")) {
return null;
}
}
diff --git a/app/src/main/java/app/revanced/integrations/youtube/patches/misc/client/AppClient.java b/app/src/main/java/app/revanced/integrations/youtube/patches/misc/client/AppClient.java
index 0a57ef86be..21fc215be9 100644
--- a/app/src/main/java/app/revanced/integrations/youtube/patches/misc/client/AppClient.java
+++ b/app/src/main/java/app/revanced/integrations/youtube/patches/misc/client/AppClient.java
@@ -112,7 +112,7 @@ public class AppClient {
* Package name for YouTube VR (Meta Quests): com.google.android.apps.youtube.vr.oculus
* Package name for YouTube VR (ByteDance Pico 4): com.google.android.apps.youtube.vr.pico
*/
- private static final String USER_AGENT_ANDROID_VR = "com.google.android.youtube/" +
+ private static final String USER_AGENT_ANDROID_VR = "com.google.android.apps.youtube.vr.oculus/" +
CLIENT_VERSION_ANDROID_VR +
" (Linux; U; Android " +
OS_VERSION_ANDROID_VR +
diff --git a/app/src/main/java/app/revanced/integrations/youtube/patches/misc/requests/StreamingDataRequest.java b/app/src/main/java/app/revanced/integrations/youtube/patches/misc/requests/StreamingDataRequest.java
index 9ce54a41e2..0ae86b1aa1 100644
--- a/app/src/main/java/app/revanced/integrations/youtube/patches/misc/requests/StreamingDataRequest.java
+++ b/app/src/main/java/app/revanced/integrations/youtube/patches/misc/requests/StreamingDataRequest.java
@@ -59,11 +59,6 @@ public static String getLastSpoofedClientName() {
: lastSpoofedClientType.friendlyName;
}
- /**
- * How long to keep fetches until they are expired.
- */
- private static final long CACHE_RETENTION_TIME_MILLISECONDS = 5 * 60 * 1000; // 5 Minutes
-
/**
* TCP connection and HTTP read timeout.
*/
@@ -76,7 +71,7 @@ public static String getLastSpoofedClientName() {
@GuardedBy("itself")
private static final Map