From f73c923f60dced73e8ad409684e7e31d209b816b Mon Sep 17 00:00:00 2001 From: TiA4f8R <74829229+TiA4f8R@users.noreply.github.com> Date: Sun, 9 May 2021 16:14:37 +0200 Subject: [PATCH] Don't use the youtubei.googleapis.com but the websites domains + update client version of the desktop internal API Use again www.youtube.com and music.youtube.com domains instead of youtubei.googleapis.com domain because it spoofs more a web client of YouTube or YouTube Music and may reduce Google's detection of NewPipe Extractor users. --- .../extractor/services/youtube/YoutubeParsingHelper.java | 9 +++++---- .../youtube/extractors/YoutubeChannelExtractor.java | 3 +-- .../youtube/extractors/YoutubePlaylistExtractor.java | 3 +-- .../youtube/extractors/YoutubeSearchExtractor.java | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java index b60d235b..d7d3ecd7 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java @@ -64,9 +64,9 @@ public class YoutubeParsingHelper { private YoutubeParsingHelper() { } - private static final String HARDCODED_CLIENT_VERSION = "2.20210429.07.00"; + private static final String HARDCODED_CLIENT_VERSION = "2.20210506.07.00"; private static final String HARDCODED_KEY = "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"; - private static final String YOUTUBEI_V1_URL = "https://youtubei.googleapis.com/youtubei/v1/"; + private static final String YOUTUBEI_V1_URL = "https://www.youtube.com/youtubei/v1/"; private static String clientVersion; private static String key; @@ -464,7 +464,8 @@ public class YoutubeParsingHelper { public static boolean areHardcodedYoutubeMusicKeysValid() throws IOException, ReCaptchaException { - final String url = YOUTUBEI_V1_URL + "music/get_search_suggestions?alt=json&key=" + final String url = + "https://music.youtube.com/youtubei/v1/music/get_search_suggestions?alt=json&key=" + HARDCODED_YOUTUBE_MUSIC_KEYS[0]; // @formatter:off @@ -474,7 +475,7 @@ public class YoutubeParsingHelper { .object("client") .value("clientName", "WEB_REMIX") .value("clientVersion", HARDCODED_YOUTUBE_MUSIC_KEYS[2]) - .value("hl", "en") + .value("hl", "en-GB") .value("gl", "GB") .array("experimentIds").end() .value("experimentsToken", "") diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java index c5afd561..4a0391b0 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java @@ -383,8 +383,7 @@ public class YoutubeChannelExtractor extends ChannelExtractor { .done()) .getBytes(UTF_8); - return new Page("https://youtubei.googleapis.com/youtubei/v1/browse?key=" + getKey(), - body); + return new Page("https://www.youtube.com/youtubei/v1/browse?key=" + getKey(), body); } /** diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java index 8ea6dbcd..ee34c2a2 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java @@ -259,8 +259,7 @@ public class YoutubePlaylistExtractor extends PlaylistExtractor { .done()) .getBytes(UTF_8); - return new Page("https://youtubei.googleapis.com/youtubei/v1/browse?key=" - + getKey(), body); + return new Page("https://www.youtube.com/youtubei/v1/browse?key=" + getKey(), body); } else { return null; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java index 8877ffa3..e624b5fa 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java @@ -263,7 +263,7 @@ public class YoutubeSearchExtractor extends SearchExtractor { final String token = continuationItemRenderer.getObject("continuationEndpoint") .getObject("continuationCommand").getString("token"); - final String url = "https://youtubei.googleapis.com/youtubei/v1/search?key=" + getKey(); + final String url = "https://www.youtube.com/youtubei/v1/search?key=" + getKey(); return new Page(url, token); }