From 05229922da223840db6ed582013b577afb5f5830 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 24 Sep 2023 14:02:27 +0800 Subject: [PATCH] Support single proxy - part 6 --- app/build.gradle | 4 ++-- .../com/fongmi/android/tv/model/SiteViewModel.java | 10 +++++----- .../java/com/github/catvod/crawler/Spider.java | 5 +++++ .../main/java/com/github/catvod/net/OkHttp.java | 14 +++++++------- .../java/com/undcover/freedom/pyramid/Spider.java | 4 ++-- .../java/com/fongmi/quickjs/crawler/Spider.java | 4 ++-- .../main/java/com/fongmi/quickjs/utils/Module.java | 8 ++++---- 7 files changed, 27 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 54520c6be..5abf985e4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,12 +21,12 @@ android { leanback { dimension "mode" versionCode 205 - versionName "20230924" + versionName "20230924#2" } mobile { dimension "mode" versionCode 205 - versionName "20230924" + versionName "20230924#2" } java { dimension "api" 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 2616ae1a0..209b513ed 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 @@ -83,7 +83,7 @@ public class SiteViewModel extends ViewModel { SpiderDebug.log(homeContent); return Result.fromJson(homeContent); } else { - String homeContent = OkHttp.newCall(site.getApi(), site.getHeaders()).execute().body().string(); + String homeContent = OkHttp.newCall(site.isProxy(), site.getApi(), site.getHeaders()).execute().body().string(); SpiderDebug.log(homeContent); return fetchPic(site, Result.fromType(site.getType(), homeContent)); } @@ -186,7 +186,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, site.getHeaders()).execute().body().string()).getUrl(); + if (type != null && type.equals("json")) url = Result.fromJson(OkHttp.newCall(site.isProxy(), id, site.getHeaders()).execute().body().string()).getUrl(); Result result = new Result(); result.setUrl(url); result.setFlag(flag); @@ -238,7 +238,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, site.getHeaders()) : OkHttp.newCall(site.getApi(), OkHttp.toBody(params), site.getHeaders()); + Call call = fetchExt(site, params, limit).length() <= 1000 ? OkHttp.newCall(site.isProxy(), site.getApi(), params, site.getHeaders()) : OkHttp.newCall(site.isProxy(), site.getApi(), OkHttp.toBody(params), site.getHeaders()); return call.execute().body().string(); } @@ -251,7 +251,7 @@ public class SiteViewModel extends ViewModel { } private String fetchExt(Site site) throws IOException { - Response res = OkHttp.newCall(site.getExt(), site.getHeaders()).execute(); + Response res = OkHttp.newCall(site.isProxy(), site.getExt(), site.getHeaders()).execute(); if (res.code() != 200) return ""; site.setExt(res.body().string()); return site.getExt(); @@ -264,7 +264,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, site.getHeaders()).execute().body().string(); + String response = OkHttp.newCall(site.isProxy(), site.getApi(), params, site.getHeaders()).execute().body().string(); result.setList(Result.fromType(site.getType(), response).getList()); return result; } diff --git a/catvod/src/main/java/com/github/catvod/crawler/Spider.java b/catvod/src/main/java/com/github/catvod/crawler/Spider.java index 02bd7c128..d9a7887a6 100644 --- a/catvod/src/main/java/com/github/catvod/crawler/Spider.java +++ b/catvod/src/main/java/com/github/catvod/crawler/Spider.java @@ -9,6 +9,7 @@ import java.util.List; import java.util.Map; import okhttp3.Dns; +import okhttp3.OkHttpClient; public abstract class Spider { @@ -76,4 +77,8 @@ public abstract class Spider { public static Dns safeDns() { return OkHttp.dns(); } + + public static OkHttpClient client(boolean proxy, boolean redirect, int timeout) { + return OkHttp.client(proxy, redirect, timeout); + } } 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 81cdb352e..a8be8bf20 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkHttp.java +++ b/catvod/src/main/java/com/github/catvod/net/OkHttp.java @@ -109,19 +109,19 @@ public class OkHttp { } public static Call newCall(String url, Headers headers) { - return client(true).newCall(new Request.Builder().url(url).headers(headers).build()); + return newCall(true, url, headers); } - public static Call newCall(String url, ArrayMap params) { - return client(true).newCall(new Request.Builder().url(buildUrl(url, params)).build()); + public static Call newCall(boolean proxy, String url, Headers headers) { + return client(proxy).newCall(new Request.Builder().url(url).headers(headers).build()); } - public static Call newCall(String url, ArrayMap params, Headers headers) { - return client(true).newCall(new Request.Builder().url(buildUrl(url, params)).headers(headers).build()); + public static Call newCall(boolean proxy, String url, ArrayMap params, Headers headers) { + return client(proxy).newCall(new Request.Builder().url(buildUrl(url, params)).headers(headers).build()); } - public static Call newCall(String url, RequestBody body, Headers headers) { - return client(true).newCall(new Request.Builder().url(url).post(body).headers(headers).build()); + public static Call newCall(boolean proxy, String url, RequestBody body, Headers headers) { + return client(proxy).newCall(new Request.Builder().url(url).post(body).headers(headers).build()); } public static Call newCall(OkHttpClient client, String url, RequestBody body) { diff --git a/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java b/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java index 8665b59c4..c3e13906a 100644 --- a/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java +++ b/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java @@ -99,9 +99,9 @@ public class Spider extends com.github.catvod.crawler.Spider { Headers header = getHeader(object.optString("header")); ArrayMap param = getParam(object.optString("param")); if (object.optString("type").equals("stream")) { - return new Object[]{code, type, OkHttp.newCall(url, param, header).execute().body().byteStream()}; + return new Object[]{code, type, OkHttp.newCall(proxy(), url, param, header).execute().body().byteStream()}; } else { - if (content.isEmpty()) content = OkHttp.newCall(url, header).execute().body().string(); + if (content.isEmpty()) content = OkHttp.newCall(proxy(), url, header).execute().body().string(); return new Object[]{code, type, new ByteArrayInputStream(content.getBytes())}; } } diff --git a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java index 3e1fc0b6f..1d7e0d364 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java @@ -150,7 +150,7 @@ public class Spider extends com.github.catvod.crawler.Spider { ctx.setModuleLoader(new QuickJSContext.DefaultModuleLoader() { @Override public String getModuleStringCode(String moduleName) { - return Module.get().fetch(moduleName); + return Module.get().fetch(proxy(), moduleName); } }); } @@ -200,7 +200,7 @@ public class Spider extends com.github.catvod.crawler.Spider { private String getContent() { String global = "globalThis." + name; - String content = Module.get().fetch(api); + String content = Module.get().fetch(proxy(), api); if (content.contains("__jsEvalReturn")) { cat = true; return content.concat(global + " = __jsEvalReturn()"); diff --git a/quickjs/src/main/java/com/fongmi/quickjs/utils/Module.java b/quickjs/src/main/java/com/fongmi/quickjs/utils/Module.java index 725cee726..3fd8edb97 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/utils/Module.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/utils/Module.java @@ -29,19 +29,19 @@ public class Module { this.cache = new ConcurrentHashMap<>(); } - public String fetch(String name) { + public String fetch(boolean proxy, String name) { if (cache.contains(name)) return cache.get(name); - if (name.startsWith("http")) cache.put(name, request(name)); + if (name.startsWith("http")) cache.put(name, request(proxy, name)); if (name.startsWith("assets")) cache.put(name, Path.asset(name.substring(9))); return cache.get(name); } - private String request(String url) { + private String request(boolean proxy, String url) { try { Uri uri = Uri.parse(url); File file = Path.js(uri.getLastPathSegment()); if (file.exists()) return Path.read(file); - Response response = OkHttp.newCall(url, Headers.of(HttpHeaders.USER_AGENT, "Mozilla/5.0")).execute(); + Response response = OkHttp.newCall(proxy, url, Headers.of(HttpHeaders.USER_AGENT, "Mozilla/5.0")).execute(); if (response.code() != 200) return ""; byte[] data = response.body().bytes(); boolean cache = !"127.0.0.1".equals(uri.getHost());