Merge pull request #863 from AudricV/add-content-type-and-content-length-headers-to-post-requests
Add Content-Type header to all POST requests without an empty body
This commit is contained in:
commit
d5437e0bc5
|
@ -7,6 +7,8 @@ import org.schabi.newpipe.extractor.localization.Localization;
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -39,7 +41,7 @@ public abstract class Downloader {
|
||||||
* @param localization the source of the value of the {@code Accept-Language} header
|
* @param localization the source of the value of the {@code Accept-Language} header
|
||||||
* @return the result of the GET request
|
* @return the result of the GET request
|
||||||
*/
|
*/
|
||||||
public Response get(final String url, @Nullable final Localization localization)
|
public Response get(final String url, final Localization localization)
|
||||||
throws IOException, ReCaptchaException {
|
throws IOException, ReCaptchaException {
|
||||||
return get(url, null, localization);
|
return get(url, null, localization);
|
||||||
}
|
}
|
||||||
|
@ -70,7 +72,7 @@ public abstract class Downloader {
|
||||||
*/
|
*/
|
||||||
public Response get(final String url,
|
public Response get(final String url,
|
||||||
@Nullable final Map<String, List<String>> headers,
|
@Nullable final Map<String, List<String>> headers,
|
||||||
@Nullable final Localization localization)
|
final Localization localization)
|
||||||
throws IOException, ReCaptchaException {
|
throws IOException, ReCaptchaException {
|
||||||
return execute(Request.newBuilder()
|
return execute(Request.newBuilder()
|
||||||
.get(url)
|
.get(url)
|
||||||
|
@ -112,7 +114,7 @@ public abstract class Downloader {
|
||||||
* @param headers a list of headers that will be used in the request.
|
* @param headers a list of headers that will be used in the request.
|
||||||
* Any default headers <b>should</b> be overridden by these.
|
* Any default headers <b>should</b> be overridden by these.
|
||||||
* @param dataToSend byte array that will be sent when doing the request.
|
* @param dataToSend byte array that will be sent when doing the request.
|
||||||
* @return the result of the GET request
|
* @return the result of the POST request
|
||||||
*/
|
*/
|
||||||
public Response post(final String url,
|
public Response post(final String url,
|
||||||
@Nullable final Map<String, List<String>> headers,
|
@Nullable final Map<String, List<String>> headers,
|
||||||
|
@ -131,12 +133,12 @@ public abstract class Downloader {
|
||||||
* Any default headers <b>should</b> be overridden by these.
|
* Any default headers <b>should</b> be overridden by these.
|
||||||
* @param dataToSend byte array that will be sent when doing the request.
|
* @param dataToSend byte array that will be sent when doing the request.
|
||||||
* @param localization the source of the value of the {@code Accept-Language} header
|
* @param localization the source of the value of the {@code Accept-Language} header
|
||||||
* @return the result of the GET request
|
* @return the result of the POST request
|
||||||
*/
|
*/
|
||||||
public Response post(final String url,
|
public Response post(final String url,
|
||||||
@Nullable final Map<String, List<String>> headers,
|
@Nullable final Map<String, List<String>> headers,
|
||||||
@Nullable final byte[] dataToSend,
|
@Nullable final byte[] dataToSend,
|
||||||
@Nullable final Localization localization)
|
final Localization localization)
|
||||||
throws IOException, ReCaptchaException {
|
throws IOException, ReCaptchaException {
|
||||||
return execute(Request.newBuilder()
|
return execute(Request.newBuilder()
|
||||||
.post(url, dataToSend)
|
.post(url, dataToSend)
|
||||||
|
@ -145,6 +147,95 @@ public abstract class Downloader {
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenient method to send a POST request using the specified value of the
|
||||||
|
* {@code Content-Type} header with a given {@link Localization}.
|
||||||
|
*
|
||||||
|
* @param url the URL that is pointing to the wanted resource
|
||||||
|
* @param headers a list of headers that will be used in the request.
|
||||||
|
* Any default headers <b>should</b> be overridden by these.
|
||||||
|
* @param dataToSend byte array that will be sent when doing the request.
|
||||||
|
* @param localization the source of the value of the {@code Accept-Language} header
|
||||||
|
* @param contentType the mime type of the body sent, which will be set as the value of the
|
||||||
|
* {@code Content-Type} header
|
||||||
|
* @return the result of the POST request
|
||||||
|
* @see #post(String, Map, byte[], Localization)
|
||||||
|
*/
|
||||||
|
public Response postWithContentType(final String url,
|
||||||
|
@Nullable final Map<String, List<String>> headers,
|
||||||
|
@Nullable final byte[] dataToSend,
|
||||||
|
final Localization localization,
|
||||||
|
final String contentType)
|
||||||
|
throws IOException, ReCaptchaException {
|
||||||
|
final Map<String, List<String>> actualHeaders = new HashMap<>();
|
||||||
|
if (headers != null) {
|
||||||
|
actualHeaders.putAll(headers);
|
||||||
|
}
|
||||||
|
actualHeaders.put("Content-Type", Collections.singletonList(contentType));
|
||||||
|
return post(url, actualHeaders, dataToSend, localization);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenient method to send a POST request using the specified value of the
|
||||||
|
* {@code Content-Type} header.
|
||||||
|
*
|
||||||
|
* @param url the URL that is pointing to the wanted resource
|
||||||
|
* @param headers a list of headers that will be used in the request.
|
||||||
|
* Any default headers <b>should</b> be overridden by these.
|
||||||
|
* @param dataToSend byte array that will be sent when doing the request.
|
||||||
|
* @param contentType the mime type of the body sent, which will be set as the value of the
|
||||||
|
* {@code Content-Type} header
|
||||||
|
* @return the result of the POST request
|
||||||
|
* @see #post(String, Map, byte[], Localization)
|
||||||
|
*/
|
||||||
|
public Response postWithContentType(final String url,
|
||||||
|
@Nullable final Map<String, List<String>> headers,
|
||||||
|
@Nullable final byte[] dataToSend,
|
||||||
|
final String contentType)
|
||||||
|
throws IOException, ReCaptchaException {
|
||||||
|
return postWithContentType(url, headers, dataToSend, NewPipe.getPreferredLocalization(),
|
||||||
|
contentType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenient method to send a POST request the JSON mime type as the value of the
|
||||||
|
* {@code Content-Type} header with a given {@link Localization}.
|
||||||
|
*
|
||||||
|
* @param url the URL that is pointing to the wanted resource
|
||||||
|
* @param headers a list of headers that will be used in the request.
|
||||||
|
* Any default headers <b>should</b> be overridden by these.
|
||||||
|
* @param dataToSend byte array that will be sent when doing the request.
|
||||||
|
* @param localization the source of the value of the {@code Accept-Language} header
|
||||||
|
* @return the result of the POST request
|
||||||
|
* @see #post(String, Map, byte[], Localization)
|
||||||
|
*/
|
||||||
|
public Response postWithContentTypeJson(final String url,
|
||||||
|
@Nullable final Map<String, List<String>> headers,
|
||||||
|
@Nullable final byte[] dataToSend,
|
||||||
|
final Localization localization)
|
||||||
|
throws IOException, ReCaptchaException {
|
||||||
|
return postWithContentType(url, headers, dataToSend, localization, "application/json");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenient method to send a POST request the JSON mime type as the value of the
|
||||||
|
* {@code Content-Type} header.
|
||||||
|
*
|
||||||
|
* @param url the URL that is pointing to the wanted resource
|
||||||
|
* @param headers a list of headers that will be used in the request.
|
||||||
|
* Any default headers <b>should</b> be overridden by these.
|
||||||
|
* @param dataToSend byte array that will be sent when doing the request.
|
||||||
|
* @return the result of the POST request
|
||||||
|
* @see #post(String, Map, byte[], Localization)
|
||||||
|
*/
|
||||||
|
public Response postWithContentTypeJson(final String url,
|
||||||
|
@Nullable final Map<String, List<String>> headers,
|
||||||
|
@Nullable final byte[] dataToSend)
|
||||||
|
throws IOException, ReCaptchaException {
|
||||||
|
return postWithContentTypeJson(url, headers, dataToSend,
|
||||||
|
NewPipe.getPreferredLocalization());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do a request using the specified {@link Request} object.
|
* Do a request using the specified {@link Request} object.
|
||||||
*
|
*
|
||||||
|
|
|
@ -6,22 +6,23 @@ import com.grack.nanojson.JsonObject;
|
||||||
import com.grack.nanojson.JsonParser;
|
import com.grack.nanojson.JsonParser;
|
||||||
import com.grack.nanojson.JsonParserException;
|
import com.grack.nanojson.JsonParserException;
|
||||||
import com.grack.nanojson.JsonWriter;
|
import com.grack.nanojson.JsonWriter;
|
||||||
|
|
||||||
import org.jsoup.Jsoup;
|
import org.jsoup.Jsoup;
|
||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
|
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
|
||||||
import org.schabi.newpipe.extractor.localization.DateWrapper;
|
import org.schabi.newpipe.extractor.localization.DateWrapper;
|
||||||
|
import org.schabi.newpipe.extractor.utils.Utils;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.time.DateTimeException;
|
import java.time.DateTimeException;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
public final class BandcampExtractorHelper {
|
public final class BandcampExtractorHelper {
|
||||||
|
|
||||||
public static final String BASE_URL = "https://bandcamp.com";
|
public static final String BASE_URL = "https://bandcamp.com";
|
||||||
|
@ -43,8 +44,8 @@ public final class BandcampExtractorHelper {
|
||||||
+ "&tralbum_id=" + itemId + "&tralbum_type=" + itemType.charAt(0))
|
+ "&tralbum_id=" + itemId + "&tralbum_type=" + itemType.charAt(0))
|
||||||
.responseBody();
|
.responseBody();
|
||||||
|
|
||||||
return JsonParser.object().from(jsonString)
|
return Utils.replaceHttpWithHttps(JsonParser.object().from(jsonString)
|
||||||
.getString("bandcamp_url").replace("http://", "https://");
|
.getString("bandcamp_url"));
|
||||||
|
|
||||||
} catch (final JsonParserException | ReCaptchaException | IOException e) {
|
} catch (final JsonParserException | ReCaptchaException | IOException e) {
|
||||||
throw new ParsingException("Ids could not be translated to URL", e);
|
throw new ParsingException("Ids could not be translated to URL", e);
|
||||||
|
@ -60,19 +61,15 @@ public final class BandcampExtractorHelper {
|
||||||
*/
|
*/
|
||||||
public static JsonObject getArtistDetails(final String id) throws ParsingException {
|
public static JsonObject getArtistDetails(final String id) throws ParsingException {
|
||||||
try {
|
try {
|
||||||
return
|
return JsonParser.object().from(NewPipe.getDownloader().postWithContentTypeJson(
|
||||||
JsonParser.object().from(
|
BASE_API_URL + "/mobile/22/band_details",
|
||||||
NewPipe.getDownloader().post(
|
Collections.emptyMap(),
|
||||||
BASE_API_URL + "/mobile/22/band_details",
|
JsonWriter.string()
|
||||||
null,
|
.object()
|
||||||
JsonWriter.string()
|
.value("band_id", id)
|
||||||
.object()
|
.end()
|
||||||
.value("band_id", id)
|
.done()
|
||||||
.end()
|
.getBytes(StandardCharsets.UTF_8)).responseBody());
|
||||||
.done()
|
|
||||||
.getBytes()
|
|
||||||
).responseBody()
|
|
||||||
);
|
|
||||||
} catch (final IOException | ReCaptchaException | JsonParserException e) {
|
} catch (final IOException | ReCaptchaException | JsonParserException e) {
|
||||||
throw new ParsingException("Could not download band details", e);
|
throw new ParsingException("Could not download band details", e);
|
||||||
}
|
}
|
||||||
|
@ -123,7 +120,7 @@ public final class BandcampExtractorHelper {
|
||||||
/**
|
/**
|
||||||
* Whether the URL points to a radio kiosk.
|
* Whether the URL points to a radio kiosk.
|
||||||
* @param url the URL to check
|
* @param url the URL to check
|
||||||
* @return true if the URL matches <code>https://bandcamp.com/?show=SHOW_ID</code>
|
* @return true if the URL matches {@code https://bandcamp.com/?show=SHOW_ID}
|
||||||
*/
|
*/
|
||||||
public static boolean isRadioUrl(final String url) {
|
public static boolean isRadioUrl(final String url) {
|
||||||
return url.toLowerCase().matches("https?://bandcamp\\.com/\\?show=\\d+");
|
return url.toLowerCase().matches("https?://bandcamp\\.com/\\?show=\\d+");
|
||||||
|
|
|
@ -18,6 +18,8 @@ import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemsCollector;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_API_URL;
|
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_API_URL;
|
||||||
|
|
||||||
|
@ -40,11 +42,11 @@ public class BandcampFeaturedExtractor extends KioskExtractor<PlaylistInfoItem>
|
||||||
public void onFetchPage(@Nonnull final Downloader downloader)
|
public void onFetchPage(@Nonnull final Downloader downloader)
|
||||||
throws IOException, ExtractionException {
|
throws IOException, ExtractionException {
|
||||||
try {
|
try {
|
||||||
json = JsonParser.object().from(
|
json = JsonParser.object().from(getDownloader().postWithContentTypeJson(
|
||||||
getDownloader().post(
|
FEATURED_API_URL,
|
||||||
FEATURED_API_URL, null, "{\"platform\":\"\",\"version\":0}".getBytes()
|
Collections.emptyMap(),
|
||||||
).responseBody()
|
"{\"platform\":\"\",\"version\":0}".getBytes(StandardCharsets.UTF_8))
|
||||||
);
|
.responseBody());
|
||||||
} catch (final JsonParserException e) {
|
} catch (final JsonParserException e) {
|
||||||
throw new ParsingException("Could not parse Bandcamp featured API response", e);
|
throw new ParsingException("Could not parse Bandcamp featured API response", e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -556,13 +556,13 @@ public final class YoutubeParsingHelper {
|
||||||
|
|
||||||
final Map<String, List<String>> headers = new HashMap<>();
|
final Map<String, List<String>> headers = new HashMap<>();
|
||||||
headers.put("X-YouTube-Client-Name", singletonList("1"));
|
headers.put("X-YouTube-Client-Name", singletonList("1"));
|
||||||
headers.put("X-YouTube-Client-Version",
|
headers.put("X-YouTube-Client-Version", singletonList(HARDCODED_CLIENT_VERSION));
|
||||||
singletonList(HARDCODED_CLIENT_VERSION));
|
|
||||||
|
|
||||||
// This endpoint is fetched by the YouTube website to get the items of its main menu and is
|
// This endpoint is fetched by the YouTube website to get the items of its main menu and is
|
||||||
// pretty lightweight (around 30kB)
|
// pretty lightweight (around 30kB)
|
||||||
final Response response = getDownloader().post(YOUTUBEI_V1_URL + "guide?key="
|
final Response response = getDownloader().postWithContentTypeJson(
|
||||||
+ HARDCODED_KEY + DISABLE_PRETTY_PRINT_PARAMETER, headers, body);
|
YOUTUBEI_V1_URL + "guide?key=" + HARDCODED_KEY + DISABLE_PRETTY_PRINT_PARAMETER,
|
||||||
|
headers, body);
|
||||||
final String responseBody = response.responseBody();
|
final String responseBody = response.responseBody();
|
||||||
final int responseCode = response.responseCode();
|
final int responseCode = response.responseCode();
|
||||||
|
|
||||||
|
@ -800,15 +800,12 @@ public final class YoutubeParsingHelper {
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|
||||||
final Map<String, List<String>> headers = new HashMap<>();
|
final Map<String, List<String>> headers = new HashMap<>();
|
||||||
headers.put("X-YouTube-Client-Name", singletonList(
|
headers.put("X-YouTube-Client-Name", singletonList(HARDCODED_YOUTUBE_MUSIC_KEY[1]));
|
||||||
HARDCODED_YOUTUBE_MUSIC_KEY[1]));
|
headers.put("X-YouTube-Client-Version", singletonList(HARDCODED_YOUTUBE_MUSIC_KEY[2]));
|
||||||
headers.put("X-YouTube-Client-Version", singletonList(
|
|
||||||
HARDCODED_YOUTUBE_MUSIC_KEY[2]));
|
|
||||||
headers.put("Origin", singletonList("https://music.youtube.com"));
|
headers.put("Origin", singletonList("https://music.youtube.com"));
|
||||||
headers.put("Referer", singletonList("music.youtube.com"));
|
headers.put("Referer", singletonList("https://music.youtube.com"));
|
||||||
headers.put("Content-Type", singletonList("application/json"));
|
|
||||||
|
|
||||||
final Response response = getDownloader().post(url, headers, json);
|
final Response response = getDownloader().postWithContentTypeJson(url, headers, json);
|
||||||
// Ensure to have a valid response
|
// Ensure to have a valid response
|
||||||
return response.responseBody().length() > 500 && response.responseCode() == 200;
|
return response.responseBody().length() > 500 && response.responseCode() == 200;
|
||||||
}
|
}
|
||||||
|
@ -1180,13 +1177,11 @@ public final class YoutubeParsingHelper {
|
||||||
final Localization localization)
|
final Localization localization)
|
||||||
throws IOException, ExtractionException {
|
throws IOException, ExtractionException {
|
||||||
final Map<String, List<String>> headers = new HashMap<>();
|
final Map<String, List<String>> headers = new HashMap<>();
|
||||||
addClientInfoHeaders(headers);
|
addYouTubeHeaders(headers);
|
||||||
headers.put("Content-Type", singletonList("application/json"));
|
|
||||||
|
|
||||||
final Response response = getDownloader().post(YOUTUBEI_V1_URL + endpoint + "?key="
|
return JsonUtils.toJsonObject(getValidJsonResponseBody(
|
||||||
+ getKey() + DISABLE_PRETTY_PRINT_PARAMETER, headers, body, localization);
|
getDownloader().postWithContentTypeJson(YOUTUBEI_V1_URL + endpoint + "?key="
|
||||||
|
+ getKey() + DISABLE_PRETTY_PRINT_PARAMETER, headers, body, localization)));
|
||||||
return JsonUtils.toJsonObject(getValidJsonResponseBody(response));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static JsonObject getJsonAndroidPostResponse(
|
public static JsonObject getJsonAndroidPostResponse(
|
||||||
|
@ -1215,17 +1210,17 @@ public final class YoutubeParsingHelper {
|
||||||
@Nonnull final String innerTubeApiKey,
|
@Nonnull final String innerTubeApiKey,
|
||||||
@Nullable final String endPartOfUrlRequest) throws IOException, ExtractionException {
|
@Nullable final String endPartOfUrlRequest) throws IOException, ExtractionException {
|
||||||
final Map<String, List<String>> headers = new HashMap<>();
|
final Map<String, List<String>> headers = new HashMap<>();
|
||||||
headers.put("Content-Type", singletonList("application/json"));
|
|
||||||
headers.put("User-Agent", singletonList(userAgent));
|
headers.put("User-Agent", singletonList(userAgent));
|
||||||
headers.put("X-Goog-Api-Format-Version", singletonList("2"));
|
headers.put("X-Goog-Api-Format-Version", singletonList("2"));
|
||||||
|
|
||||||
final String baseEndpointUrl = YOUTUBEI_V1_GAPIS_URL + endpoint + "?key=" + innerTubeApiKey
|
final String baseEndpointUrl = YOUTUBEI_V1_GAPIS_URL + endpoint + "?key=" + innerTubeApiKey
|
||||||
+ DISABLE_PRETTY_PRINT_PARAMETER;
|
+ DISABLE_PRETTY_PRINT_PARAMETER;
|
||||||
|
|
||||||
final Response response = getDownloader().post(isNullOrEmpty(endPartOfUrlRequest)
|
return JsonUtils.toJsonObject(getValidJsonResponseBody(
|
||||||
? baseEndpointUrl : baseEndpointUrl + endPartOfUrlRequest,
|
getDownloader().postWithContentTypeJson(isNullOrEmpty(endPartOfUrlRequest)
|
||||||
headers, body, localization);
|
? baseEndpointUrl
|
||||||
return JsonUtils.toJsonObject(getValidJsonResponseBody(response));
|
: baseEndpointUrl + endPartOfUrlRequest,
|
||||||
|
headers, body, localization)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
|
@ -1428,6 +1423,16 @@ public final class YoutubeParsingHelper {
|
||||||
+ ")";
|
+ ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
public static Map<String, List<String>> getYoutubeMusicHeaders() {
|
||||||
|
final Map<String, List<String>> headers = new HashMap<>();
|
||||||
|
headers.put("X-YouTube-Client-Name", Collections.singletonList(youtubeMusicKey[1]));
|
||||||
|
headers.put("X-YouTube-Client-Version", Collections.singletonList(youtubeMusicKey[2]));
|
||||||
|
headers.put("Origin", Collections.singletonList("https://music.youtube.com"));
|
||||||
|
headers.put("Referer", Collections.singletonList("https://music.youtube.com"));
|
||||||
|
return headers;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add required headers and cookies to an existing headers Map.
|
* Add required headers and cookies to an existing headers Map.
|
||||||
* @see #addClientInfoHeaders(Map)
|
* @see #addClientInfoHeaders(Map)
|
||||||
|
|
|
@ -35,7 +35,6 @@ import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.addClientInfoHeaders;
|
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getAndroidUserAgent;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getAndroidUserAgent;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getIosUserAgent;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getIosUserAgent;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.isAndroidStreamingUrl;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.isAndroidStreamingUrl;
|
||||||
|
@ -707,7 +706,8 @@ public final class YoutubeDashManifestCreatorsUtils {
|
||||||
throws CreationException {
|
throws CreationException {
|
||||||
try {
|
try {
|
||||||
final Map<String, List<String>> headers = new HashMap<>();
|
final Map<String, List<String>> headers = new HashMap<>();
|
||||||
addClientInfoHeaders(headers);
|
headers.put("Origin", Collections.singletonList("https://www.youtube.com"));
|
||||||
|
headers.put("Referer", Collections.singletonList("https://www.youtube.com"));
|
||||||
|
|
||||||
String responseMimeType = "";
|
String responseMimeType = "";
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,10 @@ package org.schabi.newpipe.extractor.services.youtube.extractors;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.DISABLE_PRETTY_PRINT_PARAMETER;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.DISABLE_PRETTY_PRINT_PARAMETER;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.YOUTUBEI_V1_URL;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.YOUTUBEI_V1_URL;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.addClientInfoHeaders;
|
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.fixThumbnailUrl;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.fixThumbnailUrl;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getKey;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getKey;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getValidJsonResponseBody;
|
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
|
|
||||||
|
@ -19,7 +17,6 @@ import org.schabi.newpipe.extractor.Page;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
||||||
import org.schabi.newpipe.extractor.downloader.Downloader;
|
import org.schabi.newpipe.extractor.downloader.Downloader;
|
||||||
import org.schabi.newpipe.extractor.downloader.Response;
|
|
||||||
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
|
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ContentNotSupportedException;
|
import org.schabi.newpipe.extractor.exceptions.ContentNotSupportedException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
|
@ -30,15 +27,13 @@ import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeChannelLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeChannelLinkHandlerFactory;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector;
|
import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector;
|
||||||
import org.schabi.newpipe.extractor.utils.JsonUtils;
|
|
||||||
import org.schabi.newpipe.extractor.utils.Utils;
|
import org.schabi.newpipe.extractor.utils.Utils;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
@ -85,8 +80,8 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFetchPage(@Nonnull final Downloader downloader) throws IOException,
|
public void onFetchPage(@Nonnull final Downloader downloader)
|
||||||
ExtractionException {
|
throws IOException, ExtractionException {
|
||||||
final String channelPath = super.getId();
|
final String channelPath = super.getId();
|
||||||
final String[] channelId = channelPath.split("/");
|
final String[] channelId = channelPath.split("/");
|
||||||
String id = "";
|
String id = "";
|
||||||
|
@ -103,17 +98,7 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
final JsonObject jsonResponse = getJsonPostResponse("navigation/resolve_url",
|
final JsonObject jsonResponse = getJsonPostResponse("navigation/resolve_url",
|
||||||
body, getExtractorLocalization());
|
body, getExtractorLocalization());
|
||||||
|
|
||||||
if (!isNullOrEmpty(jsonResponse.getObject("error"))) {
|
checkIfChannelResponseIsValid(jsonResponse);
|
||||||
final JsonObject errorJsonObject = jsonResponse.getObject("error");
|
|
||||||
final int errorCode = errorJsonObject.getInt("code");
|
|
||||||
if (errorCode == 404) {
|
|
||||||
throw new ContentNotAvailableException("This channel doesn't exist.");
|
|
||||||
} else {
|
|
||||||
throw new ContentNotAvailableException("Got error:\""
|
|
||||||
+ errorJsonObject.getString("status") + "\": "
|
|
||||||
+ errorJsonObject.getString("message"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final JsonObject endpoint = jsonResponse.getObject("endpoint");
|
final JsonObject endpoint = jsonResponse.getObject("endpoint");
|
||||||
|
|
||||||
|
@ -151,17 +136,7 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
final JsonObject jsonResponse = getJsonPostResponse("browse", body,
|
final JsonObject jsonResponse = getJsonPostResponse("browse", body,
|
||||||
getExtractorLocalization());
|
getExtractorLocalization());
|
||||||
|
|
||||||
if (!isNullOrEmpty(jsonResponse.getObject("error"))) {
|
checkIfChannelResponseIsValid(jsonResponse);
|
||||||
final JsonObject errorJsonObject = jsonResponse.getObject("error");
|
|
||||||
final int errorCode = errorJsonObject.getInt("code");
|
|
||||||
if (errorCode == 404) {
|
|
||||||
throw new ContentNotAvailableException("This channel doesn't exist.");
|
|
||||||
} else {
|
|
||||||
throw new ContentNotAvailableException("Got error:\""
|
|
||||||
+ errorJsonObject.getString("status") + "\": "
|
|
||||||
+ errorJsonObject.getString("message"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final JsonObject endpoint = jsonResponse.getArray("onResponseReceivedActions")
|
final JsonObject endpoint = jsonResponse.getArray("onResponseReceivedActions")
|
||||||
.getObject(0)
|
.getObject(0)
|
||||||
|
@ -199,6 +174,21 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
YoutubeParsingHelper.defaultAlertsCheck(initialData);
|
YoutubeParsingHelper.defaultAlertsCheck(initialData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkIfChannelResponseIsValid(@Nonnull final JsonObject jsonResponse)
|
||||||
|
throws ContentNotAvailableException {
|
||||||
|
if (!isNullOrEmpty(jsonResponse.getObject("error"))) {
|
||||||
|
final JsonObject errorJsonObject = jsonResponse.getObject("error");
|
||||||
|
final int errorCode = errorJsonObject.getInt("code");
|
||||||
|
if (errorCode == 404) {
|
||||||
|
throw new ContentNotAvailableException("This channel doesn't exist.");
|
||||||
|
} else {
|
||||||
|
throw new ContentNotAvailableException("Got error:\""
|
||||||
|
+ errorJsonObject.getString("status") + "\": "
|
||||||
|
+ errorJsonObject.getString("message"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getUrl() throws ParsingException {
|
public String getUrl() throws ParsingException {
|
||||||
|
@ -354,8 +344,8 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InfoItemsPage<StreamInfoItem> getPage(final Page page) throws IOException,
|
public InfoItemsPage<StreamInfoItem> getPage(final Page page)
|
||||||
ExtractionException {
|
throws IOException, ExtractionException {
|
||||||
if (page == null || isNullOrEmpty(page.getUrl())) {
|
if (page == null || isNullOrEmpty(page.getUrl())) {
|
||||||
throw new IllegalArgumentException("Page doesn't contain an URL");
|
throw new IllegalArgumentException("Page doesn't contain an URL");
|
||||||
}
|
}
|
||||||
|
@ -363,14 +353,10 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
final List<String> channelIds = page.getIds();
|
final List<String> channelIds = page.getIds();
|
||||||
|
|
||||||
final StreamInfoItemsCollector collector = new StreamInfoItemsCollector(getServiceId());
|
final StreamInfoItemsCollector collector = new StreamInfoItemsCollector(getServiceId());
|
||||||
final Map<String, List<String>> headers = new HashMap<>();
|
|
||||||
addClientInfoHeaders(headers);
|
|
||||||
|
|
||||||
final Response response = getDownloader().post(page.getUrl(), null, page.getBody(),
|
final JsonObject ajaxJson = getJsonPostResponse("browse", page.getBody(),
|
||||||
getExtractorLocalization());
|
getExtractorLocalization());
|
||||||
|
|
||||||
final JsonObject ajaxJson = JsonUtils.toJsonObject(getValidJsonResponseBody(response));
|
|
||||||
|
|
||||||
final JsonObject sectionListContinuation = ajaxJson.getArray("onResponseReceivedActions")
|
final JsonObject sectionListContinuation = ajaxJson.getArray("onResponseReceivedActions")
|
||||||
.getObject(0)
|
.getObject(0)
|
||||||
.getObject("appendContinuationItemsAction");
|
.getObject("appendContinuationItemsAction");
|
||||||
|
@ -383,8 +369,8 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private Page getNextPageFrom(final JsonObject continuations,
|
private Page getNextPageFrom(final JsonObject continuations,
|
||||||
final List<String> channelIds) throws IOException,
|
final List<String> channelIds)
|
||||||
ExtractionException {
|
throws IOException, ExtractionException {
|
||||||
if (isNullOrEmpty(continuations)) {
|
if (isNullOrEmpty(continuations)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -462,39 +448,43 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private JsonObject getVideoTab() throws ParsingException {
|
private JsonObject getVideoTab() throws ParsingException {
|
||||||
if (this.videoTab != null) {
|
if (videoTab != null) {
|
||||||
return this.videoTab;
|
return videoTab;
|
||||||
}
|
}
|
||||||
|
|
||||||
final JsonArray tabs = initialData.getObject("contents")
|
final JsonArray tabs = initialData.getObject("contents")
|
||||||
.getObject("twoColumnBrowseResultsRenderer")
|
.getObject("twoColumnBrowseResultsRenderer")
|
||||||
.getArray("tabs");
|
.getArray("tabs");
|
||||||
|
|
||||||
JsonObject foundVideoTab = null;
|
final JsonObject foundVideoTab = tabs.stream()
|
||||||
for (final Object tab : tabs) {
|
.filter(Objects::nonNull)
|
||||||
if (((JsonObject) tab).has("tabRenderer")) {
|
.filter(JsonObject.class::isInstance)
|
||||||
if (((JsonObject) tab).getObject("tabRenderer").getString("title",
|
.map(JsonObject.class::cast)
|
||||||
"").equals("Videos")) {
|
.filter(tab -> tab.has("tabRenderer")
|
||||||
foundVideoTab = ((JsonObject) tab).getObject("tabRenderer");
|
&& tab.getObject("tabRenderer")
|
||||||
break;
|
.getString("title", "")
|
||||||
}
|
.equals("Videos"))
|
||||||
}
|
.findFirst()
|
||||||
}
|
.map(tab -> tab.getObject("tabRenderer"))
|
||||||
|
.orElseThrow(
|
||||||
|
() -> new ContentNotSupportedException("This channel has no Videos tab"));
|
||||||
|
|
||||||
if (foundVideoTab == null) {
|
final String messageRendererText = getTextFromObject(
|
||||||
throw new ContentNotSupportedException("This channel has no Videos tab");
|
foundVideoTab.getObject("content")
|
||||||
}
|
.getObject("sectionListRenderer")
|
||||||
|
.getArray("contents")
|
||||||
final String messageRendererText = getTextFromObject(foundVideoTab.getObject("content")
|
.getObject(0)
|
||||||
.getObject("sectionListRenderer").getArray("contents").getObject(0)
|
.getObject("itemSectionRenderer")
|
||||||
.getObject("itemSectionRenderer").getArray("contents").getObject(0)
|
.getArray("contents")
|
||||||
.getObject("messageRenderer").getObject("text"));
|
.getObject(0)
|
||||||
|
.getObject("messageRenderer")
|
||||||
|
.getObject("text"));
|
||||||
if (messageRendererText != null
|
if (messageRendererText != null
|
||||||
&& messageRendererText.equals("This channel has no videos.")) {
|
&& messageRendererText.equals("This channel has no videos.")) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.videoTab = foundVideoTab;
|
videoTab = foundVideoTab;
|
||||||
return foundVideoTab;
|
return foundVideoTab;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,8 +92,9 @@ public class YoutubeMixPlaylistExtractor extends PlaylistExtractor {
|
||||||
// Cookie is required due to consent
|
// Cookie is required due to consent
|
||||||
addYouTubeHeaders(headers);
|
addYouTubeHeaders(headers);
|
||||||
|
|
||||||
final Response response = getDownloader().post(YOUTUBEI_V1_URL + "next?key=" + getKey()
|
final Response response = getDownloader().postWithContentTypeJson(
|
||||||
+ DISABLE_PRETTY_PRINT_PARAMETER, headers, body, localization);
|
YOUTUBEI_V1_URL + "next?key=" + getKey() + DISABLE_PRETTY_PRINT_PARAMETER,
|
||||||
|
headers, body, localization);
|
||||||
|
|
||||||
initialData = JsonUtils.toJsonObject(getValidJsonResponseBody(response));
|
initialData = JsonUtils.toJsonObject(getValidJsonResponseBody(response));
|
||||||
playlistData = initialData
|
playlistData = initialData
|
||||||
|
@ -225,8 +226,8 @@ public class YoutubeMixPlaylistExtractor extends PlaylistExtractor {
|
||||||
// Cookie is required due to consent
|
// Cookie is required due to consent
|
||||||
addYouTubeHeaders(headers);
|
addYouTubeHeaders(headers);
|
||||||
|
|
||||||
final Response response = getDownloader().post(page.getUrl(), headers, page.getBody(),
|
final Response response = getDownloader().postWithContentTypeJson(page.getUrl(), headers,
|
||||||
getExtractorLocalization());
|
page.getBody(), getExtractorLocalization());
|
||||||
final JsonObject ajaxJson = JsonUtils.toJsonObject(getValidJsonResponseBody(response));
|
final JsonObject ajaxJson = JsonUtils.toJsonObject(getValidJsonResponseBody(response));
|
||||||
final JsonObject playlistJson = ajaxJson.getObject("contents")
|
final JsonObject playlistJson = ajaxJson.getObject("contents")
|
||||||
.getObject("twoColumnWatchNextResults").getObject("playlist").getObject("playlist");
|
.getObject("twoColumnWatchNextResults").getObject("playlist").getObject("playlist");
|
||||||
|
|
|
@ -5,6 +5,7 @@ import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getUrlFromNavigationEndpoint;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getUrlFromNavigationEndpoint;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getValidJsonResponseBody;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getValidJsonResponseBody;
|
||||||
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getYoutubeMusicHeaders;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_ALBUMS;
|
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_ALBUMS;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_ARTISTS;
|
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_ARTISTS;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_PLAYLISTS;
|
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_PLAYLISTS;
|
||||||
|
@ -39,9 +40,7 @@ import org.schabi.newpipe.extractor.utils.Utils;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
@ -116,15 +115,8 @@ public class YoutubeMusicSearchExtractor extends SearchExtractor {
|
||||||
.end().done().getBytes(StandardCharsets.UTF_8);
|
.end().done().getBytes(StandardCharsets.UTF_8);
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|
||||||
final Map<String, List<String>> headers = new HashMap<>();
|
final String responseBody = getValidJsonResponseBody(
|
||||||
headers.put("X-YouTube-Client-Name", Collections.singletonList(youtubeMusicKeys[1]));
|
getDownloader().postWithContentTypeJson(url, getYoutubeMusicHeaders(), json));
|
||||||
headers.put("X-YouTube-Client-Version", Collections.singletonList(youtubeMusicKeys[2]));
|
|
||||||
headers.put("Origin", Collections.singletonList("https://music.youtube.com"));
|
|
||||||
headers.put("Referer", Collections.singletonList("music.youtube.com"));
|
|
||||||
headers.put("Content-Type", Collections.singletonList("application/json"));
|
|
||||||
|
|
||||||
final String responseBody = getValidJsonResponseBody(getDownloader().post(url, headers,
|
|
||||||
json));
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
initialData = JsonParser.object().from(responseBody);
|
initialData = JsonParser.object().from(responseBody);
|
||||||
|
@ -251,15 +243,9 @@ public class YoutubeMusicSearchExtractor extends SearchExtractor {
|
||||||
.end().done().getBytes(StandardCharsets.UTF_8);
|
.end().done().getBytes(StandardCharsets.UTF_8);
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|
||||||
final Map<String, List<String>> headers = new HashMap<>();
|
final String responseBody = getValidJsonResponseBody(
|
||||||
headers.put("X-YouTube-Client-Name", Collections.singletonList(youtubeMusicKeys[1]));
|
getDownloader().postWithContentTypeJson(
|
||||||
headers.put("X-YouTube-Client-Version", Collections.singletonList(youtubeMusicKeys[2]));
|
page.getUrl(), getYoutubeMusicHeaders(), json));
|
||||||
headers.put("Origin", Collections.singletonList("https://music.youtube.com"));
|
|
||||||
headers.put("Referer", Collections.singletonList("music.youtube.com"));
|
|
||||||
headers.put("Content-Type", Collections.singletonList("application/json"));
|
|
||||||
|
|
||||||
final String responseBody = getValidJsonResponseBody(getDownloader().post(page.getUrl(),
|
|
||||||
headers, json));
|
|
||||||
|
|
||||||
final JsonObject ajaxJson;
|
final JsonObject ajaxJson;
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -2,25 +2,21 @@ package org.schabi.newpipe.extractor.services.youtube.extractors;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.DISABLE_PRETTY_PRINT_PARAMETER;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.DISABLE_PRETTY_PRINT_PARAMETER;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.YOUTUBEI_V1_URL;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.YOUTUBEI_V1_URL;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.addClientInfoHeaders;
|
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.extractPlaylistTypeFromPlaylistUrl;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.extractPlaylistTypeFromPlaylistUrl;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.fixThumbnailUrl;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.fixThumbnailUrl;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getKey;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getKey;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getUrlFromNavigationEndpoint;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getUrlFromNavigationEndpoint;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getValidJsonResponseBody;
|
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
|
|
||||||
import com.grack.nanojson.JsonArray;
|
import com.grack.nanojson.JsonArray;
|
||||||
import com.grack.nanojson.JsonObject;
|
import com.grack.nanojson.JsonObject;
|
||||||
import com.grack.nanojson.JsonWriter;
|
import com.grack.nanojson.JsonWriter;
|
||||||
|
|
||||||
import org.schabi.newpipe.extractor.Page;
|
import org.schabi.newpipe.extractor.Page;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
import org.schabi.newpipe.extractor.downloader.Downloader;
|
import org.schabi.newpipe.extractor.downloader.Downloader;
|
||||||
import org.schabi.newpipe.extractor.downloader.Response;
|
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
|
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
|
||||||
|
@ -31,17 +27,12 @@ import org.schabi.newpipe.extractor.playlist.PlaylistInfo;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector;
|
import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector;
|
||||||
import org.schabi.newpipe.extractor.utils.JsonUtils;
|
|
||||||
import org.schabi.newpipe.extractor.utils.Utils;
|
import org.schabi.newpipe.extractor.utils.Utils;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
public class YoutubePlaylistExtractor extends PlaylistExtractor {
|
public class YoutubePlaylistExtractor extends PlaylistExtractor {
|
||||||
// Names of some objects in JSON response frequently used in this class
|
// Names of some objects in JSON response frequently used in this class
|
||||||
|
@ -349,12 +340,9 @@ public class YoutubePlaylistExtractor extends PlaylistExtractor {
|
||||||
}
|
}
|
||||||
|
|
||||||
final StreamInfoItemsCollector collector = new StreamInfoItemsCollector(getServiceId());
|
final StreamInfoItemsCollector collector = new StreamInfoItemsCollector(getServiceId());
|
||||||
final Map<String, List<String>> headers = new HashMap<>();
|
|
||||||
addClientInfoHeaders(headers);
|
|
||||||
|
|
||||||
final Response response = getDownloader().post(page.getUrl(), headers, page.getBody(),
|
final JsonObject ajaxJson = getJsonPostResponse("browse", page.getBody(),
|
||||||
getExtractorLocalization());
|
getExtractorLocalization());
|
||||||
final JsonObject ajaxJson = JsonUtils.toJsonObject(getValidJsonResponseBody(response));
|
|
||||||
|
|
||||||
final JsonArray continuation = ajaxJson.getArray("onResponseReceivedActions")
|
final JsonArray continuation = ajaxJson.getArray("onResponseReceivedActions")
|
||||||
.getObject(0)
|
.getObject(0)
|
||||||
|
|
|
@ -5,7 +5,6 @@ import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getKey;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getKey;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getValidJsonResponseBody;
|
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.getSearchParameter;
|
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.getSearchParameter;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
|
@ -13,8 +12,6 @@ import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
import com.grack.nanojson.JsonArray;
|
import com.grack.nanojson.JsonArray;
|
||||||
import com.grack.nanojson.JsonBuilder;
|
import com.grack.nanojson.JsonBuilder;
|
||||||
import com.grack.nanojson.JsonObject;
|
import com.grack.nanojson.JsonObject;
|
||||||
import com.grack.nanojson.JsonParser;
|
|
||||||
import com.grack.nanojson.JsonParserException;
|
|
||||||
import com.grack.nanojson.JsonWriter;
|
import com.grack.nanojson.JsonWriter;
|
||||||
|
|
||||||
import org.schabi.newpipe.extractor.InfoItem;
|
import org.schabi.newpipe.extractor.InfoItem;
|
||||||
|
@ -34,10 +31,10 @@ import org.schabi.newpipe.extractor.utils.JsonUtils;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Created by Christian Schabesberger on 22.07.2018
|
* Created by Christian Schabesberger on 22.07.2018
|
||||||
|
@ -105,10 +102,14 @@ public class YoutubeSearchExtractor extends SearchExtractor {
|
||||||
@Override
|
@Override
|
||||||
public String getSearchSuggestion() throws ParsingException {
|
public String getSearchSuggestion() throws ParsingException {
|
||||||
final JsonObject itemSectionRenderer = initialData.getObject("contents")
|
final JsonObject itemSectionRenderer = initialData.getObject("contents")
|
||||||
.getObject("twoColumnSearchResultsRenderer").getObject("primaryContents")
|
.getObject("twoColumnSearchResultsRenderer")
|
||||||
.getObject("sectionListRenderer").getArray("contents").getObject(0)
|
.getObject("primaryContents")
|
||||||
|
.getObject("sectionListRenderer")
|
||||||
|
.getArray("contents")
|
||||||
|
.getObject(0)
|
||||||
.getObject("itemSectionRenderer");
|
.getObject("itemSectionRenderer");
|
||||||
final JsonObject didYouMeanRenderer = itemSectionRenderer.getArray("contents").getObject(0)
|
final JsonObject didYouMeanRenderer = itemSectionRenderer.getArray("contents")
|
||||||
|
.getObject(0)
|
||||||
.getObject("didYouMeanRenderer");
|
.getObject("didYouMeanRenderer");
|
||||||
final JsonObject showingResultsForRenderer = itemSectionRenderer.getArray("contents")
|
final JsonObject showingResultsForRenderer = itemSectionRenderer.getArray("contents")
|
||||||
.getObject(0)
|
.getObject(0)
|
||||||
|
@ -138,8 +139,10 @@ public class YoutubeSearchExtractor extends SearchExtractor {
|
||||||
@Override
|
@Override
|
||||||
public List<MetaInfo> getMetaInfo() throws ParsingException {
|
public List<MetaInfo> getMetaInfo() throws ParsingException {
|
||||||
return YoutubeParsingHelper.getMetaInfo(
|
return YoutubeParsingHelper.getMetaInfo(
|
||||||
initialData.getObject("contents").getObject("twoColumnSearchResultsRenderer")
|
initialData.getObject("contents")
|
||||||
.getObject("primaryContents").getObject("sectionListRenderer")
|
.getObject("twoColumnSearchResultsRenderer")
|
||||||
|
.getObject("primaryContents")
|
||||||
|
.getObject("sectionListRenderer")
|
||||||
.getArray("contents"));
|
.getArray("contents"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,20 +152,23 @@ public class YoutubeSearchExtractor extends SearchExtractor {
|
||||||
final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId());
|
final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId());
|
||||||
|
|
||||||
final JsonArray sections = initialData.getObject("contents")
|
final JsonArray sections = initialData.getObject("contents")
|
||||||
.getObject("twoColumnSearchResultsRenderer").getObject("primaryContents")
|
.getObject("twoColumnSearchResultsRenderer")
|
||||||
.getObject("sectionListRenderer").getArray("contents");
|
.getObject("primaryContents")
|
||||||
|
.getObject("sectionListRenderer")
|
||||||
|
.getArray("contents");
|
||||||
|
|
||||||
Page nextPage = null;
|
Page nextPage = null;
|
||||||
|
|
||||||
for (final Object section : sections) {
|
for (final Object section : sections) {
|
||||||
if (((JsonObject) section).has("itemSectionRenderer")) {
|
final JsonObject sectionJsonObject = (JsonObject) section;
|
||||||
final JsonObject itemSectionRenderer = ((JsonObject) section)
|
if (sectionJsonObject.has("itemSectionRenderer")) {
|
||||||
.getObject("itemSectionRenderer");
|
final JsonObject itemSectionRenderer =
|
||||||
|
sectionJsonObject.getObject("itemSectionRenderer");
|
||||||
|
|
||||||
collectStreamsFrom(collector, itemSectionRenderer.getArray("contents"));
|
collectStreamsFrom(collector, itemSectionRenderer.getArray("contents"));
|
||||||
} else if (((JsonObject) section).has("continuationItemRenderer")) {
|
} else if (sectionJsonObject.has("continuationItemRenderer")) {
|
||||||
nextPage = getNextPageFrom(((JsonObject) section)
|
nextPage = getNextPageFrom(
|
||||||
.getObject("continuationItemRenderer"));
|
sectionJsonObject.getObject("continuationItemRenderer"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,22 +193,16 @@ public class YoutubeSearchExtractor extends SearchExtractor {
|
||||||
.getBytes(StandardCharsets.UTF_8);
|
.getBytes(StandardCharsets.UTF_8);
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|
||||||
final String responseBody = getValidJsonResponseBody(getDownloader().post(
|
final JsonObject ajaxJson = getJsonPostResponse("search", json, localization);
|
||||||
page.getUrl(), new HashMap<>(), json));
|
|
||||||
|
|
||||||
final JsonObject ajaxJson;
|
|
||||||
try {
|
|
||||||
ajaxJson = JsonParser.object().from(responseBody);
|
|
||||||
} catch (final JsonParserException e) {
|
|
||||||
throw new ParsingException("Could not parse JSON", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
final JsonArray continuationItems = ajaxJson.getArray("onResponseReceivedCommands")
|
final JsonArray continuationItems = ajaxJson.getArray("onResponseReceivedCommands")
|
||||||
.getObject(0).getObject("appendContinuationItemsAction")
|
.getObject(0)
|
||||||
|
.getObject("appendContinuationItemsAction")
|
||||||
.getArray("continuationItems");
|
.getArray("continuationItems");
|
||||||
|
|
||||||
final JsonArray contents = continuationItems.getObject(0)
|
final JsonArray contents = continuationItems.getObject(0)
|
||||||
.getObject("itemSectionRenderer").getArray("contents");
|
.getObject("itemSectionRenderer")
|
||||||
|
.getArray("contents");
|
||||||
collectStreamsFrom(collector, contents);
|
collectStreamsFrom(collector, contents);
|
||||||
|
|
||||||
return new InfoItemsPage<>(collector, getNextPageFrom(continuationItems.getObject(1)
|
return new InfoItemsPage<>(collector, getNextPageFrom(continuationItems.getObject(1)
|
||||||
|
@ -210,28 +210,30 @@ public class YoutubeSearchExtractor extends SearchExtractor {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void collectStreamsFrom(final MultiInfoItemsCollector collector,
|
private void collectStreamsFrom(final MultiInfoItemsCollector collector,
|
||||||
final JsonArray contents) throws NothingFoundException,
|
@Nonnull final JsonArray contents)
|
||||||
ParsingException {
|
throws NothingFoundException, ParsingException {
|
||||||
final TimeAgoParser timeAgoParser = getTimeAgoParser();
|
final TimeAgoParser timeAgoParser = getTimeAgoParser();
|
||||||
|
|
||||||
for (final Object content : contents) {
|
for (final Object content : contents) {
|
||||||
final JsonObject item = (JsonObject) content;
|
final JsonObject item = (JsonObject) content;
|
||||||
if (item.has("backgroundPromoRenderer")) {
|
if (item.has("backgroundPromoRenderer")) {
|
||||||
throw new NothingFoundException(getTextFromObject(
|
throw new NothingFoundException(
|
||||||
item.getObject("backgroundPromoRenderer").getObject("bodyText")));
|
getTextFromObject(item.getObject("backgroundPromoRenderer")
|
||||||
|
.getObject("bodyText")));
|
||||||
} else if (item.has("videoRenderer")) {
|
} else if (item.has("videoRenderer")) {
|
||||||
collector.commit(new YoutubeStreamInfoItemExtractor(item
|
collector.commit(new YoutubeStreamInfoItemExtractor(
|
||||||
.getObject("videoRenderer"), timeAgoParser));
|
item.getObject("videoRenderer"), timeAgoParser));
|
||||||
} else if (item.has("channelRenderer")) {
|
} else if (item.has("channelRenderer")) {
|
||||||
collector.commit(new YoutubeChannelInfoItemExtractor(item
|
collector.commit(new YoutubeChannelInfoItemExtractor(
|
||||||
.getObject("channelRenderer")));
|
item.getObject("channelRenderer")));
|
||||||
} else if (item.has("playlistRenderer")) {
|
} else if (item.has("playlistRenderer")) {
|
||||||
collector.commit(new YoutubePlaylistInfoItemExtractor(item
|
collector.commit(new YoutubePlaylistInfoItemExtractor(
|
||||||
.getObject("playlistRenderer")));
|
item.getObject("playlistRenderer")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
private Page getNextPageFrom(final JsonObject continuationItemRenderer) throws IOException,
|
private Page getNextPageFrom(final JsonObject continuationItemRenderer) throws IOException,
|
||||||
ExtractionException {
|
ExtractionException {
|
||||||
if (isNullOrEmpty(continuationItemRenderer)) {
|
if (isNullOrEmpty(continuationItemRenderer)) {
|
||||||
|
@ -239,7 +241,8 @@ public class YoutubeSearchExtractor extends SearchExtractor {
|
||||||
}
|
}
|
||||||
|
|
||||||
final String token = continuationItemRenderer.getObject("continuationEndpoint")
|
final String token = continuationItemRenderer.getObject("continuationEndpoint")
|
||||||
.getObject("continuationCommand").getString("token");
|
.getObject("continuationCommand")
|
||||||
|
.getString("token");
|
||||||
|
|
||||||
final String url = YOUTUBEI_V1_URL + "search?key=" + getKey()
|
final String url = YOUTUBEI_V1_URL + "search?key=" + getKey()
|
||||||
+ DISABLE_PRETTY_PRINT_PARAMETER;
|
+ DISABLE_PRETTY_PRINT_PARAMETER;
|
||||||
|
|
|
@ -271,7 +271,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
Description.PLAIN_TEXT),
|
Description.PLAIN_TEXT),
|
||||||
Collections.singletonList(
|
Collections.singletonList(
|
||||||
new URL("https://www.who.int/emergencies/diseases/novel-coronavirus-2019")),
|
new URL("https://www.who.int/emergencies/diseases/novel-coronavirus-2019")),
|
||||||
Collections.singletonList("LEARN MORE")
|
Collections.singletonList("Learn more")
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
// testMoreRelatedItems is broken because a video has no duration shown
|
// testMoreRelatedItems is broken because a video has no duration shown
|
||||||
|
|
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:15:42 GMT"
|
"Tue, 22 Nov 2022 10:40:53 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:15:42 GMT"
|
"Tue, 22 Nov 2022 10:40:53 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dzvoZRVLWdUQ; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dKWKE6LaMJTE; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:15:42 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:53 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+621; expires\u003dSun, 11-Aug-2024 17:15:42 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+649; expires\u003dThu, 21-Nov-2024 10:40:53 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -41,10 +41,10 @@
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Wed, 02 Nov 2022 17:40:55 GMT"
|
"Tue, 22 Nov 2022 10:40:09 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Wed, 02 Nov 2022 17:40:55 GMT"
|
"Tue, 22 Nov 2022 10:40:09 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
|
@ -59,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003d6aCd9lqn2z8; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dzHVq5e9PsrU; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dThu, 06-Feb-2020 17:40:55 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:09 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+174; expires\u003dFri, 01-Nov-2024 17:40:54 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+815; expires\u003dThu, 21-Nov-2024 10:40:09 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -6,14 +6,17 @@
|
||||||
"Origin": [
|
"Origin": [
|
||||||
"https://www.youtube.com"
|
"https://www.youtube.com"
|
||||||
],
|
],
|
||||||
"X-YouTube-Client-Name": [
|
"Cookie": [
|
||||||
"1"
|
"CONSENT\u003dPENDING+488"
|
||||||
],
|
],
|
||||||
"Referer": [
|
"Referer": [
|
||||||
"https://www.youtube.com"
|
"https://www.youtube.com"
|
||||||
],
|
],
|
||||||
"X-YouTube-Client-Version": [
|
"X-YouTube-Client-Version": [
|
||||||
"2.20221101.00.00"
|
"2.20221118.01.00"
|
||||||
|
],
|
||||||
|
"X-YouTube-Client-Name": [
|
||||||
|
"1"
|
||||||
],
|
],
|
||||||
"Content-Type": [
|
"Content-Type": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
@ -207,11 +210,11 @@
|
||||||
50,
|
50,
|
||||||
49,
|
49,
|
||||||
49,
|
49,
|
||||||
48,
|
|
||||||
49,
|
49,
|
||||||
|
56,
|
||||||
46,
|
46,
|
||||||
48,
|
48,
|
||||||
48,
|
49,
|
||||||
46,
|
46,
|
||||||
48,
|
48,
|
||||||
48,
|
48,
|
||||||
|
@ -338,20 +341,11 @@
|
||||||
"application/json; charset\u003dUTF-8"
|
"application/json; charset\u003dUTF-8"
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Wed, 02 Nov 2022 17:40:55 GMT"
|
"Tue, 22 Nov 2022 10:40:10 GMT"
|
||||||
],
|
|
||||||
"expires": [
|
|
||||||
"Wed, 02 Nov 2022 17:40:55 GMT"
|
|
||||||
],
|
|
||||||
"p3p": [
|
|
||||||
"CP\u003d\"This is not a P3P policy! See g.co/p3phelp for more info.\""
|
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
"scaffolding on HTTPServer2"
|
"scaffolding on HTTPServer2"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
|
||||||
"CONSENT\u003dPENDING+984; expires\u003dFri, 01-Nov-2024 17:40:55 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
|
||||||
],
|
|
||||||
"vary": [
|
"vary": [
|
||||||
"Origin",
|
"Origin",
|
||||||
"X-Origin",
|
"X-Origin",
|
||||||
|
@ -367,7 +361,7 @@
|
||||||
"0"
|
"0"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"responseBody": "{\"responseContext\":{\"visitorData\":\"CgtJUUxxcnRoM214WSin14qbBg%3D%3D\",\"serviceTrackingParams\":[{\"service\":\"CSI\",\"params\":[{\"key\":\"c\",\"value\":\"WEB\"},{\"key\":\"cver\",\"value\":\"2.20221101.00.00\"},{\"key\":\"yt_li\",\"value\":\"0\"},{\"key\":\"ResolveUrl_rid\",\"value\":\"0x7b414305caad8bf8\"}]},{\"service\":\"GFEEDBACK\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"},{\"key\":\"e\",\"value\":\"1714257,23804281,23882502,23885487,23918597,23934970,23946420,23966208,23983296,23986016,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036947,24077241,24080738,24120820,24135310,24140247,24152443,24161116,24162920,24164186,24166867,24169501,24181174,24184446,24185614,24187043,24187377,24191629,24199724,24206234,24209350,24211178,24219713,24229161,24230618,24241378,24246502,24248092,24254502,24255165,24255543,24255545,24260783,24262346,24263796,24265820,24267564,24267570,24268142,24269410,24278596,24279196,24279540,24279628,24282828,24283093,24283556,24286003,24286019,24287169,24287327,24287795,24288047,24288489,24288912,24290289,24290971,24291857,24292739,24292955,24299747,24390674,24391539,24392268,24392399,24392496,24393382,24394548,24395541,24396645,24396818,24398124,24398996,24400009,24400945,24401557,24406381,24406604,24406983,24407199,24407452,24408951,24411026,39322399,39322504,39322574\"}]},{\"service\":\"GUIDED_HELP\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"}]},{\"service\":\"ECATCHER\",\"params\":[{\"key\":\"client.version\",\"value\":\"2.20221101\"},{\"key\":\"client.name\",\"value\":\"WEB\"},{\"key\":\"client.fexp\",\"value\":\"24185614,24036947,24199724,24391539,24268142,24396645,24406604,24164186,24282828,24299747,24187043,24392399,24291857,24219713,24394548,24288489,24152443,24080738,24406983,39322399,24191629,39322504,24140247,24286003,24209350,24265820,23983296,24255545,24254502,24287327,24287169,24400009,24286019,23882502,24279196,24279540,24255543,24396818,23946420,23986016,23918597,24411026,23885487,24279628,24002022,24034168,23966208,24269410,24181174,24169501,24267570,24290971,24161116,24398124,24001373,24292955,24120820,1714257,23804281,24278596,24077241,24262346,24287795,24002025,24248092,24392496,24398996,24400945,24283093,24241378,24406381,24263796,24267564,24392268,24288912,24162920,24260783,24166867,24407452,24184446,24407199,24229161,24230618,24290289,24408951,39322574,23998056,24288047,24211178,24007246,24135310,24401557,24206234,23934970,24393382,24283556,24395541,24004644,24255165,24292739,24246502,24390674,24187377\"}]}],\"mainAppWebResponseContext\":{\"loggedOut\":true},\"webResponseContextExtensionData\":{\"hasDecorated\":true}},\"endpoint\":{\"clickTrackingParams\":\"IhMI157_vYWQ-wIVjs5VCh2k1A1NMghleHRlcm5hbA\u003d\u003d\",\"commandMetadata\":{\"webCommandMetadata\":{\"url\":\"/youtubei/v1/navigation/resolve_url\",\"webPageType\":\"WEB_PAGE_TYPE_CHANNEL\",\"rootVe\":3611,\"apiUrl\":\"/youtubei/v1/browse\"},\"resolveUrlCommandMetadata\":{\"isVanityUrl\":true}},\"browseEndpoint\":{\"browseId\":\"UC6nSFpj9HTCZ5t-N3Rm3-HA\",\"params\":\"EgC4AQDyBgQKAjIA\"}}}",
|
"responseBody": "{\"responseContext\":{\"visitorData\":\"CgtBeEFQY2FQVVkzSSiKzvKbBg%3D%3D\",\"serviceTrackingParams\":[{\"service\":\"CSI\",\"params\":[{\"key\":\"c\",\"value\":\"WEB\"},{\"key\":\"cver\",\"value\":\"2.20221118.01.00\"},{\"key\":\"yt_li\",\"value\":\"0\"},{\"key\":\"ResolveUrl_rid\",\"value\":\"0x1757a4c0093ffdd1\"}]},{\"service\":\"GFEEDBACK\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"},{\"key\":\"e\",\"value\":\"1714243,23804281,23882502,23918597,23934970,23946420,23966208,23974157,23983296,23986030,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036947,24077241,24080738,24108447,24120820,24135310,24140247,24152443,24161116,24162920,24164186,24166867,24169501,24181174,24187043,24187377,24191629,24199724,24211178,24217229,24219713,24228637,24229161,24236210,24241378,24248092,24254502,24255165,24255543,24255545,24260783,24262346,24263136,24263796,24267564,24268142,24269412,24278596,24279196,24282153,24283093,24283656,24287327,24287603,24288047,24288912,24290971,24291857,24292955,24293803,24298324,24299747,24390674,24390916,24391543,24392059,24392401,24396645,24398988,24401013,24401557,24403200,24406314,24406361,24406605,24407200,24407665,24408833,24413358,24413818,24414074,24414162,24415864,24415866,24416291,24417237,24417274,24417486,24418781,24420756,24421162,24425063,39322504,39322574\"}]},{\"service\":\"GUIDED_HELP\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"}]},{\"service\":\"ECATCHER\",\"params\":[{\"key\":\"client.version\",\"value\":\"2.20221118\"},{\"key\":\"client.name\",\"value\":\"WEB\"},{\"key\":\"client.fexp\",\"value\":\"24279196,24287603,24392059,24282153,24002022,24283656,23934970,24164186,24187043,39322504,24396645,24268142,24298324,23986030,24211178,24254502,24217229,24278596,24236210,24420756,24292955,24417486,24401013,24255545,24001373,24417237,24161116,1714243,24290971,24191629,24415864,24408833,24407200,24421162,24269412,24283093,23974157,24401557,24199724,24288912,24406361,24002025,24418781,39322574,24036947,24187377,24390674,24403200,24080738,24255165,24108447,24219713,24390916,24166867,24260783,24291857,23918597,24263796,24241378,24267564,24417274,24162920,24248092,24288047,24262346,24135310,24287327,24415866,24263136,24392401,24416291,24425063,24004644,23998056,24077241,24293803,24007246,24406314,24034168,24414074,24228637,24255543,23946420,24413358,24413818,24406605,24414162,24398988,23882502,24299747,23804281,23983296,24140247,24120820,24407665,24391543,23966208,24229161,24152443,24169501,24181174\"}]}],\"mainAppWebResponseContext\":{\"loggedOut\":true},\"webResponseContextExtensionData\":{\"hasDecorated\":true}},\"endpoint\":{\"clickTrackingParams\":\"IhMI-P_M3szB-wIVxk_gCh23sgBPMghleHRlcm5hbA\u003d\u003d\",\"commandMetadata\":{\"webCommandMetadata\":{\"url\":\"/youtubei/v1/navigation/resolve_url\",\"webPageType\":\"WEB_PAGE_TYPE_CHANNEL\",\"rootVe\":3611,\"apiUrl\":\"/youtubei/v1/browse\"},\"resolveUrlCommandMetadata\":{\"isVanityUrl\":true}},\"browseEndpoint\":{\"browseId\":\"UC6nSFpj9HTCZ5t-N3Rm3-HA\",\"params\":\"EgC4AQDyBgQKAjIA\"}}}",
|
||||||
"latestUrl": "https://www.youtube.com/youtubei/v1/navigation/resolve_url?key\u003dAIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8\u0026prettyPrint\u003dfalse"
|
"latestUrl": "https://www.youtube.com/youtubei/v1/navigation/resolve_url?key\u003dAIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8\u0026prettyPrint\u003dfalse"
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -41,10 +41,10 @@
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Wed, 02 Nov 2022 17:41:36 GMT"
|
"Tue, 22 Nov 2022 10:40:04 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Wed, 02 Nov 2022 17:41:36 GMT"
|
"Tue, 22 Nov 2022 10:40:04 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
|
@ -59,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dfWbtROgs3nc; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003diUDF-c9d_Kc; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dThu, 06-Feb-2020 17:41:36 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:04 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+681; expires\u003dFri, 01-Nov-2024 17:41:36 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+907; expires\u003dThu, 21-Nov-2024 10:40:04 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -6,14 +6,17 @@
|
||||||
"Origin": [
|
"Origin": [
|
||||||
"https://www.youtube.com"
|
"https://www.youtube.com"
|
||||||
],
|
],
|
||||||
"X-YouTube-Client-Name": [
|
"Cookie": [
|
||||||
"1"
|
"CONSENT\u003dPENDING+488"
|
||||||
],
|
],
|
||||||
"Referer": [
|
"Referer": [
|
||||||
"https://www.youtube.com"
|
"https://www.youtube.com"
|
||||||
],
|
],
|
||||||
"X-YouTube-Client-Version": [
|
"X-YouTube-Client-Version": [
|
||||||
"2.20221101.00.00"
|
"2.20221118.01.00"
|
||||||
|
],
|
||||||
|
"X-YouTube-Client-Name": [
|
||||||
|
"1"
|
||||||
],
|
],
|
||||||
"Content-Type": [
|
"Content-Type": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
@ -207,11 +210,11 @@
|
||||||
50,
|
50,
|
||||||
49,
|
49,
|
||||||
49,
|
49,
|
||||||
48,
|
|
||||||
49,
|
49,
|
||||||
|
56,
|
||||||
46,
|
46,
|
||||||
48,
|
48,
|
||||||
48,
|
49,
|
||||||
46,
|
46,
|
||||||
48,
|
48,
|
||||||
48,
|
48,
|
||||||
|
@ -350,20 +353,11 @@
|
||||||
"application/json; charset\u003dUTF-8"
|
"application/json; charset\u003dUTF-8"
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Wed, 02 Nov 2022 17:41:37 GMT"
|
"Tue, 22 Nov 2022 10:40:04 GMT"
|
||||||
],
|
|
||||||
"expires": [
|
|
||||||
"Wed, 02 Nov 2022 17:41:37 GMT"
|
|
||||||
],
|
|
||||||
"p3p": [
|
|
||||||
"CP\u003d\"This is not a P3P policy! See g.co/p3phelp for more info.\""
|
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
"scaffolding on HTTPServer2"
|
"scaffolding on HTTPServer2"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
|
||||||
"CONSENT\u003dPENDING+973; expires\u003dFri, 01-Nov-2024 17:41:37 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
|
||||||
],
|
|
||||||
"vary": [
|
"vary": [
|
||||||
"Origin",
|
"Origin",
|
||||||
"X-Origin",
|
"X-Origin",
|
||||||
|
@ -379,7 +373,7 @@
|
||||||
"0"
|
"0"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"responseBody": "{\"responseContext\":{\"visitorData\":\"CgtGdWh1NWpMNXoxWSjR14qbBg%3D%3D\",\"serviceTrackingParams\":[{\"service\":\"CSI\",\"params\":[{\"key\":\"c\",\"value\":\"WEB\"},{\"key\":\"cver\",\"value\":\"2.20221101.00.00\"},{\"key\":\"yt_li\",\"value\":\"0\"},{\"key\":\"ResolveUrl_rid\",\"value\":\"0x62d32ded0260e003\"}]},{\"service\":\"GFEEDBACK\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"},{\"key\":\"e\",\"value\":\"1714257,9405961,23804281,23882685,23918597,23934970,23946420,23966208,23983296,23986032,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036948,24077241,24080738,24117399,24120819,24135310,24135692,24140247,24147968,24152442,24161116,24162919,24164186,24166867,24169501,24175559,24181174,24185614,24187043,24187377,24191629,24199724,24211178,24211853,24219713,24229161,24241378,24248092,24254502,24255165,24255543,24255545,24260106,24260783,24262346,24263796,24265820,24266635,24267564,24267570,24268142,24278596,24279196,24279540,24279628,24283093,24283556,24286003,24286010,24286019,24287327,24287795,24288047,24288912,24290971,24291585,24291857,24292955,24298084,24299747,24299873,24390674,24391537,24392405,24393382,24396645,24396819,24397913,24398124,24398706,24400185,24400844,24401557,24406381,24406983,24407200,39322399,39322504,39322574\"}]},{\"service\":\"GUIDED_HELP\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"}]},{\"service\":\"ECATCHER\",\"params\":[{\"key\":\"client.version\",\"value\":\"2.20221101\"},{\"key\":\"client.name\",\"value\":\"WEB\"},{\"key\":\"client.fexp\",\"value\":\"24002025,24287795,24199724,24268142,24283093,24396645,24288912,24166867,24400185,24117399,24219713,24266635,9405961,24406983,24080738,39322399,24398706,39322504,24265820,24036948,24255545,24254502,24162919,23998056,24288047,24007246,24255543,23946420,24135310,23918597,23986032,23966208,24298084,24397913,24283556,24267570,24004644,24398124,23804281,24187377,24077241,24262346,24248092,24185614,24241378,24396819,24406381,24263796,24299747,24135692,24164186,24267564,24260783,24187043,24291857,24191629,24229161,24286010,24140247,24286003,23983296,24391537,24287327,39322574,24286019,24279196,24175559,24211178,24120819,24400844,24279540,24401557,24291585,24407200,24002022,24279628,23882685,24034168,24393382,23934970,24260106,24181174,24392405,24169501,24161116,24290971,24255165,24001373,24152442,1714257,24292955,24299873,24278596,24390674,24147968,24211853\"}]}],\"mainAppWebResponseContext\":{\"loggedOut\":true},\"webResponseContextExtensionData\":{\"hasDecorated\":true}},\"endpoint\":{\"clickTrackingParams\":\"IhMIq6fi0YWQ-wIVGUN6BR0tuwZEMghleHRlcm5hbA\u003d\u003d\",\"commandMetadata\":{\"webCommandMetadata\":{\"url\":\"/youtubei/v1/navigation/resolve_url\",\"webPageType\":\"WEB_PAGE_TYPE_CHANNEL\",\"rootVe\":3611,\"apiUrl\":\"/youtubei/v1/browse\"},\"resolveUrlCommandMetadata\":{\"isVanityUrl\":true}},\"browseEndpoint\":{\"browseId\":\"UCEOXxzW2vU0P-0THehuIIeg\",\"params\":\"EgC4AQDyBgQKAjIA\"}}}",
|
"responseBody": "{\"responseContext\":{\"visitorData\":\"CgtLZXZHNVZaQlpqWSiEzvKbBg%3D%3D\",\"serviceTrackingParams\":[{\"service\":\"CSI\",\"params\":[{\"key\":\"c\",\"value\":\"WEB\"},{\"key\":\"cver\",\"value\":\"2.20221118.01.00\"},{\"key\":\"yt_li\",\"value\":\"0\"},{\"key\":\"ResolveUrl_rid\",\"value\":\"0xd2a82c6ae71596bb\"}]},{\"service\":\"GFEEDBACK\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"},{\"key\":\"e\",\"value\":\"1714249,23703445,23804281,23858057,23882503,23918597,23934970,23946420,23966208,23983296,23986033,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036947,24077241,24080738,24120820,24135310,24140247,24152442,24161116,24162919,24164186,24166867,24169501,24181174,24186126,24187043,24187377,24191629,24198082,24199724,24211178,24217229,24219713,24229161,24241378,24244167,24248092,24254502,24255163,24255543,24255545,24256985,24260783,24262346,24263796,24265425,24267564,24268142,24278596,24279196,24283093,24287327,24288045,24288912,24290971,24291857,24292955,24293803,24296190,24297394,24299357,24299747,24390675,24391543,24392401,24392526,24396645,24399011,24400178,24400185,24401557,24403793,24406314,24406605,24407200,24407665,24408438,24410013,24411127,24413364,24413720,24414162,24415865,24415866,24416238,24416290,24417274,24419033,24420149,24420756,24421162,24425061,39322504,39322574\"}]},{\"service\":\"GUIDED_HELP\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"}]},{\"service\":\"ECATCHER\",\"params\":[{\"key\":\"client.version\",\"value\":\"2.20221118\"},{\"key\":\"client.name\",\"value\":\"WEB\"},{\"key\":\"client.fexp\",\"value\":\"24291857,24416290,23983296,24219713,23804281,24415865,24140247,24406605,24408438,24255543,24414162,24391543,24400178,24400185,24255163,23998056,24162919,24036947,24187377,24293803,24004644,24007246,24120820,24077241,24407665,23946420,24420149,23966208,24199724,24260783,24263796,24297394,24299357,24417274,24161116,24267564,24187043,24403793,24299747,24217229,24415866,24262346,24265425,24419033,24296190,24241378,24186126,24164186,24248092,23882503,24191629,24416238,24229161,24135310,24392401,24406314,24287327,24413720,24211178,24407200,24034168,23934970,23858057,24002022,24288045,24169501,24410013,23703445,39322574,24288912,24421162,24244167,23986033,24401557,24399011,24292955,24283093,24001373,24152442,24181174,24420756,24278596,24411127,24390675,24290971,24268142,24413364,24254502,24002025,24198082,1714249,24279196,24166867,24255545,39322504,23918597,24425061,24392526,24396645,24080738,24256985\"}]}],\"mainAppWebResponseContext\":{\"loggedOut\":true},\"webResponseContextExtensionData\":{\"hasDecorated\":true}},\"endpoint\":{\"clickTrackingParams\":\"IhMIxbWK3MzB-wIVhNURCB0_Kg-_MghleHRlcm5hbA\u003d\u003d\",\"commandMetadata\":{\"webCommandMetadata\":{\"url\":\"/youtubei/v1/navigation/resolve_url\",\"webPageType\":\"WEB_PAGE_TYPE_CHANNEL\",\"rootVe\":3611,\"apiUrl\":\"/youtubei/v1/browse\"},\"resolveUrlCommandMetadata\":{\"isVanityUrl\":true}},\"browseEndpoint\":{\"browseId\":\"UCEOXxzW2vU0P-0THehuIIeg\",\"params\":\"EgC4AQDyBgQKAjIA\"}}}",
|
||||||
"latestUrl": "https://www.youtube.com/youtubei/v1/navigation/resolve_url?key\u003dAIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8\u0026prettyPrint\u003dfalse"
|
"latestUrl": "https://www.youtube.com/youtubei/v1/navigation/resolve_url?key\u003dAIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8\u0026prettyPrint\u003dfalse"
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -41,10 +41,10 @@
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Wed, 02 Nov 2022 23:12:52 GMT"
|
"Tue, 22 Nov 2022 10:40:05 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Wed, 02 Nov 2022 23:12:52 GMT"
|
"Tue, 22 Nov 2022 10:40:05 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
|
@ -59,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003daFOfH_xu8k4; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dFnptoV5w1o0; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dThu, 06-Feb-2020 23:12:52 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:05 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+976; expires\u003dFri, 01-Nov-2024 23:12:52 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+048; expires\u003dThu, 21-Nov-2024 10:40:05 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -6,14 +6,17 @@
|
||||||
"Origin": [
|
"Origin": [
|
||||||
"https://www.youtube.com"
|
"https://www.youtube.com"
|
||||||
],
|
],
|
||||||
"X-YouTube-Client-Name": [
|
"Cookie": [
|
||||||
"1"
|
"CONSENT\u003dPENDING+488"
|
||||||
],
|
],
|
||||||
"Referer": [
|
"Referer": [
|
||||||
"https://www.youtube.com"
|
"https://www.youtube.com"
|
||||||
],
|
],
|
||||||
"X-YouTube-Client-Version": [
|
"X-YouTube-Client-Version": [
|
||||||
"2.20221101.00.00"
|
"2.20221118.01.00"
|
||||||
|
],
|
||||||
|
"X-YouTube-Client-Name": [
|
||||||
|
"1"
|
||||||
],
|
],
|
||||||
"Content-Type": [
|
"Content-Type": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
@ -207,11 +210,11 @@
|
||||||
50,
|
50,
|
||||||
49,
|
49,
|
||||||
49,
|
49,
|
||||||
48,
|
|
||||||
49,
|
49,
|
||||||
|
56,
|
||||||
46,
|
46,
|
||||||
48,
|
48,
|
||||||
48,
|
49,
|
||||||
46,
|
46,
|
||||||
48,
|
48,
|
||||||
48,
|
48,
|
||||||
|
@ -334,20 +337,11 @@
|
||||||
"application/json; charset\u003dUTF-8"
|
"application/json; charset\u003dUTF-8"
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Wed, 02 Nov 2022 23:12:53 GMT"
|
"Tue, 22 Nov 2022 10:40:05 GMT"
|
||||||
],
|
|
||||||
"expires": [
|
|
||||||
"Wed, 02 Nov 2022 23:12:53 GMT"
|
|
||||||
],
|
|
||||||
"p3p": [
|
|
||||||
"CP\u003d\"This is not a P3P policy! See g.co/p3phelp for more info.\""
|
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
"scaffolding on HTTPServer2"
|
"scaffolding on HTTPServer2"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
|
||||||
"CONSENT\u003dPENDING+288; expires\u003dFri, 01-Nov-2024 23:12:53 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
|
||||||
],
|
|
||||||
"vary": [
|
"vary": [
|
||||||
"Origin",
|
"Origin",
|
||||||
"X-Origin",
|
"X-Origin",
|
||||||
|
@ -363,7 +357,7 @@
|
||||||
"0"
|
"0"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"responseBody": "{\"responseContext\":{\"visitorData\":\"CgtieTdiV1lXeWFmTSj18oubBg%3D%3D\",\"serviceTrackingParams\":[{\"service\":\"CSI\",\"params\":[{\"key\":\"c\",\"value\":\"WEB\"},{\"key\":\"cver\",\"value\":\"2.20221101.00.00\"},{\"key\":\"yt_li\",\"value\":\"0\"},{\"key\":\"ResolveUrl_rid\",\"value\":\"0x01203331c856c87e\"}]},{\"service\":\"GFEEDBACK\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"},{\"key\":\"e\",\"value\":\"1714254,23804281,23882502,23918597,23934970,23940247,23946420,23966208,23983296,23986015,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036948,24077241,24080738,24120819,24135310,24140247,24152443,24161116,24162919,24164186,24166867,24169501,24181174,24185614,24187043,24187377,24191629,24199724,24211178,24218780,24219713,24224266,24224808,24229161,24241378,24248091,24254502,24255543,24255545,24256985,24260783,24262346,24262775,24263796,24265820,24267564,24267570,24268142,24273932,24278596,24279196,24279628,24280221,24283093,24283556,24286003,24286017,24286291,24287169,24287327,24287795,24288045,24288912,24290842,24290971,24291857,24292955,24297748,24298082,24299548,24299747,24390376,24390675,24390916,24391541,24392399,24393382,24394397,24396645,24396818,24398124,24398981,24400943,24401137,24401291,24401557,24406381,24406605,24406984,24407200,24408325,39322399,39322504,39322574\"}]},{\"service\":\"GUIDED_HELP\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"}]},{\"service\":\"ECATCHER\",\"params\":[{\"key\":\"client.version\",\"value\":\"2.20221101\"},{\"key\":\"client.name\",\"value\":\"WEB\"},{\"key\":\"client.fexp\",\"value\":\"24135310,24080738,24255543,24267570,23918597,24406605,24164186,24396818,24398124,23804281,24406984,24401137,24286291,23983296,24219713,23966208,24287327,24287169,24291857,24398981,24248091,24152443,24286003,24140247,24286017,24390675,24290842,24036948,24224808,24396645,1714254,24218780,39322399,24161116,24299747,23940247,24401291,24400943,24278596,24256985,24001373,23946420,24268142,24298082,24290971,24077241,24292955,24408325,24229161,24169501,24401557,24391541,24241378,24390916,24297748,24224266,24002022,24280221,23934970,24407200,24034168,24262775,39322574,24181174,23882502,24211178,24120819,24265820,24288045,39322504,24254502,24288912,24166867,24255545,24393382,24279628,24394397,24002025,24279196,24273932,24191629,24283093,24263796,24187043,24406381,24390376,24267564,24260783,24287795,24392399,24004644,24007246,23986015,24299548,24162919,24187377,24283556,24262346,23998056,24185614,24199724\"}]}],\"mainAppWebResponseContext\":{\"loggedOut\":true},\"webResponseContextExtensionData\":{\"hasDecorated\":true}},\"endpoint\":{\"clickTrackingParams\":\"IhMIz4TI18-Q-wIV5YE4Ch01jgrjMghleHRlcm5hbA\u003d\u003d\",\"commandMetadata\":{\"webCommandMetadata\":{\"url\":\"/youtubei/v1/navigation/resolve_url\",\"webPageType\":\"WEB_PAGE_TYPE_CHANNEL\",\"rootVe\":3611,\"apiUrl\":\"/youtubei/v1/browse\"},\"resolveUrlCommandMetadata\":{\"isVanityUrl\":true}},\"browseEndpoint\":{\"browseId\":\"UCYJ61XIK64sp6ZFFS8sctxw\",\"params\":\"EgC4AQDyBgQKAjIA\"}}}",
|
"responseBody": "{\"responseContext\":{\"visitorData\":\"CgtLd0xCZnpZRnVsSSiFzvKbBg%3D%3D\",\"serviceTrackingParams\":[{\"service\":\"CSI\",\"params\":[{\"key\":\"c\",\"value\":\"WEB\"},{\"key\":\"cver\",\"value\":\"2.20221118.01.00\"},{\"key\":\"yt_li\",\"value\":\"0\"},{\"key\":\"ResolveUrl_rid\",\"value\":\"0x894f99cd60218c47\"}]},{\"service\":\"GFEEDBACK\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"},{\"key\":\"e\",\"value\":\"1714254,23804281,23882502,23918597,23934970,23946420,23966208,23983296,23986024,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036948,24077241,24080738,24120819,24135310,24140247,24152443,24161116,24162920,24164186,24166867,24169501,24181174,24187043,24187377,24191629,24199724,24211178,24217229,24219713,24229161,24241378,24246502,24248091,24254502,24255165,24255543,24255545,24256987,24260102,24260783,24262346,24263796,24267564,24268142,24278596,24279196,24280761,24283093,24287327,24288418,24288912,24290971,24291857,24292955,24293803,24299747,24390675,24392059,24396645,24401013,24401557,24406314,24406605,24406663,24407200,24407665,24411765,24412844,24414162,24415029,24415866,24416650,24417236,24417274,24420358,24420727,24420756,24421162,24424972,39322504,39322574\"}]},{\"service\":\"GUIDED_HELP\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"}]},{\"service\":\"ECATCHER\",\"params\":[{\"key\":\"client.version\",\"value\":\"2.20221118\"},{\"key\":\"client.name\",\"value\":\"WEB\"},{\"key\":\"client.fexp\",\"value\":\"24255165,24290971,24169501,24001373,23934970,24181174,24268142,24420756,24288418,24278596,24217229,24292955,24401557,39322504,24406663,24034168,24191629,24407200,24279196,24002022,24412844,24246502,23882502,24211178,24120819,24420727,24254502,24401013,39322574,24390675,24255545,24416650,24036948,24424972,24288912,24392059,24002025,24199724,24396645,24421162,24166867,24411765,24080738,24283093,24162920,24420358,24417236,23804281,24407665,23966208,24417274,24267564,24263796,23998056,24187377,24293803,24077241,24280761,24415866,24406605,23946420,24255543,24004644,24007246,23918597,24291857,24219713,24135310,24248091,24287327,24140247,24161116,24406314,23983296,24414162,24299747,1714254,24262346,24260102,24260783,24152443,24229161,23986024,24415029,24256987,24241378,24187043,24164186\"}]}],\"mainAppWebResponseContext\":{\"loggedOut\":true},\"webResponseContextExtensionData\":{\"hasDecorated\":true}},\"endpoint\":{\"clickTrackingParams\":\"IhMI2__C3MzB-wIVIt4RCB11Wgi6MghleHRlcm5hbA\u003d\u003d\",\"commandMetadata\":{\"webCommandMetadata\":{\"url\":\"/youtubei/v1/navigation/resolve_url\",\"webPageType\":\"WEB_PAGE_TYPE_CHANNEL\",\"rootVe\":3611,\"apiUrl\":\"/youtubei/v1/browse\"},\"resolveUrlCommandMetadata\":{\"isVanityUrl\":true}},\"browseEndpoint\":{\"browseId\":\"UCYJ61XIK64sp6ZFFS8sctxw\",\"params\":\"EgC4AQDyBgQKAjIA\"}}}",
|
||||||
"latestUrl": "https://www.youtube.com/youtubei/v1/navigation/resolve_url?key\u003dAIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8\u0026prettyPrint\u003dfalse"
|
"latestUrl": "https://www.youtube.com/youtubei/v1/navigation/resolve_url?key\u003dAIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8\u0026prettyPrint\u003dfalse"
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -41,10 +41,10 @@
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Wed, 02 Nov 2022 17:41:03 GMT"
|
"Tue, 22 Nov 2022 10:40:07 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Wed, 02 Nov 2022 17:41:03 GMT"
|
"Tue, 22 Nov 2022 10:40:07 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
|
@ -59,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dAVE5NuANOas; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dNQGuNvp4W3E; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dThu, 06-Feb-2020 17:41:03 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:07 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+233; expires\u003dFri, 01-Nov-2024 17:41:03 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+566; expires\u003dThu, 21-Nov-2024 10:40:07 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -41,10 +41,10 @@
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Wed, 02 Nov 2022 18:09:28 GMT"
|
"Tue, 22 Nov 2022 10:40:10 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Wed, 02 Nov 2022 18:09:28 GMT"
|
"Tue, 22 Nov 2022 10:40:10 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
|
@ -59,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dWzKJMUonlJc; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dzITFJjB3uZU; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dThu, 06-Feb-2020 18:09:28 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:10 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+781; expires\u003dFri, 01-Nov-2024 18:09:28 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+083; expires\u003dThu, 21-Nov-2024 10:40:10 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -6,14 +6,17 @@
|
||||||
"Origin": [
|
"Origin": [
|
||||||
"https://www.youtube.com"
|
"https://www.youtube.com"
|
||||||
],
|
],
|
||||||
"X-YouTube-Client-Name": [
|
"Cookie": [
|
||||||
"1"
|
"CONSENT\u003dPENDING+488"
|
||||||
],
|
],
|
||||||
"Referer": [
|
"Referer": [
|
||||||
"https://www.youtube.com"
|
"https://www.youtube.com"
|
||||||
],
|
],
|
||||||
"X-YouTube-Client-Version": [
|
"X-YouTube-Client-Version": [
|
||||||
"2.20221101.00.00"
|
"2.20221118.01.00"
|
||||||
|
],
|
||||||
|
"X-YouTube-Client-Name": [
|
||||||
|
"1"
|
||||||
],
|
],
|
||||||
"Content-Type": [
|
"Content-Type": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
@ -207,11 +210,11 @@
|
||||||
50,
|
50,
|
||||||
49,
|
49,
|
||||||
49,
|
49,
|
||||||
48,
|
|
||||||
49,
|
49,
|
||||||
|
56,
|
||||||
46,
|
46,
|
||||||
48,
|
48,
|
||||||
48,
|
49,
|
||||||
46,
|
46,
|
||||||
48,
|
48,
|
||||||
48,
|
48,
|
||||||
|
@ -339,20 +342,11 @@
|
||||||
"application/json; charset\u003dUTF-8"
|
"application/json; charset\u003dUTF-8"
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Wed, 02 Nov 2022 18:09:29 GMT"
|
"Tue, 22 Nov 2022 10:40:10 GMT"
|
||||||
],
|
|
||||||
"expires": [
|
|
||||||
"Wed, 02 Nov 2022 18:09:29 GMT"
|
|
||||||
],
|
|
||||||
"p3p": [
|
|
||||||
"CP\u003d\"This is not a P3P policy! See g.co/p3phelp for more info.\""
|
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
"scaffolding on HTTPServer2"
|
"scaffolding on HTTPServer2"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
|
||||||
"CONSENT\u003dPENDING+851; expires\u003dFri, 01-Nov-2024 18:09:29 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
|
||||||
],
|
|
||||||
"vary": [
|
"vary": [
|
||||||
"Origin",
|
"Origin",
|
||||||
"X-Origin",
|
"X-Origin",
|
||||||
|
@ -368,7 +362,7 @@
|
||||||
"0"
|
"0"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"responseBody": "{\"responseContext\":{\"visitorData\":\"CgtzNzVnMUhsTVZRdyjZ5IqbBg%3D%3D\",\"serviceTrackingParams\":[{\"service\":\"CSI\",\"params\":[{\"key\":\"c\",\"value\":\"WEB\"},{\"key\":\"cver\",\"value\":\"2.20221101.00.00\"},{\"key\":\"yt_li\",\"value\":\"0\"},{\"key\":\"ResolveUrl_rid\",\"value\":\"0x837d7832e173abb2\"}]},{\"service\":\"GFEEDBACK\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"},{\"key\":\"e\",\"value\":\"1714243,23804281,23882502,23918597,23934970,23946420,23966208,23983296,23986016,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036948,24077241,24080738,24120820,24135310,24140247,24152442,24161116,24162920,24164186,24166867,24169501,24181174,24185614,24186126,24187043,24187377,24191629,24199724,24211178,24218780,24219713,24229161,24241378,24248091,24254502,24255165,24255543,24255545,24260783,24262346,24263796,24265820,24266635,24267564,24267570,24268142,24278596,24279196,24279628,24283093,24283556,24287327,24287795,24288912,24290971,24291857,24292955,24299747,24390674,24393382,24396645,24396818,24398124,24401557,24406381,24406604,24406983,24407200,39322399,39322504,39322574\"}]},{\"service\":\"GUIDED_HELP\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"}]},{\"service\":\"ECATCHER\",\"params\":[{\"key\":\"client.version\",\"value\":\"2.20221101\"},{\"key\":\"client.name\",\"value\":\"WEB\"},{\"key\":\"client.fexp\",\"value\":\"24229161,24191629,24140247,24287327,24291857,24186126,23983296,24120820,24185614,24262346,24299747,24406381,24241378,24267564,24187043,24164186,24263796,24218780,24260783,24169501,24181174,24152442,24001373,24268142,24290971,24292955,1714243,24390674,24278596,24255165,24279196,39322504,24401557,24211178,23986016,23934970,24034168,24393382,23882502,24161116,39322399,24279628,24002022,24407200,24080738,24406983,24219713,24266635,24254502,24036948,24255545,39322574,24265820,24396645,24283093,24002025,24199724,24288912,24406604,24287795,24162920,24166867,24267570,24398124,23966208,24283556,24248091,23804281,24004644,24077241,24187377,24135310,24255543,24396818,24007246,23998056,23946420,23918597\"}]}],\"mainAppWebResponseContext\":{\"loggedOut\":true},\"webResponseContextExtensionData\":{\"hasDecorated\":true}},\"endpoint\":{\"clickTrackingParams\":\"IhMI3omG74uQ-wIVIt4RCB31GgQvMghleHRlcm5hbA\u003d\u003d\",\"commandMetadata\":{\"webCommandMetadata\":{\"url\":\"/youtubei/v1/navigation/resolve_url\",\"webPageType\":\"WEB_PAGE_TYPE_CHANNEL\",\"rootVe\":3611,\"apiUrl\":\"/youtubei/v1/browse\"},\"resolveUrlCommandMetadata\":{\"isVanityUrl\":true}},\"browseEndpoint\":{\"browseId\":\"UCeY0bbntWzzVIaj2z3QigXg\",\"params\":\"EgC4AQDyBgQKAjIA\"}}}",
|
"responseBody": "{\"responseContext\":{\"visitorData\":\"CgtlQ1NVamhzSklwdyiKzvKbBg%3D%3D\",\"serviceTrackingParams\":[{\"service\":\"CSI\",\"params\":[{\"key\":\"c\",\"value\":\"WEB\"},{\"key\":\"cver\",\"value\":\"2.20221118.01.00\"},{\"key\":\"yt_li\",\"value\":\"0\"},{\"key\":\"ResolveUrl_rid\",\"value\":\"0xb1565d8a16b10176\"}]},{\"service\":\"GFEEDBACK\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"},{\"key\":\"e\",\"value\":\"1714248,23795882,23804281,23882685,23918597,23934970,23946420,23966208,23983296,23986023,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036948,24077241,24080738,24108447,24120819,24135310,24140247,24152443,24161116,24162920,24164186,24166867,24169501,24181174,24187043,24187377,24191629,24199724,24211178,24217229,24219713,24229161,24241378,24248092,24248955,24254502,24255163,24255543,24255545,24256986,24260783,24262346,24263796,24265426,24267564,24268142,24278596,24279196,24281671,24283093,24287327,24287604,24288043,24288912,24290971,24291857,24292955,24293803,24298326,24299357,24299747,24390675,24391539,24392405,24396645,24398996,24399916,24401557,24403045,24404214,24406313,24406367,24406605,24407200,24407454,24407665,24409253,24412682,24413144,24414162,24415866,24416290,24417274,24417486,24418788,24420358,24420364,24420756,24421162,24424279,24424365,39322504,39322574\"}]},{\"service\":\"GUIDED_HELP\",\"params\":[{\"key\":\"logged_in\",\"value\":\"0\"}]},{\"service\":\"ECATCHER\",\"params\":[{\"key\":\"client.version\",\"value\":\"2.20221118\"},{\"key\":\"client.name\",\"value\":\"WEB\"},{\"key\":\"client.fexp\",\"value\":\"24191629,24417274,24267564,24161116,24404214,23998056,24217229,24415866,24004644,23882685,24413144,24298326,24409253,24293803,24007246,23795882,24248092,24403045,24262346,24135310,1714248,24211178,24241378,24291857,24399916,24406367,24420364,23934970,24287327,24187043,24260783,24164186,24398996,24263796,24152443,24424279,23966208,24080738,24140247,24416290,24407665,24255163,24288043,24406313,23804281,24287604,24187377,23983296,24255543,24414162,24299747,24199724,23946420,24406605,24256986,24248955,24299357,24290971,24001373,24390675,24420756,24254502,24036948,24077241,24255545,24268142,24278596,24292955,39322504,23918597,24417486,24391539,24407454,23986023,24219713,24166867,24162920,24396645,24279196,24002022,24424365,24229161,24108447,24169501,24265426,24392405,24181174,39322574,24120819,24418788,24002025,24283093,24412682,24401557,24288912,24421162,24034168,24281671,24407200,24420358\"}]}],\"mainAppWebResponseContext\":{\"loggedOut\":true},\"webResponseContextExtensionData\":{\"hasDecorated\":true}},\"endpoint\":{\"clickTrackingParams\":\"IhMIktn23szB-wIVdNMRCB1gNAQsMghleHRlcm5hbA\u003d\u003d\",\"commandMetadata\":{\"webCommandMetadata\":{\"url\":\"/youtubei/v1/navigation/resolve_url\",\"webPageType\":\"WEB_PAGE_TYPE_CHANNEL\",\"rootVe\":3611,\"apiUrl\":\"/youtubei/v1/browse\"},\"resolveUrlCommandMetadata\":{\"isVanityUrl\":true}},\"browseEndpoint\":{\"browseId\":\"UCeY0bbntWzzVIaj2z3QigXg\",\"params\":\"EgC4AQDyBgQKAjIA\"}}}",
|
||||||
"latestUrl": "https://www.youtube.com/youtubei/v1/navigation/resolve_url?key\u003dAIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8\u0026prettyPrint\u003dfalse"
|
"latestUrl": "https://www.youtube.com/youtubei/v1/navigation/resolve_url?key\u003dAIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8\u0026prettyPrint\u003dfalse"
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:16:22 GMT"
|
"Tue, 22 Nov 2022 10:40:08 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:16:22 GMT"
|
"Tue, 22 Nov 2022 10:40:08 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dZzVxGpjPidM; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dSqETKRNnftE; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:16:22 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:08 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+044; expires\u003dSun, 11-Aug-2024 17:16:22 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+068; expires\u003dThu, 21-Nov-2024 10:40:08 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -6,14 +6,17 @@
|
||||||
"Origin": [
|
"Origin": [
|
||||||
"https://www.youtube.com"
|
"https://www.youtube.com"
|
||||||
],
|
],
|
||||||
"X-YouTube-Client-Name": [
|
"Cookie": [
|
||||||
"1"
|
"CONSENT\u003dPENDING+578"
|
||||||
],
|
],
|
||||||
"Referer": [
|
"Referer": [
|
||||||
"https://www.youtube.com"
|
"https://www.youtube.com"
|
||||||
],
|
],
|
||||||
"X-YouTube-Client-Version": [
|
"X-YouTube-Client-Version": [
|
||||||
"2.20220809.02.00"
|
"2.20221118.01.00"
|
||||||
|
],
|
||||||
|
"X-YouTube-Client-Name": [
|
||||||
|
"1"
|
||||||
],
|
],
|
||||||
"Content-Type": [
|
"Content-Type": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
@ -231,13 +234,13 @@
|
||||||
48,
|
48,
|
||||||
50,
|
50,
|
||||||
50,
|
50,
|
||||||
48,
|
49,
|
||||||
|
49,
|
||||||
|
49,
|
||||||
56,
|
56,
|
||||||
48,
|
|
||||||
57,
|
|
||||||
46,
|
46,
|
||||||
48,
|
48,
|
||||||
50,
|
49,
|
||||||
46,
|
46,
|
||||||
48,
|
48,
|
||||||
48,
|
48,
|
||||||
|
@ -346,7 +349,7 @@
|
||||||
"application/json; charset\u003dUTF-8"
|
"application/json; charset\u003dUTF-8"
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:16:23 GMT"
|
"Tue, 22 Nov 2022 10:40:08 GMT"
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
"scaffolding on HTTPServer2"
|
"scaffolding on HTTPServer2"
|
||||||
|
|
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:16:23 GMT"
|
"Tue, 22 Nov 2022 10:40:08 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:16:23 GMT"
|
"Tue, 22 Nov 2022 10:40:08 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dac29gHtTp4I; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dLUzklSvOALI; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:16:23 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:08 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+304; expires\u003dSun, 11-Aug-2024 17:16:23 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+404; expires\u003dThu, 21-Nov-2024 10:40:08 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -41,10 +41,10 @@
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Wed, 02 Nov 2022 17:41:44 GMT"
|
"Tue, 22 Nov 2022 10:40:09 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Wed, 02 Nov 2022 17:41:44 GMT"
|
"Tue, 22 Nov 2022 10:40:09 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
|
@ -59,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003d0xEsk8goB80; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003diWN_EQSBC0c; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dThu, 06-Feb-2020 17:41:44 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:09 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+253; expires\u003dFri, 01-Nov-2024 17:41:44 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+389; expires\u003dThu, 21-Nov-2024 10:40:09 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:16:31 GMT"
|
"Tue, 22 Nov 2022 10:40:13 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:16:31 GMT"
|
"Tue, 22 Nov 2022 10:40:13 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dr-U6j9iTD8I; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dX2z4aFJWv_c; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:16:31 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:13 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+983; expires\u003dSun, 11-Aug-2024 17:16:31 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+579; expires\u003dThu, 21-Nov-2024 10:40:13 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:16:32 GMT"
|
"Tue, 22 Nov 2022 10:40:14 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:16:32 GMT"
|
"Tue, 22 Nov 2022 10:40:14 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003debW8kYy6pec; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dnIERwTWAhck; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:16:32 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:14 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+957; expires\u003dSun, 11-Aug-2024 17:16:32 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+120; expires\u003dThu, 21-Nov-2024 10:40:14 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:16:35 GMT"
|
"Tue, 22 Nov 2022 10:40:15 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:16:35 GMT"
|
"Tue, 22 Nov 2022 10:40:15 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003ddwizTRZX7Es; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003djD4kj1KxjUQ; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:16:35 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:15 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+132; expires\u003dSun, 11-Aug-2024 17:16:35 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+274; expires\u003dThu, 21-Nov-2024 10:40:15 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:16:36 GMT"
|
"Tue, 22 Nov 2022 10:40:17 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:16:36 GMT"
|
"Tue, 22 Nov 2022 10:40:17 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dz1oG5f8tklg; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dulpvyFBP5lQ; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:16:36 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:17 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+811; expires\u003dSun, 11-Aug-2024 17:16:36 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+178; expires\u003dThu, 21-Nov-2024 10:40:17 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:16:33 GMT"
|
"Tue, 22 Nov 2022 10:40:18 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:16:33 GMT"
|
"Tue, 22 Nov 2022 10:40:18 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dTdlUMMVRby8; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dqUcA0_a0hUo; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:16:33 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:18 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+892; expires\u003dSun, 11-Aug-2024 17:16:33 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+930; expires\u003dThu, 21-Nov-2024 10:40:18 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:16:38 GMT"
|
"Tue, 22 Nov 2022 10:40:20 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:16:38 GMT"
|
"Tue, 22 Nov 2022 10:40:20 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dYZZX-K7shdw; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003ddIhq5C9znKU; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:16:38 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:20 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+734; expires\u003dSun, 11-Aug-2024 17:16:38 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+600; expires\u003dThu, 21-Nov-2024 10:40:19 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:16:29 GMT"
|
"Tue, 22 Nov 2022 10:40:21 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:16:29 GMT"
|
"Tue, 22 Nov 2022 10:40:21 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dzi4tfTaJwwU; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dSIDatHvWybs; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:16:29 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:21 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+478; expires\u003dSun, 11-Aug-2024 17:16:29 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+666; expires\u003dThu, 21-Nov-2024 10:40:21 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -26,7 +26,7 @@
|
||||||
"text/html; charset\u003dUTF-8"
|
"text/html; charset\u003dUTF-8"
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:15:40 GMT"
|
"Tue, 22 Nov 2022 10:40:26 GMT"
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
"YouTube RSS Feeds server"
|
"YouTube RSS Feeds server"
|
||||||
|
|
|
@ -37,23 +37,20 @@
|
||||||
"content-type": [
|
"content-type": [
|
||||||
"text/javascript; charset\u003dutf-8"
|
"text/javascript; charset\u003dutf-8"
|
||||||
],
|
],
|
||||||
"critical-ch": [
|
|
||||||
"Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version"
|
|
||||||
],
|
|
||||||
"cross-origin-opener-policy-report-only": [
|
"cross-origin-opener-policy-report-only": [
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Fri, 12 Aug 2022 17:15:40 GMT"
|
"Tue, 22 Nov 2022 10:40:26 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Fri, 12 Aug 2022 17:15:40 GMT"
|
"Tue, 22 Nov 2022 10:40:26 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -62,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dkoiv-HhOPrg; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003daSSq4mC6HTI; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dSat, 16-Nov-2019 17:15:40 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:26 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+636; expires\u003dSun, 11-Aug-2024 17:15:40 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+953; expires\u003dThu, 21-Nov-2024 10:40:26 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -41,16 +41,16 @@
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Sun, 21 Aug 2022 16:38:46 GMT"
|
"Tue, 22 Nov 2022 10:40:27 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Sun, 21 Aug 2022 16:38:46 GMT"
|
"Tue, 22 Nov 2022 10:40:27 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -59,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dt2u6Ud1gkeE; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dJP7aUOJipH8; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dMon, 25-Nov-2019 16:38:46 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:27 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+112; expires\u003dTue, 20-Aug-2024 16:38:46 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+499; expires\u003dThu, 21-Nov-2024 10:40:27 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -41,16 +41,16 @@
|
||||||
"same-origin; report-to\u003d\"youtube_main\""
|
"same-origin; report-to\u003d\"youtube_main\""
|
||||||
],
|
],
|
||||||
"date": [
|
"date": [
|
||||||
"Sun, 21 Aug 2022 16:38:47 GMT"
|
"Tue, 22 Nov 2022 10:40:28 GMT"
|
||||||
],
|
],
|
||||||
"expires": [
|
"expires": [
|
||||||
"Sun, 21 Aug 2022 16:38:47 GMT"
|
"Tue, 22 Nov 2022 10:40:28 GMT"
|
||||||
],
|
],
|
||||||
"p3p": [
|
"p3p": [
|
||||||
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
|
||||||
],
|
],
|
||||||
"permissions-policy": [
|
"permissions-policy": [
|
||||||
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
|
||||||
],
|
],
|
||||||
"report-to": [
|
"report-to": [
|
||||||
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
|
||||||
|
@ -59,9 +59,9 @@
|
||||||
"ESF"
|
"ESF"
|
||||||
],
|
],
|
||||||
"set-cookie": [
|
"set-cookie": [
|
||||||
"YSC\u003dLGlvlQyOQUM; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"YSC\u003dg3jDSwSSHF0; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dMon, 25-Nov-2019 16:38:47 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dWed, 26-Feb-2020 10:40:28 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
|
||||||
"CONSENT\u003dPENDING+765; expires\u003dTue, 20-Aug-2024 16:38:47 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
"CONSENT\u003dPENDING+674; expires\u003dThu, 21-Nov-2024 10:40:28 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
|
||||||
],
|
],
|
||||||
"strict-transport-security": [
|
"strict-transport-security": [
|
||||||
"max-age\u003d31536000"
|
"max-age\u003d31536000"
|
||||||
|
|
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue