diff --git a/app/src/main/java/com/github/catvod/spider/ChangZhang.java b/app/src/main/java/com/github/catvod/spider/ChangZhang.java index accac9d6..b2dfa579 100644 --- a/app/src/main/java/com/github/catvod/spider/ChangZhang.java +++ b/app/src/main/java/com/github/catvod/spider/ChangZhang.java @@ -199,19 +199,53 @@ public class ChangZhang extends Spider { String content = OkHttp.string(id, getHeader()); Document document = Jsoup.parse(content); Elements iframe = document.select("iframe"); - String videoContent = OkHttp.string(iframe.get(0).attr("src"), getIframeHeader(iframe.get(0).attr("src"))); + if (!iframe.isEmpty()) { + String videoContent = OkHttp.string(iframe.get(0).attr("src"), getIframeHeader(iframe.get(0).attr("src"))); - Matcher matcher2 = Pattern.compile("result_v2 =(.*?);").matcher(videoContent); - String json2 = matcher2.find() ? matcher2.group(1) : ""; - org.json.JSONObject jsonObject = new JSONObject(json2); - String encodedStr = jsonObject.getString("data"); - String realUrl = new String(new BigInteger(StringUtils.reverse(encodedStr), 16).toByteArray()); - Map header = getVideoHeader(); - String temp = decodeStr(realUrl); - return Result.get().url(temp).string(); + Matcher matcher2 = Pattern.compile("result_v2 =(.*?);").matcher(videoContent); + String json2 = matcher2.find() ? matcher2.group(1) : ""; + org.json.JSONObject jsonObject = new JSONObject(json2); + String encodedStr = jsonObject.getString("data"); + String realUrl = new String(new BigInteger(StringUtils.reverse(encodedStr), 16).toByteArray()); + Map header = getVideoHeader(); + String temp = decodeStr(realUrl); + return Result.get().url(temp).string(); + } else { + for (Element script : document.select("script")) { + String scriptText = script.html(); + if (scriptText.contains("wp_nonce")) { + String reg = "var(.*?)=\"(.*?)\""; + Pattern pattern = Pattern.compile(reg); + Matcher matcher = pattern.matcher(scriptText); + + if (matcher.find()) { + String data = matcher.group(2); + String result = dncry(data); + String regex = "url:.*?['\"](.*?)['\"]"; + Pattern pattern1 = Pattern.compile(regex); + Matcher matcher1 = pattern1.matcher(result); + if (matcher1.find()) { + String playUrl = matcher1.group(0).replace("\"", "").replace("url:", "").trim(); + return Result.get().url(playUrl).string(); + } + } + } + + } + } + return null; } + String dncry(String data) { + String kc8a64 = "336460fdcb76a597"; + String iv = "1234567890983456"; + + return AESEncryption.decrypt(data, kc8a64, iv); + } + + ; + String decodeStr(String _0x267828) { int _0x5cd2b5 = (_0x267828.length() - 7) / 2; String _0x2191ed = _0x267828.substring(0, _0x5cd2b5); diff --git a/app/src/main/java/com/github/catvod/utils/AESEncryption.java b/app/src/main/java/com/github/catvod/utils/AESEncryption.java index 958ee8cf..7ac02de0 100644 --- a/app/src/main/java/com/github/catvod/utils/AESEncryption.java +++ b/app/src/main/java/com/github/catvod/utils/AESEncryption.java @@ -4,6 +4,8 @@ import android.util.Base64; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; @@ -55,6 +57,27 @@ public class AESEncryption { } } + public static String decrypt(String word,String key,String iv) { + try { + byte[] keyBytes = key.getBytes("UTF-8"); + SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES"); + + byte[] ivBytes = iv.getBytes("UTF-8"); + IvParameterSpec ivSpec = new IvParameterSpec(ivBytes); + + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); + cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); + + byte[] decoded = Base64.decode(word, Base64.DEFAULT); + byte[] decrypted = cipher.doFinal(decoded); + + return new String(decrypted, Charset.defaultCharset()); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + private static byte[] hexStringToByteArray(String hexString) { int len = hexString.length(); byte[] data = new byte[len / 2]; diff --git a/app/src/test/java/ChangZhangTest.java b/app/src/test/java/ChangZhangTest.java index 385f65cf..7ee4e247 100644 --- a/app/src/test/java/ChangZhangTest.java +++ b/app/src/test/java/ChangZhangTest.java @@ -75,7 +75,7 @@ public class ChangZhangTest { @org.junit.Test public void playerContent() throws Exception { String froms = "厂长$$$"; - String urls = "立即播放 (周处除三害)$https://www.czys.pro/v_play/bXZfMTc1ODAtbm1fMQ==.html$$$"; + String urls = "立即播放 (周处除三害)$https://www.czys.pro/v_play/bXZfMTg2MjEtbm1fMQ==.html$$$"; for (int i = 0; i < urls.split("\\$\\$\\$").length; i++) { String content = spider.playerContent(froms.split("\\$\\$\\$")[i], urls.split("\\$\\$\\$")[i].split("\\$")[1], new ArrayList<>()); JsonObject map = Json.safeObject(content); diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 02c62ed5..bd0a1c4b 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 fba6b54f..061b1396 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -a2dc46da2b4b48c7111366fa3e02897e +fdccfbf91a5b725dcade07fe35e444c9 diff --git a/json/index.json b/json/index.json index 783ca6bb..c4195bbc 100644 --- a/json/index.json +++ b/json/index.json @@ -1,5 +1,5 @@ { - "spider": "../jar/custom_spider.jar;md5;a2dc46da2b4b48c7111366fa3e02897e", + "spider": "../jar/custom_spider.jar;md5;fdccfbf91a5b725dcade07fe35e444c9", "lives": [ { "name": "直播ipv6",