Ncat修复
This commit is contained in:
parent
0def73e0da
commit
25e5abd622
|
|
@ -7,7 +7,7 @@ import com.github.catvod.crawler.Spider;
|
||||||
import com.github.catvod.net.OkHttp;
|
import com.github.catvod.net.OkHttp;
|
||||||
import com.github.catvod.utils.AESEncryption;
|
import com.github.catvod.utils.AESEncryption;
|
||||||
import com.github.catvod.utils.Util;
|
import com.github.catvod.utils.Util;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.jsoup.Jsoup;
|
import org.jsoup.Jsoup;
|
||||||
import org.jsoup.nodes.Document;
|
import org.jsoup.nodes.Document;
|
||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
|
|
@ -15,6 +15,7 @@ import org.jsoup.select.Elements;
|
||||||
|
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
|
@ -22,8 +23,8 @@ import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class NCat extends Spider {
|
public class NCat extends Spider {
|
||||||
|
|
||||||
private static final String siteUrl = "https://www.ncat3.com:51111";
|
private static final String siteUrl = "https://www.ncat3.app";
|
||||||
private static final String picUrl = "https://61.147.93.252:15002";
|
private static final String picUrl = "https://vres.wbadl.cn";
|
||||||
private static final String cateUrl = siteUrl + "/show/";
|
private static final String cateUrl = siteUrl + "/show/";
|
||||||
private static final String detailUrl = siteUrl + "/detail/";
|
private static final String detailUrl = siteUrl + "/detail/";
|
||||||
private static final String searchUrl = siteUrl + "/search?k=";
|
private static final String searchUrl = siteUrl + "/search?k=";
|
||||||
|
|
@ -100,6 +101,7 @@ public class NCat extends Spider {
|
||||||
String PlayUrl = "";
|
String PlayUrl = "";
|
||||||
for (int i = 0; i < tabs.size(); i++) {
|
for (int i = 0; i < tabs.size(); i++) {
|
||||||
String tabName = tabs.get(i).select("span").last().text();
|
String tabName = tabs.get(i).select("span").last().text();
|
||||||
|
if (Arrays.asList("超清", "4K(高峰不卡)").contains(tabName)) continue;
|
||||||
if (!"".equals(PlayFrom)) {
|
if (!"".equals(PlayFrom)) {
|
||||||
PlayFrom = PlayFrom + "$$$" + tabName;
|
PlayFrom = PlayFrom + "$$$" + tabName;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -156,16 +158,27 @@ public class NCat 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 {
|
||||||
Document doc = Jsoup.parse(OkHttp.string(playUrl.concat(id), getHeaders()));
|
Document doc = Jsoup.parse(OkHttp.string(playUrl.concat(id), getHeaders()));
|
||||||
String regex = "window.whatTMDwhatTMDPPPP = '(.*?)'";
|
String regex = "window.whatTMDwhatTMDPPPP = '(.*?)'";
|
||||||
|
String playSource = "playSource=\\{(.*?)\\}";
|
||||||
Pattern pattern = Pattern.compile(regex);
|
Pattern pattern = Pattern.compile(regex);
|
||||||
Matcher matcher = pattern.matcher(doc.html());
|
Matcher matcher = pattern.matcher(doc.html());
|
||||||
String url = "";
|
String url = "";
|
||||||
if (matcher.find()) {
|
if (matcher.find()) {
|
||||||
url = matcher.group(1);
|
url = matcher.group(1);
|
||||||
String regex1 = "KKYS\\.safePlay\\(\\)\\.url(\"(.*?)\"),";
|
Pattern playSourcePattern = Pattern.compile(playSource);
|
||||||
|
Matcher playSourceMatcher = playSourcePattern.matcher(doc.html());
|
||||||
|
//playSourceMatcher.find();
|
||||||
|
String srcUrl = Util.findByRegex("https?://[^\\s/$.?#].+\\.m3u8", doc.html(), 0);
|
||||||
|
if(StringUtils.isNoneBlank(srcUrl)){
|
||||||
|
return Result.get().url(srcUrl).header(getHeaders()).string();
|
||||||
|
|
||||||
|
}
|
||||||
|
String js = playSourceMatcher.group(1);
|
||||||
|
|
||||||
|
String regex1 = "KKYS\\['safePlay'\\]\\(\\)\\['url'\\]\\(\"([^\"]+)\"\\)";
|
||||||
Pattern pattern1 = Pattern.compile(regex1);
|
Pattern pattern1 = Pattern.compile(regex1);
|
||||||
Matcher matcher1 = pattern1.matcher(doc.html());
|
String jsSource = Util.unicodeToString(js);
|
||||||
String iv = "";
|
Matcher matcher1 = pattern1.matcher(jsSource);
|
||||||
|
String iv = "VNF9aVQF!G*0ux@2hAigUeH3";
|
||||||
if (matcher1.find()) {
|
if (matcher1.find()) {
|
||||||
iv = matcher1.group(1);
|
iv = matcher1.group(1);
|
||||||
}
|
}
|
||||||
|
|
@ -178,7 +191,7 @@ public class NCat extends Spider {
|
||||||
try {
|
try {
|
||||||
String encryptedKey = "VNF9aVQF!G*0ux@2hAigUeH3";
|
String encryptedKey = "VNF9aVQF!G*0ux@2hAigUeH3";
|
||||||
|
|
||||||
return AESEncryption.decrypt(encryptedData, encryptedKey, iv,AESEncryption.ECB_PKCS_7_PADDING);
|
return AESEncryption.decrypt(encryptedData, encryptedKey, iv, AESEncryption.ECB_PKCS_7_PADDING);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return "123456";
|
return "123456";
|
||||||
|
|
|
||||||
|
|
@ -11,18 +11,15 @@ import android.view.ViewGroup;
|
||||||
import android.webkit.ValueCallback;
|
import android.webkit.ValueCallback;
|
||||||
import android.webkit.WebView;
|
import android.webkit.WebView;
|
||||||
import android.webkit.WebViewClient;
|
import android.webkit.WebViewClient;
|
||||||
|
|
||||||
import com.github.catvod.spider.Init;
|
import com.github.catvod.spider.Init;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
|
@ -361,6 +358,41 @@ public class Util {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String unicodeToString(String unicode) {
|
||||||
|
if (StringUtils.isBlank(unicode)) {
|
||||||
|
return unicode;
|
||||||
|
}
|
||||||
|
|
||||||
|
final int len = unicode.length();
|
||||||
|
StringBuilder sb = new StringBuilder(len);
|
||||||
|
int i;
|
||||||
|
int pos = 0;
|
||||||
|
while ((i = StringUtils.indexOfIgnoreCase(unicode, "\\u", pos)) != -1) {
|
||||||
|
sb.append(unicode, pos, i);//写入Unicode符之前的部分
|
||||||
|
pos = i;
|
||||||
|
if (i + 5 < len) {
|
||||||
|
char c;
|
||||||
|
try {
|
||||||
|
c = (char) Integer.parseInt(unicode.substring(i + 2, i + 6), 16);
|
||||||
|
sb.append(c);
|
||||||
|
pos = i + 6;//跳过整个Unicode符
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
//非法Unicode符,跳过
|
||||||
|
sb.append(unicode, pos, i + 2);//写入"\\u"
|
||||||
|
pos = i + 2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//非Unicode符,结束
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pos < len) {
|
||||||
|
sb.append(unicode, pos, len);
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static class LCSResult {
|
public static class LCSResult {
|
||||||
public int length;
|
public int length;
|
||||||
|
|
|
||||||
|
|
@ -73,8 +73,8 @@ public class NCatTest {
|
||||||
|
|
||||||
@org.junit.Test
|
@org.junit.Test
|
||||||
public void playerContent() throws Exception {
|
public void playerContent() throws Exception {
|
||||||
String froms = "超清$$$4K(高峰不卡)$$$FF线路$$$蓝光3$$$蓝光2$$$蓝光9$$$蓝光1$$$蓝光9-1$$$蓝光1-1$$$蓝光9-2";
|
String froms = "FF线路$$$蓝光3$$$蓝光9$$$蓝光9-1$$$蓝光1$$$蓝光9-2$$$蓝光1-1$$$蓝光1-2$$$蓝光7";
|
||||||
String urls = "国语$232824-32-703932.html#粤语$232824-32-910325.html$$$国语$232824-35-703905.html#粤语$232824-35-910260.html$$$国语$232824-4-648287.html#粤语$232824-4-730937.html$$$HD国语$232824-2-558076.html#HD粤语$232824-2-573419.html$$$枪版$232824-31-824909.html$$$正片$232824-36-395120.html$$$国语中字$232824-27-547772.html$$$正片$232824-36-395138.html$$$TC$232824-27-504728.html$$$抢先版$232824-36-377043.html";
|
String urls = "国语$232824-4-648287.html#粤语$232824-4-730937.html$$$HD国语$232824-2-558076.html#HD粤语$232824-2-573419.html$$$正片$232824-36-395120.html$$$正片$232824-36-395138.html$$$TC$232824-27-504728.html$$$抢先版$232824-36-377043.html$$$粤语中字$232824-27-547751.html$$$国语中字$232824-27-547772.html$$$正片$232824-33-393805.html";
|
||||||
for (int i = 0; i < urls.split("\\$\\$\\$").length; i++) {
|
for (int i = 0; i < urls.split("\\$\\$\\$").length; i++) {
|
||||||
String content = spider.playerContent(froms.split("\\$\\$\\$")[i], urls.split("\\$\\$\\$")[i].split("\\$")[1].split("#")[0], new ArrayList<>());
|
String content = spider.playerContent(froms.split("\\$\\$\\$")[i], urls.split("\\$\\$\\$")[i].split("\\$")[1].split("#")[0], new ArrayList<>());
|
||||||
JsonObject map = Json.safeObject(content);
|
JsonObject map = Json.safeObject(content);
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
a00ec8ec69d7fbf02a7e3b80d1cd7b2f
|
0980b0c660780f15ebefa9226fd43f7c
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"spider": "https://androidcatvodspider.netlify.app/jar/custom_spider.jar;md5;a00ec8ec69d7fbf02a7e3b80d1cd7b2f",
|
"spider": "https://androidcatvodspider.netlify.app/jar/custom_spider.jar;md5;0980b0c660780f15ebefa9226fd43f7c",
|
||||||
"lives": [
|
"lives": [
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"spider": "https://androidcatvodspider.netlify.app/jar/custom_spider.jar;md5;a00ec8ec69d7fbf02a7e3b80d1cd7b2f",
|
"spider": "https://androidcatvodspider.netlify.app/jar/custom_spider.jar;md5;0980b0c660780f15ebefa9226fd43f7c",
|
||||||
"lives": [
|
"lives": [
|
||||||
{
|
{
|
||||||
"name": "直播ipv6",
|
"name": "直播ipv6",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"spider": "https://androidcatvodspider.netlify.app/jar/custom_spider.jar;md5;a00ec8ec69d7fbf02a7e3b80d1cd7b2f",
|
"spider": "https://androidcatvodspider.netlify.app/jar/custom_spider.jar;md5;0980b0c660780f15ebefa9226fd43f7c",
|
||||||
"lives": [
|
"lives": [
|
||||||
{
|
{
|
||||||
"name": "直播ipv6",
|
"name": "直播ipv6",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"spider": "https://androidcatvodspider.netlify.app/jar/custom_spider.jar;md5;a00ec8ec69d7fbf02a7e3b80d1cd7b2f",
|
"spider": "https://androidcatvodspider.netlify.app/jar/custom_spider.jar;md5;0980b0c660780f15ebefa9226fd43f7c",
|
||||||
"lives": [
|
"lives": [
|
||||||
{
|
{
|
||||||
"name": "直播",
|
"name": "直播",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue