From 838d8733ec8803195a1348d55f86d9b6000962af Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 20 Apr 2024 22:32:46 +0800 Subject: [PATCH] Clean code --- .../android/tv/ui/custom/CustomWebView.java | 10 ++-------- .../com/github/catvod/net/OkCookieJar.java | 20 +++++++++++++++++-- .../java/com/github/catvod/net/OkHttp.java | 4 ++-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java index 3d57378ff..f0ab70358 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java @@ -91,7 +91,6 @@ public class CustomWebView extends WebView { getSettings().setMediaPlaybackRequiresUserGesture(false); getSettings().setJavaScriptCanOpenWindowsAutomatically(false); getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); - CookieManager.getInstance().setAcceptThirdPartyCookies(this, true); setWebViewClient(webViewClient()); setWebChromeClient(webChromeClient()); } @@ -108,6 +107,7 @@ public class CustomWebView extends WebView { } private void start(String url, Map headers) { + OkCookieJar.setAcceptThirdPartyCookies(this); checkHeader(url, headers); loadUrl(url, headers); } @@ -129,7 +129,7 @@ public class CustomWebView extends WebView { if (TextUtils.isEmpty(host) || VodConfig.get().getAds().contains(host)) return empty; if (url.contains("challenges.cloudflare.com/cdn-cgi")) App.post(() -> showDialog()); if (detect && url.contains("player/?url=")) onParseAdd(headers, url); - else if (isVideoFormat(url)) interrupt(headers, url); + else if (isVideoFormat(url)) onParseSuccess(headers, url); return super.shouldInterceptRequest(view, request); } @@ -211,12 +211,6 @@ public class CustomWebView extends WebView { } } - private void interrupt(Map headers, String url) { - String cookie = CookieManager.getInstance().getCookie(url); - if (cookie != null) headers.put(HttpHeaders.COOKIE, cookie); - onParseSuccess(headers, url); - } - private void onParseAdd(Map headers, String url) { App.post(() -> CustomWebView.create(App.get()).start(key, from, headers, url, click, callback, false)); } diff --git a/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java b/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java index 338e989b1..48451aa0e 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java +++ b/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java @@ -2,6 +2,7 @@ package com.github.catvod.net; import android.text.TextUtils; import android.webkit.CookieManager; +import android.webkit.WebView; import androidx.annotation.NonNull; @@ -17,17 +18,32 @@ public class OkCookieJar implements CookieJar { private CookieManager manager; - public OkCookieJar() { + private static class Loader { + static volatile OkCookieJar INSTANCE = new OkCookieJar(); + } + + public static OkCookieJar get() { + return Loader.INSTANCE; + } + + private OkCookieJar() { try { manager = CookieManager.getInstance(); } catch (Throwable ignored) { } } + public static void setAcceptThirdPartyCookies(WebView view) { + try { + get().manager.setAcceptThirdPartyCookies(view, true); + } catch (Throwable ignored) { + } + } + public static void sync(String url, String cookie) { try { if (TextUtils.isEmpty(cookie)) return; - for (String split : cookie.split(";")) CookieManager.getInstance().setCookie(url, split); + for (String split : cookie.split(";")) get().manager.setCookie(url, split); } catch (Throwable ignored) { } } diff --git a/catvod/src/main/java/com/github/catvod/net/OkHttp.java b/catvod/src/main/java/com/github/catvod/net/OkHttp.java index f2e7cceab..d19005eae 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkHttp.java +++ b/catvod/src/main/java/com/github/catvod/net/OkHttp.java @@ -5,8 +5,8 @@ import android.text.TextUtils; import androidx.collection.ArrayMap; import com.github.catvod.bean.Doh; -import com.github.catvod.net.interceptor.ResponseInterceptor; import com.github.catvod.net.interceptor.RequestInterceptor; +import com.github.catvod.net.interceptor.ResponseInterceptor; import com.github.catvod.utils.Path; import java.net.ProxySelector; @@ -133,7 +133,7 @@ public class OkHttp { } private static OkHttpClient.Builder getBuilder() { - OkHttpClient.Builder builder = new OkHttpClient.Builder().cookieJar(new OkCookieJar()).addInterceptor(new RequestInterceptor()).addNetworkInterceptor(new ResponseInterceptor()).connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS).readTimeout(TIMEOUT, TimeUnit.MILLISECONDS).writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier((hostname, session) -> true).followRedirects(true).sslSocketFactory(new SSLCompat(), SSLCompat.TM); + OkHttpClient.Builder builder = new OkHttpClient.Builder().cookieJar(OkCookieJar.get()).addInterceptor(new RequestInterceptor()).addNetworkInterceptor(new ResponseInterceptor()).connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS).readTimeout(TIMEOUT, TimeUnit.MILLISECONDS).writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier((hostname, session) -> true).followRedirects(true).sslSocketFactory(new SSLCompat(), SSLCompat.TM); builder.proxySelector(get().proxy ? selector() : defaultSelector); return builder; }