diff --git a/app/build.gradle b/app/build.gradle index e31ddd75..c6d57eb6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,7 +33,7 @@ android { dependencies { //Debug For HTTP/3 - //implementation 'org.chromium.net:cronet-embedded:108.5359.79' + //implementation 'com.google.android.gms:play-services-cronet:18.0.1' implementation 'com.google.net.cronet:cronet-okhttp:0.1.0' implementation 'androidx.annotation:annotation:1.5.0' implementation 'com.squareup.okhttp3:okhttp:3.12.13' diff --git a/app/src/main/java/com/github/catvod/net/Cronet.java b/app/src/main/java/com/github/catvod/net/Cronet.java new file mode 100644 index 00000000..faade1c3 --- /dev/null +++ b/app/src/main/java/com/github/catvod/net/Cronet.java @@ -0,0 +1,124 @@ +package com.github.catvod.net; + +import com.github.catvod.crawler.Spider; +import com.github.catvod.spider.Init; +import com.google.net.cronet.okhttptransport.CronetInterceptor; + +import org.chromium.net.CronetEngine; + +import java.util.List; +import java.util.Map; + +import okhttp3.Dns; +import okhttp3.OkHttpClient; + +public class Cronet { + + public static final String POST = "POST"; + public static final String GET = "GET"; + + private final OkHttpClient noRedirect; + private final OkHttpClient client; + + private static class Loader { + static volatile Cronet INSTANCE = new Cronet(); + } + + public static Cronet get() { + return Loader.INSTANCE; + } + + public Cronet() { + client = getBuilder().build(); + noRedirect = client.newBuilder().followRedirects(false).followSslRedirects(false).build(); + } + + private OkHttpClient.Builder getBuilder() { + OkHttpClient.Builder builder = OkHttp.getBuilder(); + addInterceptor(builder); + return builder; + } + + private 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 Dns safeDns() { + try { + return (Dns) Spider.class.getMethod("safeDns").invoke(null); + } catch (Exception e) { + return Dns.SYSTEM; + } + } + + public static void stringNoRedirect(String url, Map header, Map> respHeader) { + string(noRedirect(), GET, url, null, null, header, respHeader); + } + + public static String string(OkHttpClient client, String method, String url, String tag, Map params, Map header, Map> respHeader) { + return new OkRequest(method, url, params, header, respHeader).tag(tag).execute(client); + } + + public static String string(String url) { + return string(url, null); + } + + public static String string(String url, Map header) { + return string(url, header, null); + } + + public static String string(String url, Map header, Map> respHeader) { + return string(url, null, header, respHeader); + } + + public static String string(String url, Map params, Map header, Map> respHeader) { + return string(url, null, params, header, respHeader); + } + + public static String string(String url, String tag, Map header) { + return string(url, tag, null, header, null); + } + + public static String string(String url, String tag, Map params, Map header, Map> respHeader) { + return string(client(), GET, url, tag, params, header, respHeader); + } + + public static String post(String url, Map params) { + return post(url, params, null); + } + + public static String post(String url, Map params, Map header) { + return post(url, params, header, null); + } + + public static String post(String url, Map params, Map header, Map> respHeader) { + return string(client(), POST, url, null, params, header, respHeader); + } + + public static String postJson(String url, String json) { + return postJson(url, json, null); + } + + public static String postJson(String url, String json, Map header) { + return new OkRequest(POST, url, json, header).execute(client()); + } + + public static String getRedirectLocation(Map> headers) { + if (headers == null) return null; + if (headers.containsKey("location")) return headers.get("location").get(0); + if (headers.containsKey("Location")) return headers.get("Location").get(0); + return null; + } +} 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 b4b943be..10d989bf 100644 --- a/app/src/main/java/com/github/catvod/net/OkHttp.java +++ b/app/src/main/java/com/github/catvod/net/OkHttp.java @@ -1,10 +1,6 @@ package com.github.catvod.net; import com.github.catvod.crawler.Spider; -import com.github.catvod.spider.Init; -import com.google.net.cronet.okhttptransport.CronetInterceptor; - -import org.chromium.net.CronetEngine; import java.util.List; import java.util.Map; @@ -35,8 +31,8 @@ public class OkHttp { noRedirect = client.newBuilder().followRedirects(false).followSslRedirects(false).build(); } - private OkHttpClient.Builder getBuilder() { - return new OkHttpClient.Builder().dns(safeDns()).addInterceptor(CronetInterceptor.newBuilder(new CronetEngine.Builder(Init.context()).build()).build()).callTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS).connectTimeout(30, TimeUnit.SECONDS).retryOnConnectionFailure(true).hostnameVerifier(SSLSocketFactoryCompat.hostnameVerifier).sslSocketFactory(new SSLSocketFactoryCompat(), SSLSocketFactoryCompat.trustAllCert); + public static OkHttpClient.Builder getBuilder() { + return new OkHttpClient.Builder().dns(safeDns()).callTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS).connectTimeout(30, TimeUnit.SECONDS).retryOnConnectionFailure(true).hostnameVerifier(SSLSocketFactoryCompat.hostnameVerifier).sslSocketFactory(new SSLSocketFactoryCompat(), SSLSocketFactoryCompat.trustAllCert); } private static OkHttpClient client() { diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index d25a994c..cd29538e 100644 Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5 index 84f93a87..58458d80 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -281195ff29b564bd774323e1cab13017 +945b391d7430796229f6d5309037abeb