This commit is contained in:
GH Action - Upstream Sync 2023-09-24 12:27:37 +00:00
commit dfd7075360
15 changed files with 83 additions and 232 deletions

View File

@ -2,21 +2,17 @@ package com.github.catvod.crawler;
import android.content.Context; import android.content.Context;
import com.github.catvod.net.OkHttp;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import okhttp3.Dns; import okhttp3.Dns;
import okhttp3.OkHttpClient;
public abstract class Spider { public abstract class Spider {
private boolean proxy;
public Spider proxy(boolean proxy) {
this.proxy = proxy;
return this;
}
public void init(Context context) throws Exception { public void init(Context context) throws Exception {
} }
@ -60,10 +56,6 @@ public abstract class Spider {
return false; return false;
} }
public boolean proxy() {
return proxy;
}
public Object[] proxyLocal(Map<String, String> params) throws Exception { public Object[] proxyLocal(Map<String, String> params) throws Exception {
return null; return null;
} }
@ -74,4 +66,8 @@ public abstract class Spider {
public static Dns safeDns() { public static Dns safeDns() {
return Dns.SYSTEM; return Dns.SYSTEM;
} }
public OkHttpClient client() {
return OkHttp.client();
}
} }

View File

@ -1,7 +1,6 @@
package com.github.catvod.net; package com.github.catvod.net;
import com.github.catvod.spider.Init; import com.github.catvod.spider.Init;
import com.github.catvod.utils.Prefers;
import com.google.net.cronet.okhttptransport.CronetInterceptor; import com.google.net.cronet.okhttptransport.CronetInterceptor;
import org.chromium.net.CronetEngine; import org.chromium.net.CronetEngine;
@ -12,7 +11,6 @@ import okhttp3.OkHttpClient;
public class Cronet { public class Cronet {
private OkHttpClient proxy;
private OkHttpClient client; private OkHttpClient client;
private static class Loader { private static class Loader {
@ -25,92 +23,42 @@ public class Cronet {
public static OkHttpClient client() { public static OkHttpClient client() {
if (get().client != null) return get().client; if (get().client != null) return get().client;
return get().client = getBuilder(OkHttp.getBuilder()).build(); return get().client = getBuilder().build();
} }
public static OkHttpClient proxy() { public static OkHttpClient noRedirect() {
if (get().proxy != null) return get().proxy; return client().newBuilder().followRedirects(false).followSslRedirects(false).build();
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) { public static String string(String url) {
return string(false, url); return string(url, null);
}
public static String string(boolean proxy, String url) {
return string(proxy, url, null);
} }
public static String string(String url, Map<String, String> header) { public static String string(String url, Map<String, String> header) {
return string(false, url, header); return string(url, null, header);
}
public static String string(boolean proxy, String url, Map<String, String> header) {
return string(proxy, url, null, header);
} }
public static String string(String url, Map<String, String> params, Map<String, String> header) { public static String string(String url, Map<String, String> params, Map<String, String> header) {
return string(false, url, params, header); return new OkRequest(OkHttp.GET, url, params, header).execute(client()).getBody();
}
public static String string(boolean proxy, String url, Map<String, String> params, Map<String, String> header) {
return string(client(proxy), url, params, header);
}
public static String string(OkHttpClient client, String url, Map<String, String> params, Map<String, String> header) {
return new OkRequest(OkHttp.GET, url, params, header).execute(client).getBody();
} }
public static String post(String url, Map<String, String> params) { public static String post(String url, Map<String, String> params) {
return post(false, url, params); return post(url, params, null).getBody();
}
public static String post(boolean proxy, String url, Map<String, String> params) {
return post(proxy, url, params, null).getBody();
} }
public static OkResult post(String url, Map<String, String> params, Map<String, String> header) { public static OkResult post(String url, Map<String, String> params, Map<String, String> header) {
return post(false, url, params, header); return new OkRequest(OkHttp.POST, url, params, header).execute(client());
}
public static OkResult post(boolean proxy, String url, Map<String, String> params, Map<String, String> header) {
return new OkRequest(OkHttp.POST, url, params, header).execute(client(proxy));
} }
public static String post(String url, String json) { public static String post(String url, String json) {
return post(false, url, json); return post(url, json, null).getBody();
}
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<String, String> header) { public static OkResult post(String url, String json, Map<String, String> header) {
return post(false, url, json, header); return new OkRequest(OkHttp.POST, url, json, header).execute(client());
} }
public static OkResult post(boolean proxy, String url, String json, Map<String, String> header) { private static OkHttpClient.Builder getBuilder() {
return new OkRequest(OkHttp.POST, url, json, header).execute(client(proxy)); return OkHttp.getBuilder().addInterceptor(CronetInterceptor.newBuilder(new CronetEngine.Builder(Init.context()).build()).build());
}
private static OkHttpClient.Builder getBuilder(OkHttpClient.Builder builder) {
addInterceptor(builder);
return 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();
}
} }
} }

View File

@ -1,20 +1,12 @@
package com.github.catvod.net; package com.github.catvod.net;
import android.net.Uri;
import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.Spider;
import com.github.catvod.utils.Prefers;
import java.io.IOException; import java.io.IOException;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import okhttp3.Credentials;
import okhttp3.Dns; import okhttp3.Dns;
import okhttp3.Headers; import okhttp3.Headers;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
@ -26,7 +18,6 @@ public class OkHttp {
public static final String POST = "POST"; public static final String POST = "POST";
public static final String GET = "GET"; public static final String GET = "GET";
private OkHttpClient proxy;
private OkHttpClient client; private OkHttpClient client;
private static class Loader { private static class Loader {
@ -41,55 +32,29 @@ public class OkHttp {
return Spider.safeDns(); return Spider.safeDns();
} }
public void resetProxy() {
Authenticator.setDefault(null);
proxy = null;
}
public static OkHttpClient client() { public static OkHttpClient client() {
if (get().client != null) return get().client; if (get().client != null) return get().client;
return get().client = getBuilder().build(); return get().client = getBuilder().build();
} }
public static OkHttpClient proxy() { public static OkHttpClient noRedirect() {
if (get().proxy != null) return get().proxy; return client().newBuilder().followRedirects(false).followSslRedirects(false).build();
return get().proxy = 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 Response newCall(String url, Map<String, String> header) throws IOException { public static Response newCall(String url, Map<String, String> header) throws IOException {
return client(false).newCall(new Request.Builder().url(url).headers(Headers.of(header)).build()).execute(); return client().newCall(new Request.Builder().url(url).headers(Headers.of(header)).build()).execute();
} }
public static String string(String url) { public static String string(String url) {
return string(false, url); return string(url, null);
}
public static String string(boolean proxy, String url) {
return string(proxy, url, null);
} }
public static String string(String url, Map<String, String> header) { public static String string(String url, Map<String, String> header) {
return string(false, url, header); return string(client(), url, null, header);
} }
public static String string(boolean proxy, String url, Map<String, String> header) { public static String string(OkHttpClient client, String url, Map<String, String> header) {
return string(proxy, url, null, header); return string(client, url, null, header);
}
public static String string(String url, Map<String, String> params, Map<String, String> header) {
return string(false, url, params, header);
}
public static String string(boolean proxy, String url, Map<String, String> params, Map<String, String> header) {
return string(client(proxy), url, params, header);
} }
public static String string(OkHttpClient client, String url, Map<String, String> params, Map<String, String> header) { public static String string(OkHttpClient client, String url, Map<String, String> params, Map<String, String> header) {
@ -97,39 +62,31 @@ public class OkHttp {
} }
public static String post(String url, Map<String, String> params) { public static String post(String url, Map<String, String> params) {
return post(false, url, params); return post(client(), url, params, null).getBody();
}
public static String post(boolean proxy, String url, Map<String, String> params) {
return post(proxy, url, params, null).getBody();
} }
public static OkResult post(String url, Map<String, String> params, Map<String, String> header) { public static OkResult post(String url, Map<String, String> params, Map<String, String> header) {
return post(false, url, params, header); return post(client(), url, params, header);
} }
public static OkResult post(boolean proxy, String url, Map<String, String> params, Map<String, String> header) { public static OkResult post(OkHttpClient client, String url, Map<String, String> params, Map<String, String> header) {
return new OkRequest(POST, url, params, header).execute(client(proxy)); return new OkRequest(POST, url, params, header).execute(client);
} }
public static String post(String url, String json) { public static String post(String url, String json) {
return post(false, url, json); return post(url, json, null).getBody();
}
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<String, String> header) { public static OkResult post(String url, String json, Map<String, String> header) {
return post(false, url, json, header); return post(client(), url, json, header);
} }
public static OkResult post(boolean proxy, String url, String json, Map<String, String> header) { public static OkResult post(OkHttpClient client, String url, String json, Map<String, String> header) {
return new OkRequest(POST, url, json, header).execute(client(proxy)); return new OkRequest(POST, url, json, header).execute(client);
} }
public static String getLocation(String url, Map<String, String> header) throws IOException { public static String getLocation(String url, Map<String, String> header) throws IOException {
return getLocation(noRedirect(false).newCall(new Request.Builder().url(url).headers(Headers.of(header)).build()).execute().headers().toMultimap()); return getLocation(noRedirect().newCall(new Request.Builder().url(url).headers(Headers.of(header)).build()).execute().headers().toMultimap());
} }
public static String getLocation(Map<String, List<String>> headers) { public static String getLocation(Map<String, List<String>> headers) {
@ -142,28 +99,4 @@ public class OkHttp {
public static OkHttpClient.Builder getBuilder() { public static OkHttpClient.Builder getBuilder() {
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); 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);
} }
public static OkHttpClient.Builder getBuilder(String proxy) {
Uri uri = Uri.parse(proxy);
String userInfo = uri.getUserInfo();
OkHttpClient.Builder builder = client().newBuilder();
if (userInfo != null && userInfo.contains(":")) setAuthenticator(builder, userInfo);
if (uri.getScheme() == null || uri.getHost() == null || uri.getPort() <= 0) return builder;
if (uri.getScheme().startsWith("http")) builder.proxy(new Proxy(Proxy.Type.HTTP, InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort())));
if (uri.getScheme().startsWith("socks")) builder.proxy(new Proxy(Proxy.Type.SOCKS, InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort())));
return builder;
}
private static void setAuthenticator(OkHttpClient.Builder builder, String userInfo) {
builder.proxyAuthenticator((route, response) -> {
String credential = Credentials.basic(userInfo.split(":")[0], userInfo.split(":")[1]);
return response.request().newBuilder().header("Proxy-Authorization", credential).build();
});
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userInfo.split(":")[0], userInfo.split(":")[1].toCharArray());
}
});
}
} }

View File

@ -42,7 +42,7 @@ public class AppYsV2 extends Spider {
JSONArray jsonArray = null; JSONArray jsonArray = null;
if (!url.isEmpty()) { if (!url.isEmpty()) {
SpiderDebug.log(url); SpiderDebug.log(url);
String json = OkHttp.string(proxy(), url, getHeaders(url)); String json = OkHttp.string(url, getHeaders(url));
JSONObject obj = new JSONObject(json); JSONObject obj = new JSONObject(json);
if (obj.has("list") && obj.get("list") instanceof JSONArray) { if (obj.has("list") && obj.get("list") instanceof JSONArray) {
jsonArray = obj.getJSONArray("list"); jsonArray = obj.getJSONArray("list");
@ -145,7 +145,7 @@ public class AppYsV2 extends Spider {
isTV = true; isTV = true;
} }
SpiderDebug.log(url); SpiderDebug.log(url);
String json = OkHttp.string(proxy(), url, getHeaders(url)); String json = OkHttp.string(url, getHeaders(url));
JSONObject obj = new JSONObject(json); JSONObject obj = new JSONObject(json);
JSONArray videos = new JSONArray(); JSONArray videos = new JSONArray();
if (isTV) { if (isTV) {
@ -197,7 +197,7 @@ public class AppYsV2 extends Spider {
url = url.replace("筛选year", (extend != null && extend.containsKey("year")) ? extend.get("year") : ""); url = url.replace("筛选year", (extend != null && extend.containsKey("year")) ? extend.get("year") : "");
url = url.replace("排序", (extend != null && extend.containsKey("排序")) ? extend.get("排序") : ""); url = url.replace("排序", (extend != null && extend.containsKey("排序")) ? extend.get("排序") : "");
SpiderDebug.log(url); SpiderDebug.log(url);
String json = OkHttp.string(proxy(), url, getHeaders(url)); String json = OkHttp.string(url, getHeaders(url));
JSONObject obj = new JSONObject(json); JSONObject obj = new JSONObject(json);
int totalPg = Integer.MAX_VALUE; int totalPg = Integer.MAX_VALUE;
try { try {
@ -257,7 +257,7 @@ public class AppYsV2 extends Spider {
String apiUrl = getApiUrl(); String apiUrl = getApiUrl();
String url = getPlayUrlPrefix(apiUrl) + ids.get(0); String url = getPlayUrlPrefix(apiUrl) + ids.get(0);
SpiderDebug.log(url); SpiderDebug.log(url);
String json = OkHttp.string(proxy(), url, getHeaders(url)); String json = OkHttp.string(url, getHeaders(url));
JSONObject obj = new JSONObject(json); JSONObject obj = new JSONObject(json);
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
JSONObject vod = new JSONObject(); JSONObject vod = new JSONObject();
@ -272,7 +272,7 @@ public class AppYsV2 extends Spider {
public String searchContent(String key, boolean quick) throws Exception { public String searchContent(String key, boolean quick) throws Exception {
String apiUrl = getApiUrl(); String apiUrl = getApiUrl();
String url = getSearchUrl(apiUrl, URLEncoder.encode(key)); String url = getSearchUrl(apiUrl, URLEncoder.encode(key));
String json = OkHttp.string(proxy(), url, getHeaders(url)); String json = OkHttp.string(url, getHeaders(url));
JSONObject obj = new JSONObject(json); JSONObject obj = new JSONObject(json);
JSONArray jsonArray = null; JSONArray jsonArray = null;
JSONArray videos = new JSONArray(); JSONArray videos = new JSONArray();
@ -694,7 +694,7 @@ public class AppYsV2 extends Spider {
for (String parseUrl : parseUrls) { for (String parseUrl : parseUrls) {
if (parseUrl.isEmpty() || parseUrl.equals("null")) continue; if (parseUrl.isEmpty() || parseUrl.equals("null")) continue;
String playUrl = parseUrl + url; String playUrl = parseUrl + url;
String content = OkHttp.string(proxy(), playUrl); String content = OkHttp.string(playUrl);
JSONObject tryJson = null; JSONObject tryJson = null;
try { try {
tryJson = jsonParse(url, content); tryJson = jsonParse(url, content);
@ -738,11 +738,6 @@ public class AppYsV2 extends Spider {
return Utils.isVideoFormat(url); return Utils.isVideoFormat(url);
} }
@Override
public void destroy() {
OkHttp.get().resetProxy();
}
private String getApiUrl() { private String getApiUrl() {
if (extInfos == null || extInfos.length < 1) return ""; if (extInfos == null || extInfos.length < 1) return "";
return extInfos[0].trim(); return extInfos[0].trim();

View File

@ -27,7 +27,7 @@ public class Eighteen extends Spider {
public String homeContent(boolean filter) throws Exception { public String homeContent(boolean filter) throws Exception {
List<Class> classes = new ArrayList<>(); List<Class> classes = new ArrayList<>();
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
Document doc = Jsoup.parse(OkHttp.string(proxy(), url)); Document doc = Jsoup.parse(OkHttp.string(url));
for (Element a : doc.select("ul.animenu__nav > li > a")) { for (Element a : doc.select("ul.animenu__nav > li > a")) {
String typeName = a.text(); String typeName = a.text();
String typeId = a.attr("href").replace(url, ""); String typeId = a.attr("href").replace(url, "");
@ -50,7 +50,7 @@ public class Eighteen extends Spider {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
tid = tid.replace("random", "list"); tid = tid.replace("random", "list");
tid = tid.replace("index", pg); tid = tid.replace("index", pg);
Document doc = Jsoup.parse(OkHttp.string(proxy(), url + tid)); Document doc = Jsoup.parse(OkHttp.string(url + tid));
for (Element div : doc.select("div.post")) { for (Element div : doc.select("div.post")) {
String id = div.select("a").attr("href").replace(url, ""); String id = div.select("a").attr("href").replace(url, "");
String name = div.select("h3").text(); String name = div.select("h3").text();
@ -63,7 +63,7 @@ public class Eighteen extends Spider {
@Override @Override
public String detailContent(List<String> ids) throws Exception { public String detailContent(List<String> ids) throws Exception {
Document doc = Jsoup.parse(OkHttp.string(proxy(), url + ids.get(0))); Document doc = Jsoup.parse(OkHttp.string(url + ids.get(0)));
Element wrap = doc.select("div.video-wrap").get(0); Element wrap = doc.select("div.video-wrap").get(0);
String name = wrap.select("div.archive-title > h1").text(); String name = wrap.select("div.archive-title > h1").text();
String pic = wrap.select("div.player-wrap > img").attr("src"); String pic = wrap.select("div.player-wrap > img").attr("src");
@ -94,17 +94,12 @@ public class Eighteen extends Spider {
return Result.get().url(result.get("url")).string(); return Result.get().url(result.get("url")).string();
} }
@Override
public void destroy() {
OkHttp.get().resetProxy();
}
private String searchContent(String key, String pg) { private String searchContent(String key, String pg) {
HashMap<String, String> params = new HashMap<>(); HashMap<String, String> params = new HashMap<>();
params.put("search_keyword", key); params.put("search_keyword", key);
params.put("search_type", "fc"); params.put("search_type", "fc");
params.put("op", "search"); params.put("op", "search");
String res = OkHttp.post(proxy(), url + "searchform_search/all/" + pg + ".html", params); String res = OkHttp.post(url + "searchform_search/all/" + pg + ".html", params);
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
for (Element div : Jsoup.parse(res).select("div.post")) { for (Element div : Jsoup.parse(res).select("div.post")) {
String id = div.select("a").attr("href").replace(url, ""); String id = div.select("a").attr("href").replace(url, "");

View File

@ -43,10 +43,10 @@ public class Hanime extends Spider {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
List<Class> classes = new ArrayList<>(); List<Class> classes = new ArrayList<>();
LinkedHashMap<String, List<Filter>> filters = new LinkedHashMap<>(); LinkedHashMap<String, List<Filter>> filters = new LinkedHashMap<>();
Document doc1 = Jsoup.parse(OkHttp.string(proxy(), siteUrl.concat("/search?genre=裏番"), getHeaders())); Document doc1 = Jsoup.parse(OkHttp.string(siteUrl.concat("/search?genre=裏番"), getHeaders()));
List<String> sorts = doc1.select("div.hentai-sort-options-wrapper").eachText(); List<String> sorts = doc1.select("div.hentai-sort-options-wrapper").eachText();
List<String> years = doc1.getElementById("year").select("option").eachAttr("value"); List<String> years = doc1.getElementById("year").select("option").eachAttr("value");
Document doc2 = Jsoup.parse(OkHttp.string(proxy(), siteUrl, getHeaders())); Document doc2 = Jsoup.parse(OkHttp.string(siteUrl, getHeaders()));
for (Element element : doc2.select("a.nav-item")) { for (Element element : doc2.select("a.nav-item")) {
String text = element.text(); String text = element.text();
if (text.equals("新番預告") || text.equals("H漫畫")) continue; if (text.equals("新番預告") || text.equals("H漫畫")) continue;
@ -75,7 +75,7 @@ public class Hanime extends Spider {
if (extend.get("by") == null) extend.put("by", "最新上市"); if (extend.get("by") == null) extend.put("by", "最新上市");
if (extend.get("year") == null) extend.put("year", ""); if (extend.get("year") == null) extend.put("year", "");
String target = siteUrl.concat("/search?genre=").concat(tid).concat("&page=").concat(pg).concat("&sort=").concat(extend.get("by")).concat("&year=").concat(extend.get("year")); String target = siteUrl.concat("/search?genre=").concat(tid).concat("&page=").concat(pg).concat("&sort=").concat(extend.get("by")).concat("&year=").concat(extend.get("year"));
Document doc = Jsoup.parse(OkHttp.string(proxy(), target, getHeaders())); Document doc = Jsoup.parse(OkHttp.string(target, getHeaders()));
for (Element element : doc.select("div.col-xs-6")) { for (Element element : doc.select("div.col-xs-6")) {
String pic = element.select("img").get(1).attr("src"); String pic = element.select("img").get(1).attr("src");
String url = element.select("a.overlay").attr("href"); String url = element.select("a.overlay").attr("href");
@ -100,7 +100,7 @@ public class Hanime extends Spider {
@Override @Override
public String detailContent(List<String> ids) throws Exception { public String detailContent(List<String> ids) throws Exception {
Document doc = Jsoup.parse(OkHttp.string(proxy(), siteUrl.concat("/watch?v=").concat(ids.get(0)), getHeaders())); Document doc = Jsoup.parse(OkHttp.string(siteUrl.concat("/watch?v=").concat(ids.get(0)), getHeaders()));
String name = doc.getElementById("shareBtn-title").text(); String name = doc.getElementById("shareBtn-title").text();
JSONObject json = new JSONObject(doc.select("script[type=application/ld+json]").html().trim()); JSONObject json = new JSONObject(doc.select("script[type=application/ld+json]").html().trim());
String content = json.optString("description"); String content = json.optString("description");
@ -120,7 +120,7 @@ public class Hanime extends Spider {
public String searchContent(String key, boolean quick) throws Exception { public String searchContent(String key, boolean quick) throws Exception {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
String target = siteUrl.concat("/search?query=").concat(key).concat("&genre=&sort=&year=&month=&duration="); String target = siteUrl.concat("/search?query=").concat(key).concat("&genre=&sort=&year=&month=&duration=");
Document doc = Jsoup.parse(OkHttp.string(proxy(), target, getHeaders())); Document doc = Jsoup.parse(OkHttp.string(target, getHeaders()));
for (Element element : doc.select("div.col-xs-6")) { for (Element element : doc.select("div.col-xs-6")) {
String pic = element.select("img").get(1).attr("src"); String pic = element.select("img").get(1).attr("src");
String url = element.select("a.overlay").attr("href"); String url = element.select("a.overlay").attr("href");
@ -135,9 +135,4 @@ public class Hanime extends Spider {
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception { public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
return Result.get().url(id).header(getHeaders()).string(); return Result.get().url(id).header(getHeaders()).string();
} }
@Override
public void destroy() {
OkHttp.get().resetProxy();
}
} }

View File

@ -34,13 +34,13 @@ public class Jable extends Spider {
public String homeContent(boolean filter) throws Exception { public String homeContent(boolean filter) throws Exception {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
List<Class> classes = new ArrayList<>(); List<Class> classes = new ArrayList<>();
Document doc = Jsoup.parse(OkHttp.string(proxy(), cateUrl, getHeaders())); Document doc = Jsoup.parse(OkHttp.string(cateUrl, getHeaders()));
for (Element element : doc.select("div.img-box > a")) { for (Element element : doc.select("div.img-box > a")) {
String typeId = element.attr("href").split("/")[4]; String typeId = element.attr("href").split("/")[4];
String typeName = element.select("div.absolute-center > h4").text(); String typeName = element.select("div.absolute-center > h4").text();
classes.add(new Class(typeId, typeName)); classes.add(new Class(typeId, typeName));
} }
doc = Jsoup.parse(OkHttp.string(proxy(), siteUrl, getHeaders())); doc = Jsoup.parse(OkHttp.string(siteUrl, getHeaders()));
for (Element element : doc.select("div.video-img-box")) { for (Element element : doc.select("div.video-img-box")) {
String pic = element.select("img").attr("data-src"); String pic = element.select("img").attr("data-src");
String url = element.select("a").attr("href"); String url = element.select("a").attr("href");
@ -56,7 +56,7 @@ public class Jable extends Spider {
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) throws Exception { public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) throws Exception {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
String target = cateUrl + tid + "/?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=post_date&from=" + String.format(Locale.getDefault(), "%02d", Integer.parseInt(pg)) + "&_=" + System.currentTimeMillis(); String target = cateUrl + tid + "/?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=post_date&from=" + String.format(Locale.getDefault(), "%02d", Integer.parseInt(pg)) + "&_=" + System.currentTimeMillis();
Document doc = Jsoup.parse(OkHttp.string(proxy(), target, getHeaders())); Document doc = Jsoup.parse(OkHttp.string(target, getHeaders()));
for (Element element : doc.select("div.video-img-box")) { for (Element element : doc.select("div.video-img-box")) {
String pic = element.select("img").attr("data-src"); String pic = element.select("img").attr("data-src");
String url = element.select("a").attr("href"); String url = element.select("a").attr("href");
@ -69,7 +69,7 @@ public class Jable extends Spider {
@Override @Override
public String detailContent(List<String> ids) throws Exception { public String detailContent(List<String> ids) throws Exception {
Document doc = Jsoup.parse(OkHttp.string(proxy(), detailUrl.concat(ids.get(0)).concat("/"), getHeaders())); Document doc = Jsoup.parse(OkHttp.string(detailUrl.concat(ids.get(0)).concat("/"), getHeaders()));
String name = doc.select("meta[property=og:title]").attr("content"); String name = doc.select("meta[property=og:title]").attr("content");
String pic = doc.select("meta[property=og:image]").attr("content"); String pic = doc.select("meta[property=og:image]").attr("content");
String year = doc.select("span.inactive-color").get(0).text(); String year = doc.select("span.inactive-color").get(0).text();
@ -86,7 +86,7 @@ public class Jable extends Spider {
@Override @Override
public String searchContent(String key, boolean quick) throws Exception { public String searchContent(String key, boolean quick) throws Exception {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
Document doc = Jsoup.parse(OkHttp.string(proxy(), searchUrl.concat(URLEncoder.encode(key)).concat("/"), getHeaders())); Document doc = Jsoup.parse(OkHttp.string(searchUrl.concat(URLEncoder.encode(key)).concat("/"), getHeaders()));
for (Element element : doc.select("div.video-img-box")) { for (Element element : doc.select("div.video-img-box")) {
String pic = element.select("img").attr("data-src"); String pic = element.select("img").attr("data-src");
String url = element.select("a").attr("href"); String url = element.select("a").attr("href");
@ -101,9 +101,4 @@ public class Jable extends Spider {
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception { public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
return Result.get().url(id).header(getHeaders()).string(); return Result.get().url(id).header(getHeaders()).string();
} }
@Override
public void destroy() {
OkHttp.get().resetProxy();
}
} }

View File

@ -28,7 +28,7 @@ public class Miss extends Spider {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
List<Class> classes = new ArrayList<>(); List<Class> classes = new ArrayList<>();
LinkedHashMap<String, List<Filter>> filters = new LinkedHashMap<>(); LinkedHashMap<String, List<Filter>> filters = new LinkedHashMap<>();
Document doc = Jsoup.parse(OkHttp.string(proxy(), url)); Document doc = Jsoup.parse(OkHttp.string(url));
List<String> typeIds = Arrays.asList("chinese-subtitle", "new", "release", "uncensored-leak", "genres/VR", "today-hot", "weekly-hot", "monthly-hot", "siro", "luxu", "gana", "maan", "scute", "ara", "uncensored-leak", "fc2", "heyzo", "tokyohot", "1pondo", "caribbeancom", "caribbeancompr", "10musume", "pacopacomama", "gachinco", "xxxav", "marriedslash", "naughty4610", "naughty0930", "madou", "twav", "furuke"); List<String> typeIds = Arrays.asList("chinese-subtitle", "new", "release", "uncensored-leak", "genres/VR", "today-hot", "weekly-hot", "monthly-hot", "siro", "luxu", "gana", "maan", "scute", "ara", "uncensored-leak", "fc2", "heyzo", "tokyohot", "1pondo", "caribbeancom", "caribbeancompr", "10musume", "pacopacomama", "gachinco", "xxxav", "marriedslash", "naughty4610", "naughty0930", "madou", "twav", "furuke");
for (Element a : doc.select("nav a")) { for (Element a : doc.select("nav a")) {
String typeId = a.attr("href").replace(url, ""); String typeId = a.attr("href").replace(url, "");
@ -55,7 +55,7 @@ public class Miss extends Spider {
String filters = extend.get("filters"); String filters = extend.get("filters");
if (TextUtils.isEmpty(filters)) target += "?page=" + pg; if (TextUtils.isEmpty(filters)) target += "?page=" + pg;
else target += "?filters=" + extend.get("filters") + "&page=" + pg; else target += "?filters=" + extend.get("filters") + "&page=" + pg;
Document doc = Jsoup.parse(OkHttp.string(proxy(), target)); Document doc = Jsoup.parse(OkHttp.string(target));
for (Element div : doc.select("div.thumbnail")) { for (Element div : doc.select("div.thumbnail")) {
String id = div.select("a.text-secondary").attr("href").replace(url, ""); String id = div.select("a.text-secondary").attr("href").replace(url, "");
String name = div.select("a.text-secondary").text(); String name = div.select("a.text-secondary").text();
@ -70,7 +70,7 @@ public class Miss extends Spider {
@Override @Override
public String detailContent(List<String> ids) throws Exception { public String detailContent(List<String> ids) throws Exception {
Document doc = Jsoup.parse(OkHttp.string(proxy(), url + ids.get(0))); Document doc = Jsoup.parse(OkHttp.string(url + ids.get(0)));
String name = doc.select("meta[property=og:title]").attr("content"); String name = doc.select("meta[property=og:title]").attr("content");
String pic = doc.select("meta[property=og:image]").attr("content"); String pic = doc.select("meta[property=og:image]").attr("content");
Vod vod = new Vod(); Vod vod = new Vod();
@ -97,14 +97,9 @@ public class Miss extends Spider {
return Result.get().parse().url(url + id).string(); return Result.get().parse().url(url + id).string();
} }
@Override
public void destroy() {
OkHttp.get().resetProxy();
}
private String searchContent(String key, String pg) { private String searchContent(String key, String pg) {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
Document doc = Jsoup.parse(OkHttp.string(proxy(), url + "search/" + key + "?page=" + pg)); Document doc = Jsoup.parse(OkHttp.string(url + "search/" + key + "?page=" + pg));
for (Element div : doc.select("div.thumbnail")) { for (Element div : doc.select("div.thumbnail")) {
String id = div.select("a.text-secondary").attr("href").replace(url, ""); String id = div.select("a.text-secondary").attr("href").replace(url, "");
String name = div.select("a.text-secondary").text(); String name = div.select("a.text-secondary").text();

View File

@ -26,6 +26,8 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import okhttp3.OkHttpClient;
public class Star extends Spider { public class Star extends Spider {
private static final String apiUrl = "https://aws.ulivetv.net/v3/web/api/filter"; private static final String apiUrl = "https://aws.ulivetv.net/v3/web/api/filter";
@ -44,10 +46,19 @@ public class Star extends Spider {
} }
private String getVer() { private String getVer() {
for (Element script : Jsoup.parse(OkHttp.string(proxy(), siteUrl, getHeader())).select("script")) if (script.attr("src").contains("buildManifest.js")) return script.attr("src").split("/")[3]; for (Element script : Jsoup.parse(OkHttp.string(client(), siteUrl, getHeader())).select("script")) if (script.attr("src").contains("buildManifest.js")) return script.attr("src").split("/")[3];
return ""; return "";
} }
@Override
public OkHttpClient client() {
try {
return super.client();
} catch (Throwable e) {
return OkHttp.client();
}
}
@Override @Override
public void init(Context context, String extend) { public void init(Context context, String extend) {
map = new LinkedHashMap<>(); map = new LinkedHashMap<>();
@ -65,7 +76,7 @@ public class Star extends Spider {
LinkedHashMap<String, List<Filter>> filters = new LinkedHashMap<>(); LinkedHashMap<String, List<Filter>> filters = new LinkedHashMap<>();
for (Map.Entry<String, String> entry : map.entrySet()) classes.add(new Class(entry.getKey(), entry.getValue())); for (Map.Entry<String, String> entry : map.entrySet()) classes.add(new Class(entry.getKey(), entry.getValue()));
for (Class type : classes) { for (Class type : classes) {
Element script = Jsoup.parse(OkHttp.string(proxy(), siteUrl + type.getTypeId() + "/all/all/all", getHeader())).select("#__NEXT_DATA__").get(0); Element script = Jsoup.parse(OkHttp.string(client(), siteUrl + type.getTypeId() + "/all/all/all", getHeader())).select("#__NEXT_DATA__").get(0);
JSONObject obj = new JSONObject(script.data()).getJSONObject("props").getJSONObject("pageProps").getJSONObject("filterCondition"); JSONObject obj = new JSONObject(script.data()).getJSONObject("props").getJSONObject("pageProps").getJSONObject("filterCondition");
Condition item = Condition.objectFrom(obj.toString()); Condition item = Condition.objectFrom(obj.toString());
filters.put(type.getTypeId(), item.getFilter()); filters.put(type.getTypeId(), item.getFilter());
@ -76,7 +87,7 @@ public class Star extends Spider {
@Override @Override
public String homeVideoContent() throws Exception { public String homeVideoContent() throws Exception {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
Element script = Jsoup.parse(OkHttp.string(proxy(), siteUrl)).select("#__NEXT_DATA__").get(0); Element script = Jsoup.parse(OkHttp.string(client(), siteUrl, getHeader())).select("#__NEXT_DATA__").get(0);
List<Card> cards = Card.arrayFrom(new JSONObject(script.data()).getJSONObject("props").getJSONObject("pageProps").getJSONArray("cards").toString()); List<Card> cards = Card.arrayFrom(new JSONObject(script.data()).getJSONObject("props").getJSONObject("pageProps").getJSONArray("cards").toString());
for (Card card : cards) if (!card.getName().equals("电视直播")) for (Card item : card.getCards()) list.add(item.vod()); for (Card card : cards) if (!card.getName().equals("电视直播")) for (Card item : card.getCards()) list.add(item.vod());
return Result.string(list); return Result.string(list);
@ -94,7 +105,7 @@ public class Star extends Spider {
if (year.length() > 0) query.setYear(year); if (year.length() > 0) query.setYear(year);
if (type.length() > 0) query.setLabel(type); if (type.length() > 0) query.setLabel(type);
if (area.length() > 0) query.setCountry(area); if (area.length() > 0) query.setCountry(area);
String body = OkHttp.post(proxy(), apiUrl, query.toString()); String body = OkHttp.post(apiUrl, query.toString());
List<Card> cards = Card.arrayFrom(new JSONObject(body).getJSONObject("data").getJSONArray("list").toString()); List<Card> cards = Card.arrayFrom(new JSONObject(body).getJSONObject("data").getJSONArray("list").toString());
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
for (Card card : cards) list.add(card.vod()); for (Card card : cards) list.add(card.vod());
@ -103,7 +114,7 @@ public class Star extends Spider {
@Override @Override
public String detailContent(List<String> ids) throws Exception { public String detailContent(List<String> ids) throws Exception {
Element script = Jsoup.parse(OkHttp.string(proxy(), detail.concat(ids.get(0)), getHeader())).select("#__NEXT_DATA__").get(0); Element script = Jsoup.parse(OkHttp.string(client(), detail.concat(ids.get(0)), getHeader())).select("#__NEXT_DATA__").get(0);
Detail detail = Detail.objectFrom(new JSONObject(script.data()).getJSONObject("props").getJSONObject("pageProps").getJSONObject("pageData").toString()); Detail detail = Detail.objectFrom(new JSONObject(script.data()).getJSONObject("props").getJSONObject("pageProps").getJSONObject("pageData").toString());
Vod vod = new Vod(); Vod vod = new Vod();
vod.setVodId(ids.get(0)); vod.setVodId(ids.get(0));
@ -126,7 +137,7 @@ public class Star extends Spider {
@Override @Override
public String searchContent(String key, boolean quick) throws Exception { public String searchContent(String key, boolean quick) throws Exception {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
String json = OkHttp.string(proxy(), siteUrl + data + ver + "/search.json?word=" + URLEncoder.encode(key), getHeader()); String json = OkHttp.string(client(), siteUrl + data + ver + "/search.json?word=" + URLEncoder.encode(key), getHeader());
List<Card> items = Card.arrayFrom(new JSONObject(json).getJSONObject("pageProps").getJSONArray("initList").toString()); List<Card> items = Card.arrayFrom(new JSONObject(json).getJSONObject("pageProps").getJSONArray("initList").toString());
for (Card item : items) list.add(item.vod()); for (Card item : items) list.add(item.vod());
return Result.string(list); return Result.string(list);
@ -136,10 +147,5 @@ public class Star extends Spider {
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception { public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
return Result.get().url(id).string(); return Result.get().url(id).string();
} }
@Override
public void destroy() {
OkHttp.get().resetProxy();
}
} }

View File

@ -103,6 +103,8 @@ public class Wogg extends Ali {
item.setTypeName(String.join(",", doc.select(".video-info-header div.tag-link a").eachText())); item.setTypeName(String.join(",", doc.select(".video-info-header div.tag-link a").eachText()));
List<String> shareLinks = doc.select(".module-row-text").eachAttr("data-clipboard-text"); List<String> shareLinks = doc.select(".module-row-text").eachAttr("data-clipboard-text");
for (int i = 0; i < shareLinks.size(); i++) shareLinks.set(i, shareLinks.get(i).trim());
item.setVodPlayFrom(super.detailContentVodPlayFrom(shareLinks)); item.setVodPlayFrom(super.detailContentVodPlayFrom(shareLinks));
item.setVodPlayUrl(super.detailContentVodPlayUrl(shareLinks)); item.setVodPlayUrl(super.detailContentVodPlayUrl(shareLinks));

View File

@ -317,11 +317,6 @@ public class XPath extends Spider {
return Utils.isVideoFormat(url); return Utils.isVideoFormat(url);
} }
@Override
public void destroy() {
OkHttp.get().resetProxy();
}
protected String ext = null; protected String ext = null;
protected Rule rule = null; protected Rule rule = null;
@ -329,7 +324,7 @@ public class XPath extends Spider {
if (rule == null) { if (rule == null) {
if (ext != null) { if (ext != null) {
if (ext.startsWith("http")) { if (ext.startsWith("http")) {
String json = OkHttp.string(proxy(), ext, null); String json = OkHttp.string(ext, null);
rule = Rule.fromJson(json); rule = Rule.fromJson(json);
loadRuleExt(json); loadRuleExt(json);
} else { } else {
@ -345,6 +340,6 @@ public class XPath extends Spider {
protected String fetch(String webUrl) { protected String fetch(String webUrl) {
SpiderDebug.log(webUrl); SpiderDebug.log(webUrl);
return OkHttp.string(proxy(), webUrl, getHeaders()); return OkHttp.string(webUrl, getHeaders());
} }
} }

Binary file not shown.

View File

@ -1 +1 @@
e615e21ea55994ac1dbc284463412a3a 37fc87b676f1a75fd1a1db559126b888

View File

@ -1,5 +1,5 @@
{ {
"spider": "https://fongmi.cachefly.net/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;e615e21ea55994ac1dbc284463412a3a", "spider": "https://fongmi.cachefly.net/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;5931706b319f6cb041b667eeed890608",
"wallpaper": "https://gao.chuqiuyu.tk", "wallpaper": "https://gao.chuqiuyu.tk",
"sites": [ "sites": [
{ {
@ -66,7 +66,6 @@
"type": 3, "type": 3,
"api": "csp_Eighteen", "api": "csp_Eighteen",
"searchable": 1, "searchable": 1,
"proxy": true,
"style": { "style": {
"type": "rect", "type": "rect",
"ratio": 1.485 "ratio": 1.485
@ -78,7 +77,6 @@
"type": 3, "type": 3,
"api": "csp_Jable", "api": "csp_Jable",
"searchable": 1, "searchable": 1,
"proxy": true,
"style": { "style": {
"type": "rect", "type": "rect",
"ratio": 1.77 "ratio": 1.77
@ -90,7 +88,6 @@
"type": 3, "type": 3,
"api": "csp_Miss", "api": "csp_Miss",
"searchable": 1, "searchable": 1,
"proxy": true,
"style": { "style": {
"type": "rect", "type": "rect",
"ratio": 1.777 "ratio": 1.777
@ -102,7 +99,6 @@
"type": 3, "type": 3,
"api": "csp_Hanime", "api": "csp_Hanime",
"searchable": 1, "searchable": 1,
"proxy": true,
"style": { "style": {
"type": "rect", "type": "rect",
"ratio": 0.68 "ratio": 0.68

View File

@ -1,5 +1,5 @@
{ {
"spider": "https://fongmi.cachefly.net/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;e615e21ea55994ac1dbc284463412a3a", "spider": "https://fongmi.cachefly.net/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;5931706b319f6cb041b667eeed890608",
"wallpaper": "http://饭太硬.top/深色壁纸/api.php", "wallpaper": "http://饭太硬.top/深色壁纸/api.php",
"sites": [ "sites": [
{ {