pull/402/head
FongMi 2 years ago
parent 08ce6499ae
commit 838d8733ec
  1. 10
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java
  2. 20
      catvod/src/main/java/com/github/catvod/net/OkCookieJar.java
  3. 4
      catvod/src/main/java/com/github/catvod/net/OkHttp.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<String, String> 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<String, String> headers, String url) {
String cookie = CookieManager.getInstance().getCookie(url);
if (cookie != null) headers.put(HttpHeaders.COOKIE, cookie);
onParseSuccess(headers, url);
}
private void onParseAdd(Map<String, String> headers, String url) {
App.post(() -> CustomWebView.create(App.get()).start(key, from, headers, url, click, callback, false));
}

@ -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) {
}
}

@ -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;
}

Loading…
Cancel
Save