diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Site.java b/app/src/main/java/com/fongmi/android/tv/bean/Site.java index 86f61da8d..09eaaaabd 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Site.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Site.java @@ -11,6 +11,7 @@ import androidx.room.PrimaryKey; import com.fongmi.android.tv.Constant; import com.fongmi.android.tv.db.AppDatabase; import com.fongmi.android.tv.gson.ExtAdapter; +import com.github.catvod.utils.Json; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.annotations.JsonAdapter; @@ -19,7 +20,9 @@ import com.google.gson.annotations.SerializedName; import java.util.Collections; import java.util.List; -@Entity(ignoredColumns = {"type", "api", "playUrl", "timeout", "playerType", "ext", "jar", "style", "categories"}) +import okhttp3.Headers; + +@Entity(ignoredColumns = {"type", "api", "playUrl", "timeout", "playerType", "ext", "jar", "style", "categories", "header"}) public class Site implements Parcelable { @NonNull @@ -55,6 +58,8 @@ public class Site implements Parcelable { private Style style; @SerializedName("categories") private List categories; + @SerializedName("header") + private JsonElement header; private boolean activated; @@ -178,6 +183,10 @@ public class Site implements Parcelable { return categories == null ? Collections.emptyList() : categories; } + public JsonElement getHeader() { + return header; + } + public boolean isActivated() { return activated; } @@ -229,6 +238,10 @@ public class Site implements Parcelable { return getKey().isEmpty() && getName().isEmpty(); } + public Headers getHeaders() { + return Headers.of(Json.toMap(getHeader())); + } + public Site sync() { Site item = find(getKey()); if (item == null) return this; diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index 9091b15e2..f7c236cf1 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -26,7 +26,6 @@ import com.github.catvod.crawler.SpiderDebug; import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Trans; import com.github.catvod.utils.Util; -import com.google.common.net.HttpHeaders; import java.io.IOException; import java.util.ArrayList; @@ -40,7 +39,6 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import okhttp3.Call; -import okhttp3.Headers; import okhttp3.Response; public class SiteViewModel extends ViewModel { @@ -83,7 +81,7 @@ public class SiteViewModel extends ViewModel { SpiderDebug.log(homeContent); return Result.fromJson(homeContent); } else { - String homeContent = OkHttp.newCall(site.getApi(), Headers.of(HttpHeaders.ACCEPT, OkHttp.ACCEPT)).execute().body().string(); + String homeContent = OkHttp.newCall(site.getApi(), site.getHeaders()).execute().body().string(); SpiderDebug.log(homeContent); return fetchPic(site, Result.fromType(site.getType(), homeContent)); } @@ -180,7 +178,7 @@ public class SiteViewModel extends ViewModel { } else { Url url = Url.create().add(id); String type = Uri.parse(id).getQueryParameter("type"); - if (type != null && type.equals("json")) url = Result.fromJson(OkHttp.newCall(id).execute().body().string()).getUrl(); + if (type != null && type.equals("json")) url = Result.fromJson(OkHttp.newCall(id, site.getHeaders()).execute().body().string()).getUrl(); Result result = new Result(); result.setUrl(url); result.setFlag(flag); @@ -229,7 +227,7 @@ public class SiteViewModel extends ViewModel { } private String call(Site site, ArrayMap params, boolean limit) throws IOException { - Call call = fetchExt(site, params, limit).length() <= 1000 ? OkHttp.newCall(site.getApi(), params) : OkHttp.newCall(site.getApi(), OkHttp.toBody(params)); + Call call = fetchExt(site, params, limit).length() <= 1000 ? OkHttp.newCall(site.getApi(), params, site.getHeaders()) : OkHttp.newCall(site.getApi(), OkHttp.toBody(params), site.getHeaders()); return call.execute().body().string(); } @@ -242,7 +240,7 @@ public class SiteViewModel extends ViewModel { } private String fetchExt(Site site) throws IOException { - Response res = OkHttp.newCall(site.getExt()).execute(); + Response res = OkHttp.newCall(site.getExt(), site.getHeaders()).execute(); if (res.code() != 200) return ""; site.setExt(res.body().string()); return site.getExt(); @@ -255,7 +253,7 @@ public class SiteViewModel extends ViewModel { ArrayMap params = new ArrayMap<>(); params.put("ac", site.getType() == 0 ? "videolist" : "detail"); params.put("ids", TextUtils.join(",", ids)); - String response = OkHttp.newCall(site.getApi(), params).execute().body().string(); + String response = OkHttp.newCall(site.getApi(), params, site.getHeaders()).execute().body().string(); result.setList(Result.fromType(site.getType(), response).getList()); return result; } diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java b/app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java index ab2915ec4..3f08e9ddf 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java @@ -18,7 +18,7 @@ import java.util.regex.Pattern; public class Sniffer { - public static final String CHROME = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"; + public static final String CHROME = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"; public static final Pattern RULE = Pattern.compile("http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*"); public static final List PUSH = Arrays.asList("smb", "http", "https", "thunder", "magnet", "ed2k", "ftp", "mitv", "jianpian"); public static final List THUNDER = Arrays.asList("thunder", "magnet", "ed2k", "ftp"); 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 3873ca793..12f774813 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkHttp.java +++ b/catvod/src/main/java/com/github/catvod/net/OkHttp.java @@ -26,7 +26,6 @@ import okhttp3.dnsoverhttps.DnsOverHttps; public class OkHttp { - public static final String ACCEPT = "*/*"; private static final int TIMEOUT = 30 * 1000; private static final int CACHE = 100 * 1024 * 1024; @@ -82,15 +81,15 @@ public class OkHttp { } public static Call newCall(String url, ArrayMap params) { - return client().newCall(new Request.Builder().url(buildUrl(url, params)).headers(Headers.of(HttpHeaders.ACCEPT, ACCEPT)).build()); + return client().newCall(new Request.Builder().url(buildUrl(url, params)).build()); } public static Call newCall(String url, ArrayMap params, Headers headers) { return client().newCall(new Request.Builder().url(buildUrl(url, params)).headers(headers).build()); } - public static Call newCall(String url, RequestBody body) { - return client().newCall(new Request.Builder().url(url).post(body).build()); + public static Call newCall(String url, RequestBody body, Headers headers) { + return client().newCall(new Request.Builder().url(url).post(body).headers(headers).build()); } public static Call newCall(OkHttpClient client, String url, RequestBody body) {