From 4c24ef06a4022c25f72dc82cf4ad9d94670033d8 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 24 Sep 2023 02:05:10 +0800 Subject: [PATCH] Add single proxy --- .../java/com/github/catvod/net/Cronet.java | 139 ++++++++++-------- .../java/com/github/catvod/net/OkHttp.java | 22 +-- .../com/github/catvod/spider/AppYsV2.java | 5 + .../java/com/github/catvod/spider/Bili.java | 10 +- .../com/github/catvod/spider/Eighteen.java | 5 + .../java/com/github/catvod/spider/Hanime.java | 5 + .../java/com/github/catvod/spider/Jable.java | 5 + .../java/com/github/catvod/spider/Miss.java | 5 + .../java/com/github/catvod/spider/Star.java | 5 + .../java/com/github/catvod/spider/XPath.java | 5 + 10 files changed, 130 insertions(+), 76 deletions(-) diff --git a/app/src/main/java/com/github/catvod/net/Cronet.java b/app/src/main/java/com/github/catvod/net/Cronet.java index d169695a..9d6e2513 100644 --- a/app/src/main/java/com/github/catvod/net/Cronet.java +++ b/app/src/main/java/com/github/catvod/net/Cronet.java @@ -1,24 +1,19 @@ package com.github.catvod.net; import com.github.catvod.spider.Init; +import com.github.catvod.utils.Prefers; import com.google.net.cronet.okhttptransport.CronetInterceptor; import org.chromium.net.CronetEngine; -import java.io.IOException; import java.util.Map; -import okhttp3.Headers; import okhttp3.OkHttpClient; -import okhttp3.Request; public class Cronet { - public static final String POST = "POST"; - public static final String GET = "GET"; - - private final OkHttpClient noRedirect; - private final OkHttpClient client; + private OkHttpClient proxy; + private OkHttpClient client; private static class Loader { static volatile Cronet INSTANCE = new Cronet(); @@ -28,66 +23,94 @@ public class Cronet { return Loader.INSTANCE; } - public Cronet() { - client = getBuilder().build(); - noRedirect = client.newBuilder().followRedirects(false).followSslRedirects(false).build(); + public static OkHttpClient client() { + if (get().client != null) return get().client; + return get().client = getBuilder(OkHttp.getBuilder()).build(); } - private OkHttpClient.Builder getBuilder() { - OkHttpClient.Builder builder = OkHttp.getBuilder(); + public static OkHttpClient proxy() { + if (get().proxy != null) return get().proxy; + return get().proxy = getBuilder(OkHttp.getBuilder(Prefers.getString("proxy"))).build(); + } + + public static OkHttpClient client(boolean proxy) { + return proxy ? proxy() : client(); + } + + public static OkHttpClient noRedirect(boolean proxy) { + return client(proxy).newBuilder().followRedirects(false).followSslRedirects(false).build(); + } + + public static String string(String url) { + return string(false, url); + } + + public static String string(boolean proxy, String url) { + return string(proxy, url, null); + } + + public static String string(String url, Map header) { + return string(false, url, header); + } + + public static String string(boolean proxy, String url, Map header) { + return string(proxy, url, null, header); + } + + public static String string(String url, Map params, Map header) { + return string(false, url, params, header); + } + + public static String string(boolean proxy, String url, Map params, Map header) { + return string(client(proxy), url, params, header); + } + + public static String string(OkHttpClient client, String url, Map params, Map header) { + return new OkRequest(OkHttp.GET, url, params, header).execute(client).getBody(); + } + + public static String post(String url, Map params) { + return post(false, url, params); + } + + public static String post(boolean proxy, String url, Map params) { + return post(proxy, url, params, null).getBody(); + } + + public static OkResult post(String url, Map params, Map header) { + return post(false, url, params, header); + } + + public static OkResult post(boolean proxy, String url, Map params, Map header) { + return new OkRequest(OkHttp.POST, url, params, header).execute(client(proxy)); + } + + public static String post(String url, String json) { + return post(false, url, json); + } + + public static String post(boolean proxy, String url, String json) { + return post(proxy, url, json, null).getBody(); + } + + public static OkResult post(String url, String json, Map header) { + return post(false, url, json, header); + } + + public static OkResult post(boolean proxy, String url, String json, Map header) { + return new OkRequest(OkHttp.POST, url, json, header).execute(client(proxy)); + } + + private static OkHttpClient.Builder getBuilder(OkHttpClient.Builder builder) { addInterceptor(builder); return builder; } - private void addInterceptor(OkHttpClient.Builder builder) { + private static void addInterceptor(OkHttpClient.Builder builder) { try { builder.addInterceptor(CronetInterceptor.newBuilder(new CronetEngine.Builder(Init.context()).build()).build()); } catch (Exception e) { e.printStackTrace(); } } - - private static OkHttpClient client() { - return get().client; - } - - private static OkHttpClient noRedirect() { - return get().noRedirect; - } - - public static String string(String url) { - return string(url, null); - } - - public static String string(String url, Map header) { - return string(url, null, header); - } - - public static String string(String url, Map params, Map header) { - return string(client(), GET, url, params, header); - } - - public static String string(OkHttpClient client, String method, String url, Map params, Map header) { - return new OkRequest(method, url, params, header).execute(client).getBody(); - } - - public static String post(String url, Map params) { - return post(url, params, null); - } - - public static String post(String url, Map params, Map header) { - return string(client(), POST, url, params, header); - } - - public static OkResult postJson(String url, String json) { - return postJson(url, json, null); - } - - public static OkResult postJson(String url, String json, Map header) { - return new OkRequest(POST, url, json, header).execute(client()); - } - - public static String getLocation(String url, Map header) throws IOException { - return OkHttp.getLocation(noRedirect().newCall(new Request.Builder().url(url).headers(Headers.of(header)).build()).execute().headers().toMultimap()); - } } diff --git a/app/src/main/java/com/github/catvod/net/OkHttp.java b/app/src/main/java/com/github/catvod/net/OkHttp.java index a3294144..8b8f4f89 100644 --- a/app/src/main/java/com/github/catvod/net/OkHttp.java +++ b/app/src/main/java/com/github/catvod/net/OkHttp.java @@ -84,6 +84,10 @@ public class OkHttp { return string(proxy, url, null, header); } + public static String string(String url, Map params, Map header) { + return string(false, url, params, header); + } + public static String string(boolean proxy, String url, Map params, Map header) { return string(client(proxy), url, params, header); } @@ -100,6 +104,14 @@ public class OkHttp { return post(proxy, url, params, null).getBody(); } + public static OkResult post(String url, Map params, Map header) { + return post(false, url, params, header); + } + + public static OkResult post(boolean proxy, String url, Map params, Map header) { + return new OkRequest(POST, url, params, header).execute(client(proxy)); + } + public static String post(String url, String json) { return post(false, url, json); } @@ -116,14 +128,6 @@ public class OkHttp { return new OkRequest(POST, url, json, header).execute(client(proxy)); } - public static OkResult post(String url, Map params, Map header) { - return post(false, url, params, header); - } - - public static OkResult post(boolean proxy, String url, Map params, Map header) { - return new OkRequest(POST, url, params, header).execute(client(proxy)); - } - public static String getLocation(String url, Map header) throws IOException { return getLocation(noRedirect(false).newCall(new Request.Builder().url(url).headers(Headers.of(header)).build()).execute().headers().toMultimap()); } @@ -139,7 +143,7 @@ public class OkHttp { return new OkHttpClient.Builder().dns(dns()).connectTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS).hostnameVerifier(SSLCompat.VERIFIER).sslSocketFactory(new SSLCompat(), SSLCompat.TM); } - private static OkHttpClient.Builder getBuilder(String proxy) { + public static OkHttpClient.Builder getBuilder(String proxy) { Uri uri = Uri.parse(proxy); String userInfo = uri.getUserInfo(); OkHttpClient.Builder builder = client().newBuilder(); diff --git a/app/src/main/java/com/github/catvod/spider/AppYsV2.java b/app/src/main/java/com/github/catvod/spider/AppYsV2.java index 1c3eca65..1dc3ee9a 100644 --- a/app/src/main/java/com/github/catvod/spider/AppYsV2.java +++ b/app/src/main/java/com/github/catvod/spider/AppYsV2.java @@ -738,6 +738,11 @@ public class AppYsV2 extends Spider { return Utils.isVideoFormat(url); } + @Override + public void destroy() { + OkHttp.get().resetProxy(); + } + private String getApiUrl() { if (extInfos == null || extInfos.length < 1) return ""; return extInfos[0].trim(); diff --git a/app/src/main/java/com/github/catvod/spider/Bili.java b/app/src/main/java/com/github/catvod/spider/Bili.java index 3bb6d8a3..2bf365c8 100644 --- a/app/src/main/java/com/github/catvod/spider/Bili.java +++ b/app/src/main/java/com/github/catvod/spider/Bili.java @@ -23,7 +23,6 @@ import com.google.gson.JsonParser; import java.io.ByteArrayInputStream; import java.io.File; -import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; @@ -64,14 +63,7 @@ public class Bili extends Spider { audios.put("30216", "64000"); } - private String getCookie() throws IOException { - StringBuilder sb = new StringBuilder(); - List cookies = OkHttp.newCall("https://www.bilibili.com", getHeader()).headers("set-cookie"); - for (String cookie : cookies) sb.append(cookie.split(";")[0]).append(";"); - return sb.toString(); - } - - private void setCookie() throws IOException { + private void setCookie() { cookie = extend.get("cookie").getAsString(); if (cookie.startsWith("http")) cookie = OkHttp.string(cookie).trim(); if (TextUtils.isEmpty(cookie)) cookie = FileUtil.read(getUserCache()); diff --git a/app/src/main/java/com/github/catvod/spider/Eighteen.java b/app/src/main/java/com/github/catvod/spider/Eighteen.java index d62605c5..15f390b5 100644 --- a/app/src/main/java/com/github/catvod/spider/Eighteen.java +++ b/app/src/main/java/com/github/catvod/spider/Eighteen.java @@ -94,6 +94,11 @@ public class Eighteen extends Spider { return Result.get().url(result.get("url")).string(); } + @Override + public void destroy() { + OkHttp.get().resetProxy(); + } + private String searchContent(String key, String pg) { HashMap params = new HashMap<>(); params.put("search_keyword", key); diff --git a/app/src/main/java/com/github/catvod/spider/Hanime.java b/app/src/main/java/com/github/catvod/spider/Hanime.java index d1a740a4..30082985 100644 --- a/app/src/main/java/com/github/catvod/spider/Hanime.java +++ b/app/src/main/java/com/github/catvod/spider/Hanime.java @@ -135,4 +135,9 @@ public class Hanime extends Spider { public String playerContent(String flag, String id, List vipFlags) throws Exception { return Result.get().url(id).header(getHeaders()).string(); } + + @Override + public void destroy() { + OkHttp.get().resetProxy(); + } } diff --git a/app/src/main/java/com/github/catvod/spider/Jable.java b/app/src/main/java/com/github/catvod/spider/Jable.java index 68b33a92..e1bce735 100644 --- a/app/src/main/java/com/github/catvod/spider/Jable.java +++ b/app/src/main/java/com/github/catvod/spider/Jable.java @@ -101,4 +101,9 @@ public class Jable extends Spider { public String playerContent(String flag, String id, List vipFlags) throws Exception { return Result.get().url(id).header(getHeaders()).string(); } + + @Override + public void destroy() { + OkHttp.get().resetProxy(); + } } diff --git a/app/src/main/java/com/github/catvod/spider/Miss.java b/app/src/main/java/com/github/catvod/spider/Miss.java index 87c2087c..d4284e97 100644 --- a/app/src/main/java/com/github/catvod/spider/Miss.java +++ b/app/src/main/java/com/github/catvod/spider/Miss.java @@ -97,6 +97,11 @@ public class Miss extends Spider { return Result.get().parse().url(url + id).string(); } + @Override + public void destroy() { + OkHttp.get().resetProxy(); + } + private String searchContent(String key, String pg) { List list = new ArrayList<>(); Document doc = Jsoup.parse(OkHttp.string(proxy(), url + "search/" + key + "?page=" + pg)); diff --git a/app/src/main/java/com/github/catvod/spider/Star.java b/app/src/main/java/com/github/catvod/spider/Star.java index 58514390..f5b6e20f 100644 --- a/app/src/main/java/com/github/catvod/spider/Star.java +++ b/app/src/main/java/com/github/catvod/spider/Star.java @@ -136,5 +136,10 @@ public class Star extends Spider { public String playerContent(String flag, String id, List vipFlags) throws Exception { return Result.get().url(id).string(); } + + @Override + public void destroy() { + OkHttp.get().resetProxy(); + } } diff --git a/app/src/main/java/com/github/catvod/spider/XPath.java b/app/src/main/java/com/github/catvod/spider/XPath.java index de126c0d..741976a6 100644 --- a/app/src/main/java/com/github/catvod/spider/XPath.java +++ b/app/src/main/java/com/github/catvod/spider/XPath.java @@ -317,6 +317,11 @@ public class XPath extends Spider { return Utils.isVideoFormat(url); } + @Override + public void destroy() { + OkHttp.get().resetProxy(); + } + protected String ext = null; protected Rule rule = null;