diff --git a/app/src/main/java/com/github/catvod/spider/Czsapp.java b/app/src/main/java/com/github/catvod/spider/Czsapp.java deleted file mode 100644 index 60f0e5a..0000000 --- a/app/src/main/java/com/github/catvod/spider/Czsapp.java +++ /dev/null @@ -1,435 +0,0 @@ -package com.github.catvod.spider; - -import android.text.TextUtils; -import android.util.Base64; - -import com.github.catvod.crawler.Spider; -import com.github.catvod.crawler.SpiderDebug; -import com.github.catvod.utils.AES; -import com.github.catvod.utils.CBC; -import com.github.catvod.utils.gZip; -import com.github.catvod.utils.okhttp.OKCallBack; -import com.github.catvod.utils.okhttp.OkHttpUtil; - -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.StringReader; -import java.net.URLEncoder; -import java.security.MessageDigest; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import javax.crypto.Cipher; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; -import okhttp3.Call; -import okhttp3.OkHttpClient; -import okhttp3.Response; -import okhttp3.ResponseBody; - -import org.json.JSONArray; -import org.json.JSONObject; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -public class Czsapp extends Spider { - private static final Pattern Y = Pattern.compile("\"([^\"]+)\";var [\\d\\w]+=function dncry.*md5.enc.Utf8.parse\\(\"([\\d\\w]+)\".*md5.enc.Utf8.parse\\(([\\d]+)\\)"); - private static final Pattern pY = Pattern.compile("video: \\{url: \"([^\"]+)\""); - private static final Pattern m = Pattern.compile("subtitle: \\{url:\"([^\"]+\\.vtt)\""); - private static final Pattern Q = Pattern.compile("src: '([^']+\\.css)',"); - private static final Pattern Db = Pattern.compile("/movie/(\\d+).html"); - private static final Pattern I = Pattern.compile("/page/(\\d+)"); - private static final Pattern d = Pattern.compile("/v_play/(.*)\\.html"); - private static final Pattern K = Pattern.compile("var vkey = ['\"]([^'\"]+)['\"]"); - private static final Pattern Oe = Pattern.compile("var fvkey = ['\"]([^'\"]+)['\"]"); - private static final Pattern fi = Pattern.compile("var ua = ['\"]([^'\"]+)['\"]"); - private static final Pattern M = Pattern.compile("var cip = ['\"]([^'\"]+)['\"]"); - private static final Pattern X = Pattern.compile("var time = ['\"]([^'\"]+)['\"]"); - private static final Pattern a = Pattern.compile("var url = ['\"]([^'\"]+)['\"]"); - - - private String mmd5(String str) { - try { - MessageDigest messageDigest = MessageDigest.getInstance("MD5"); - messageDigest.update(str.getBytes()); - byte[] digest = messageDigest.digest(); - StringBuilder sb = new StringBuilder(); - for (byte b : digest) { - String hexString = Integer.toHexString(b & 255); - while (hexString.length() < 2) { - hexString = "0" + hexString; - } - sb.append(hexString); - } - return sb.toString(); - } catch (Exception e) { - e.printStackTrace(); - return ""; - } - } - - public static Object[] loadsub(String sub) { - try { - OKCallBack.OKCallBackDefault callBack = new OKCallBack.OKCallBackDefault() { - @Override - protected void onFailure(Call call, Exception e) { - - } - - @Override - protected void onResponse(Response response) { - - } - }; - OkHttpClient YM = OkHttpUtil.defaultClient(); - OkHttpUtil.get(YM, sub, null, Headers(), callBack); - Response result = callBack.getResult(); - int code = result.code(); - if (code == 404) { - return new Object[]{200, "application/octet-stream", new ByteArrayInputStream("WEBVTT".getBytes())}; - } - ResponseBody body = result.body(); - byte[] bytes = body.bytes(); - byte[] tokenkey = Arrays.copyOfRange(bytes, 0, 16); - byte[] data = Arrays.copyOfRange(bytes, 16, bytes.length); - byte[] KS = CBC.CBC(data, tokenkey, tokenkey); - String vtt = gZip.KS(KS); - - - vtt = vtt.replaceAll("(\\d{2}:\\d{2}:\\d{2}.\\d{3}.+\\d{2}:\\d{2}:\\d{2}.\\d{3}).*", "$1"); - vtt = vtt.replaceAll("(\\d{2}:\\d{2}.\\d{3}).*?( --> )(\\d{2}:\\d{2}.\\d{3}).*", "00:$1$200:$3"); - vtt = vtt.replaceAll("<.*><.*>(.*)<.*><.*>", "$1"); - vtt = vtt.replaceAll("&(.*);", ""); - vtt = vtt.replaceAll(".*NOTE.*", ""); - BufferedReader br = new BufferedReader(new StringReader(vtt)); - ArrayList lines = new ArrayList<>(); - int captionNumber = 1; - String line = br.readLine(); - while (line != null) { - if (line.matches("\\d{2}:\\d{2}:\\d{2}.\\d{3}.+\\d{2}:\\d{2}:\\d{2}.\\d{3}")) { - if (lines.get(lines.size() - 1).trim().isEmpty()) { - lines.add(captionNumber + ""); - captionNumber++; - } - } - lines.add(line); - line = br.readLine(); - } - String join = TextUtils.join("\n", lines); - - return new Object[]{200, "application/octet-stream", new ByteArrayInputStream(join.getBytes())}; - } catch (Exception e) { - e.printStackTrace(); - SpiderDebug.log(e); - return null; - } - } - - public String categoryContent(String str, String str2, boolean z, HashMap hashMap) { - try { - JSONObject jSONObject = new JSONObject(); - Document doc = Jsoup.parse(OkHttpUtil.string("https://czspp.com/" + str + "/page/" + str2, Headers())); - int parseInt = Integer.parseInt(str2); - int parseInt2 = Integer.parseInt(str2); - Matcher matcher = I.matcher(doc.select("div.pagenavi_txt > a.extend").last().attr("href")); - if (matcher.find()) { - parseInt2 = Integer.parseInt(matcher.group(1)); - } - Elements jS = doc.select("div.mi_ne_kd > ul > li"); - JSONArray jSONArray = new JSONArray(); - for (Element next : jS) { - Matcher matcher2 = Db.matcher(next.select("a").attr("href")); - if (matcher2.find()) { - String group = matcher2.group(1); - String trim = next.select("img").attr("alt").trim(); - String trim2 = next.select("img").attr("data-original").trim(); - String trim3 = next.select("div.hdinfo > span").text().trim(); - JSONObject jSONObject2 = new JSONObject(); - jSONObject2.put("vod_id", group); - jSONObject2.put("vod_name", trim); - jSONObject2.put("vod_pic", trim2); - jSONObject2.put("vod_remarks", trim3); - jSONArray.put(jSONObject2); - } - } - jSONObject.put("list", jSONArray); - jSONObject.put("page", parseInt); - jSONObject.put("pagecount", parseInt2); - jSONObject.put("limit", 24); - jSONObject.put("total", parseInt2 <= 1 ? jSONArray.length() : parseInt2 * 24); - return jSONObject.toString(); - } catch (Exception e) { - SpiderDebug.log(e); - return ""; - } - } - - public String detailContent(List list) { - String str2 = ""; - try { - - JSONObject jSONObject = new JSONObject(); - JSONArray jSONArray = new JSONArray(); - JSONObject jSONObject2 = new JSONObject(); - Document doc = Jsoup.parse(OkHttpUtil.string("https://czspp.com/movie/" + list.get(0) + ".html", Headers())); - String trim = doc.select("div.moviedteail_tt > h1").text().trim(); - String pY2 = doc.select("div.dyimg > img").attr("src"); - Iterator it = doc.select("ul.moviedteail_list > li").iterator(); - String str3 = str2; - String str4 = str3; - String str5 = str4; - String str6 = str5; - String str7 = str6; - String str8 = str7; - while (it.hasNext()) { - String trim2 = it.next().text().trim(); - if (trim2.length() >= 4) { - try { - String substring = trim2.substring(0, 2); - String substring2 = trim2.substring(3); - if (substring.equals("类型")) { - str3 = substring2; - } else if (substring.equals("地区")) { - str5 = substring2; - } else if (substring.equals("年份")) { - str4 = substring2; - } else if (substring.equals("导演")) { - str8 = substring2; - } else if (substring.equals("主演")) { - str7 = substring2; - } else if (substring.equals("豆瓣")) { - str6 = substring2; - } - } catch (Exception e) { - SpiderDebug.log(e); - } - } - } - jSONObject2.put("vod_id", list.get(0)); - jSONObject2.put("vod_name", trim); - jSONObject2.put("vod_pic", pY2); - jSONObject2.put("type_name", str3); - jSONObject2.put("vod_year", str4); - jSONObject2.put("vod_area", str5); - jSONObject2.put("vod_remarks", str6); - jSONObject2.put("vod_actor", str7); - jSONObject2.put("vod_director", str8); - jSONObject2.put("vod_content", doc.select("div.yp_context").text().trim()); - jSONObject2.put("vod_play_from", "厂长资源"); - ArrayList arrayList = new ArrayList(); - for (Element next : doc.select("div.paly_list_btn > a")) { - Matcher matcher = d.matcher(next.attr("href")); - if (matcher.find()) { - arrayList.add(next.text() + "$" + matcher.group(1)); - } - } - jSONObject2.put("vod_play_url", TextUtils.join("#", arrayList)); - jSONArray.put(jSONObject2); - jSONObject.put("list", jSONArray); - return jSONObject.toString(); - } catch (Exception e3) { - }return ""; - } - - public String homeContent(boolean z) { - try { - - JSONObject jSONObject = new JSONObject(); - Document doc = Jsoup.parse(OkHttpUtil.string("https://czspp.com", Headers())); - Elements jS = doc.select(".navlist > li > a"); - JSONArray jSONArray = new JSONArray(); - for (Element next : jS) { - String pY2 = next.attr("href"); - if (pY2.length() > 1) { - String substring = pY2.substring(1); - String trim = next.text().trim(); - JSONObject jSONObject2 = new JSONObject(); - jSONObject2.put("type_id", substring); - jSONObject2.put("type_name", trim); - jSONArray.put(jSONObject2); - } - } - jSONObject.put("class", jSONArray); - Elements jS2 = doc.select("div.mi_ne_kd > ul > li"); - JSONArray jSONArray2 = new JSONArray(); - for (Element next2 : jS2) { - Matcher matcher = Db.matcher(next2.select("a").attr("href")); - if (matcher.find()) { - String group = matcher.group(1); - String trim2 = next2.select("img").attr("alt").trim(); - String trim3 = next2.select("img").attr("data-original").trim(); - String trim4 = next2.select("div.hdinfo > span").text().trim(); - JSONObject jSONObject3 = new JSONObject(); - jSONObject3.put("vod_id", group); - jSONObject3.put("vod_name", trim2); - jSONObject3.put("vod_pic", trim3); - jSONObject3.put("vod_remarks", trim4); - jSONArray2.put(jSONObject3); - } - } - jSONObject.put("list", jSONArray2); - return jSONObject.toString(); - } catch (Exception e) { - SpiderDebug.log(e); - return ""; - } - } - - protected static HashMap Headers() { - HashMap hashMap = new HashMap<>(); - hashMap.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"); - return hashMap; - } - - - public String playerContent(String str, String str2, List list) { - String str3; - String str4; - Elements G8; - try { - String K2 = OkHttpUtil.string("https://czspp.com/v_play/" + str2 + ".html", Headers()); - Document UR = Jsoup.parse(K2); - Matcher matcher = Y.matcher(K2); - if (matcher.find()) { - String group = matcher.group(1); - String KEY = matcher.group(2); - String IV = matcher.group(3); - String str5 = AES.CBC(group, KEY, IV); - Matcher matcher2 = pY.matcher(str5); - str3 = matcher2.find() ? matcher2.group(1) : ""; - Matcher matcher3 = m.matcher(str5); - str4 = matcher3.find() ? matcher3.group(1) : ""; - } else { - str4 = ""; - str3 = str4; - } - if (TextUtils.isEmpty(str3) && (G8 = UR.select("iframe.viframe")) != null) { - String pY2 = G8.attr("src"); - if (pY2.contains("jx.xmflv.com")) { - String K3 = OkHttpUtil.string(pY2, Headers()); - Matcher matcher4 = X.matcher(K3); - if (!matcher4.find()) { - return ""; - } - String group2 = matcher4.group(1); - Matcher matcher5 = a.matcher(K3); - if (!matcher5.find()) { - return ""; - } - String group3 = matcher5.group(1); - String K4 = OkHttpUtil.string("https://jx.xmflv.com/player.php?time=" + group2 + "&url=" + group3, Headers()); - Matcher matcher6 = K.matcher(K4); - if (!matcher6.find()) { - return ""; - } - String group4 = matcher6.group(1); - Matcher matcher7 = Oe.matcher(K4); - if (!matcher7.find()) { - return ""; - } - String group5 = matcher7.group(1); - Matcher matcher8 = fi.matcher(K4); - if (!matcher8.find()) { - return ""; - } - String group6 = matcher8.group(1); - Matcher matcher9 = M.matcher(K4); - if (!matcher9.find()) { - return ""; - } - String group7 = matcher9.group(1); - Matcher matcher10 = X.matcher(K4); - if (!matcher10.find()) { - return ""; - } - String group8 = matcher10.group(1); - byte[] bytes3 = mmd5(group5).getBytes(); - byte[] bytes4 = "UVE1NTY4MDY2NQ==".getBytes(); - Cipher cipher2 = Cipher.getInstance("AES/CBC/NoPadding"); - cipher2.init(1, new SecretKeySpec(bytes3, "AES"), new IvParameterSpec(bytes4)); - String encodeToString = Base64.encodeToString(cipher2.doFinal(group5.getBytes()), 0); - OKCallBack.OKCallBackDefault callBack = new OKCallBack.OKCallBackDefault() { - - public void onResponse(Response response) { - } - - @Override - protected void onFailure(Call call, Exception exc) { - } - }; - HashMap hashMap = new HashMap(); - hashMap.put("url", group3); - hashMap.put("time", group8); - hashMap.put("ua", group6); - hashMap.put("cip", group7); - hashMap.put("vkey", group4); - hashMap.put("fvkey", encodeToString); - OkHttpUtil.post(OkHttpUtil.defaultClient(), "https://jx.xmflv.com/xmflv-1.SVG", hashMap, Headers(), callBack); - str3 = new JSONObject(callBack.getResult().body().string()).getString("url"); - } else { - Matcher matcher11 = Q.matcher(OkHttpUtil.string(pY2, Headers())); - if (matcher11.find()) { - str3 = matcher11.group(1); - } - } - } - JSONObject jSONObject = new JSONObject(); - jSONObject.put("parse", "0"); - jSONObject.put("playUrl", ""); - jSONObject.put("url", str3); - jSONObject.put("header", ""); - if (!TextUtils.isEmpty(str4)) { - jSONObject.put("subf", "/vtt/utf-8"); - jSONObject.put("subt", Proxy.localProxyUrl() + "?do=czspp&url=" + URLEncoder.encode(str4)); - } - return jSONObject.toString(); - } catch (Exception e) { - e.printStackTrace(); - SpiderDebug.log(e); - return ""; - } - } - - public String searchContent(String str, boolean z) { - try { - JSONObject jSONObject = new JSONObject(); - Elements jS = Jsoup.parse(OkHttpUtil.string("https://czspp.com/xssearch?q=" + URLEncoder.encode(str), Headers())).select("div.mi_ne_kd > ul > li"); - JSONArray jSONArray = new JSONArray(); - for (Element next : jS) { - Matcher matcher = Db.matcher(next.select("a").attr("href")); - JSONObject jSONObject2 = new JSONObject(); - if (matcher.find()) { - String group = matcher.group(1); - String trim = next.select("img").attr("alt").trim(); - if (trim.contains(str)) { - String trim2 = next.select("img").attr("src").trim(); - if (next.hasClass(".jidi")) { - String remark = next.select(".jidi span").text(); - jSONObject2.put("vod_remarks", remark); - } else { - String id = next.select("a").attr("href"); - Document doc = Jsoup.parse(OkHttpUtil.string(id, Headers())); - String remark = doc.select("ul.moviedteail_list li span").get(0).text(); - jSONObject2.put("vod_id", group); - jSONObject2.put("vod_name", trim); - jSONObject2.put("vod_pic", trim2); - jSONObject2.put("vod_remarks", remark); - jSONArray.put(jSONObject2); - } - } - } - } - jSONObject.put("list", jSONArray); - return jSONObject.toString(); - } catch (Exception e) { - SpiderDebug.log(e); - return ""; - } - } -} \ No newline at end of file