Merge branch 'main' of https://github.com/FongMi/CatVodSpider
This commit is contained in:
commit
8889ba996a
|
|
@ -3,19 +3,10 @@ package com.github.catvod.net;
|
|||
import com.github.catvod.crawler.Spider;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.SecureRandom;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.TrustManager;
|
||||
import javax.net.ssl.X509TrustManager;
|
||||
|
||||
import okhttp3.ConnectionSpec;
|
||||
import okhttp3.Dns;
|
||||
import okhttp3.Headers;
|
||||
import okhttp3.OkHttpClient;
|
||||
|
|
@ -110,35 +101,6 @@ public class OkHttp {
|
|||
}
|
||||
|
||||
public static OkHttpClient.Builder getBuilder() {
|
||||
OkHttpClient.Builder builder = new OkHttpClient.Builder().connectionSpecs(Arrays.asList(ConnectionSpec.RESTRICTED_TLS, ConnectionSpec.COMPATIBLE_TLS, ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT)).addInterceptor(new OkhttpInterceptor()).dns(dns()).connectTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS);
|
||||
ignoreSSLErrors(builder);
|
||||
return builder;
|
||||
return new OkHttpClient.Builder().addInterceptor(new OkhttpInterceptor()).dns(dns()).connectTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS).hostnameVerifier((hostname, session) -> true).sslSocketFactory(new SSLCompat(), SSLCompat.TM);
|
||||
}
|
||||
|
||||
private static void ignoreSSLErrors(OkHttpClient.Builder builder) {
|
||||
try {
|
||||
SSLContext context = SSLContext.getInstance("SSL");
|
||||
context.init(null, TM, new SecureRandom());
|
||||
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
|
||||
builder.sslSocketFactory(context.getSocketFactory(), (X509TrustManager) TM[0]);
|
||||
builder.hostnameVerifier((hostname, session) -> true);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static final TrustManager[] TM = new TrustManager[]{new X509TrustManager() {
|
||||
@Override
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public X509Certificate[] getAcceptedIssuers() {
|
||||
return new X509Certificate[]{};
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,112 @@
|
|||
package com.github.catvod.net;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLSocket;
|
||||
import javax.net.ssl.SSLSocketFactory;
|
||||
import javax.net.ssl.X509TrustManager;
|
||||
|
||||
public class SSLCompat extends SSLSocketFactory {
|
||||
|
||||
private SSLSocketFactory factory;
|
||||
private String[] cipherSuites;
|
||||
private String[] protocols;
|
||||
|
||||
public SSLCompat() {
|
||||
try {
|
||||
List<String> list = new LinkedList<>();
|
||||
SSLSocket socket = (SSLSocket) SSLSocketFactory.getDefault().createSocket();
|
||||
for (String protocol : socket.getSupportedProtocols()) if (!protocol.toUpperCase().contains("SSL")) list.add(protocol);
|
||||
protocols = list.toArray(new String[0]);
|
||||
List<String> allowedCiphers = Arrays.asList("TLS_RSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECHDE_RSA_WITH_AES_128_GCM_SHA256", "TLS_RSA_WITH_3DES_EDE_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_256_CBC_SHA", "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA");
|
||||
List<String> availableCiphers = Arrays.asList(socket.getSupportedCipherSuites());
|
||||
HashSet<String> preferredCiphers = new HashSet<>(allowedCiphers);
|
||||
preferredCiphers.retainAll(availableCiphers);
|
||||
preferredCiphers.addAll(new HashSet<>(Arrays.asList(socket.getEnabledCipherSuites())));
|
||||
cipherSuites = preferredCiphers.toArray(new String[0]);
|
||||
SSLContext context = SSLContext.getInstance("TLS");
|
||||
context.init(null, new X509TrustManager[]{TM}, null);
|
||||
HttpsURLConnection.setDefaultSSLSocketFactory(factory = context.getSocketFactory());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getDefaultCipherSuites() {
|
||||
return cipherSuites;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getSupportedCipherSuites() {
|
||||
return cipherSuites;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {
|
||||
Socket ssl = factory.createSocket(s, host, port, autoClose);
|
||||
if (ssl instanceof SSLSocket) upgradeTLS((SSLSocket) ssl);
|
||||
return ssl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(String host, int port) throws IOException {
|
||||
Socket ssl = factory.createSocket(host, port);
|
||||
if (ssl instanceof SSLSocket) upgradeTLS((SSLSocket) ssl);
|
||||
return ssl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException {
|
||||
Socket ssl = factory.createSocket(host, port, localHost, localPort);
|
||||
if (ssl instanceof SSLSocket) upgradeTLS((SSLSocket) ssl);
|
||||
return ssl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(InetAddress host, int port) throws IOException {
|
||||
Socket ssl = factory.createSocket(host, port);
|
||||
if (ssl instanceof SSLSocket) upgradeTLS((SSLSocket) ssl);
|
||||
return ssl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
|
||||
Socket ssl = factory.createSocket(address, port, localAddress, localPort);
|
||||
if (ssl instanceof SSLSocket) upgradeTLS((SSLSocket) ssl);
|
||||
return ssl;
|
||||
}
|
||||
|
||||
private void upgradeTLS(SSLSocket ssl) {
|
||||
if (protocols != null) ssl.setEnabledProtocols(protocols);
|
||||
if (cipherSuites != null) ssl.setEnabledCipherSuites(cipherSuites);
|
||||
}
|
||||
|
||||
@SuppressLint({"TrustAllX509TrustManager", "CustomX509TrustManager"})
|
||||
public static final X509TrustManager TM = new X509TrustManager() {
|
||||
|
||||
@Override
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public X509Certificate[] getAcceptedIssuers() {
|
||||
return new X509Certificate[]{};
|
||||
}
|
||||
};
|
||||
}
|
||||
Binary file not shown.
|
|
@ -1 +1 @@
|
|||
17d7e3dcde6c9d3ab25b87dcaf77a3cd
|
||||
1117603a248d03a2fba94c991612970f
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"spider": "https://fm.t4tv.hz.cz/jar/custom_spider.jar;md5;17d7e3dcde6c9d3ab25b87dcaf77a3cd",
|
||||
"spider": "https://fm.t4tv.hz.cz/jar/custom_spider.jar;md5;1117603a248d03a2fba94c991612970f",
|
||||
"wallpaper": "https://gao.chuqiuyu.tk",
|
||||
"sites": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"spider": "https://fm.t4tv.hz.cz/jar/custom_spider.jar;md5;17d7e3dcde6c9d3ab25b87dcaf77a3cd",
|
||||
"spider": "https://fm.t4tv.hz.cz/jar/custom_spider.jar;md5;1117603a248d03a2fba94c991612970f",
|
||||
"wallpaper": "http://饭太硬.top/深色壁纸/api.php",
|
||||
"sites": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,477 @@
|
|||
{
|
||||
"spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar",
|
||||
"wallpaper": "http://饭太硬.top/深色壁纸/api.php",
|
||||
"sites": [
|
||||
{
|
||||
"key": "商店",
|
||||
"name": "商店",
|
||||
"type": 3,
|
||||
"api": "csp_Market",
|
||||
"searchable": 0,
|
||||
"changeable": 0,
|
||||
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/market.json"
|
||||
},
|
||||
{
|
||||
"key": "泥巴",
|
||||
"name": "泥巴",
|
||||
"type": 3,
|
||||
"api": "csp_NiNi",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "星星",
|
||||
"name": "星星",
|
||||
"type": 3,
|
||||
"api": "csp_Star",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "玩偶",
|
||||
"name": "玩偶",
|
||||
"type": 3,
|
||||
"api": "csp_Wogg",
|
||||
"searchable": 1,
|
||||
"changeable": 0,
|
||||
"ext": {
|
||||
"token": "影視天下第一",
|
||||
"filter": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/wogg.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "賤賤",
|
||||
"name": "賤賤",
|
||||
"type": 3,
|
||||
"api": "csp_Jianpian",
|
||||
"searchable": 1,
|
||||
"changeable": 1,
|
||||
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/jianpian.json"
|
||||
},
|
||||
{
|
||||
"key": "獨播",
|
||||
"name": "獨播",
|
||||
"type": 3,
|
||||
"api": "csp_XPathMacFilter",
|
||||
"searchable": 1,
|
||||
"changeable": 1,
|
||||
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/duboku.json"
|
||||
},
|
||||
{
|
||||
"key": "haiwaikan",
|
||||
"name": "海外看",
|
||||
"type": 1,
|
||||
"api": "https://haiwaikan.com/api.php/provide/vod",
|
||||
"searchable": 1,
|
||||
"changeable": 1,
|
||||
"categories": [
|
||||
"日本动漫",
|
||||
"国产动漫",
|
||||
"欧美动漫",
|
||||
"国产剧",
|
||||
"韩剧",
|
||||
"日剧",
|
||||
"台剧",
|
||||
"泰剧",
|
||||
"港剧",
|
||||
"欧美剧",
|
||||
"动画电影",
|
||||
"韩国综艺",
|
||||
"国产综艺",
|
||||
"日本综艺",
|
||||
"欧美综艺",
|
||||
"冒险片",
|
||||
"剧情片",
|
||||
"动作片",
|
||||
"同性片",
|
||||
"喜剧片",
|
||||
"奇幻片",
|
||||
"恐怖片",
|
||||
"悬疑片",
|
||||
"惊悚片",
|
||||
"战争片",
|
||||
"歌舞片",
|
||||
"灾难片",
|
||||
"爱情片",
|
||||
"犯罪片",
|
||||
"科幻片",
|
||||
"纪录片",
|
||||
"经典片"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "豆瓣",
|
||||
"name": "豆瓣",
|
||||
"type": 3,
|
||||
"api": "csp_Douban",
|
||||
"searchable": 0,
|
||||
"changeable": 1,
|
||||
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/douban.json"
|
||||
},
|
||||
{
|
||||
"key": "新6V",
|
||||
"name": "新6V",
|
||||
"type": 3,
|
||||
"api": "csp_Xb6v",
|
||||
"searchable": 1,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "看球",
|
||||
"name": "看球",
|
||||
"type": 3,
|
||||
"api": "csp_Kanqiu",
|
||||
"searchable": 1,
|
||||
"changeable": 0,
|
||||
"style": {
|
||||
"type": "list"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "暴風",
|
||||
"name": "暴風",
|
||||
"type": 1,
|
||||
"api": "https://bfzyapi.com/api.php/provide/vod",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "索尼",
|
||||
"name": "索尼 ",
|
||||
"type": 1,
|
||||
"api": "https://suoniapi.com/api.php/provide/vod",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "快帆",
|
||||
"name": "快帆",
|
||||
"type": 1,
|
||||
"api": "https://api.kuaifan.tv/api.php/provide/vod",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "量子",
|
||||
"name": "量子",
|
||||
"type": 1,
|
||||
"api": "https://cj.lziapi.com/api.php/provide/vod",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "非凡",
|
||||
"name": "非凡",
|
||||
"type": 1,
|
||||
"api": "http://cj.ffzyapi.com/api.php/provide/vod",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "櫻花",
|
||||
"name": "櫻花",
|
||||
"type": 3,
|
||||
"api": "csp_Ying",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "巴士",
|
||||
"name": "巴士",
|
||||
"type": 3,
|
||||
"api": "csp_Dm84",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "異界",
|
||||
"name": "異界",
|
||||
"type": 3,
|
||||
"api": "csp_Ysj",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "哔哩",
|
||||
"name": "哔哩",
|
||||
"type": 3,
|
||||
"api": "csp_Bili",
|
||||
"searchable": 1,
|
||||
"changeable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.433
|
||||
},
|
||||
"ext": {
|
||||
"json": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/bili.json",
|
||||
"type": "帕梅拉#太极拳#广场舞#演唱会",
|
||||
"cookie": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "bili_open",
|
||||
"name": "哔哩貓",
|
||||
"type": 3,
|
||||
"api": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/FongMi/CatVodOpen/main/open/bili_open.js",
|
||||
"searchable": 1,
|
||||
"changeable": 0,
|
||||
"ext": {
|
||||
"categories": "沙雕动画#沙雕穿越#沙雕",
|
||||
"cookie": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "酷狗",
|
||||
"name": "酷狗",
|
||||
"type": 3,
|
||||
"api": "csp_Kugou",
|
||||
"searchable": 0,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "本地",
|
||||
"name": "本地",
|
||||
"type": 3,
|
||||
"api": "csp_Local",
|
||||
"searchable": 0,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "AList",
|
||||
"name": "AList",
|
||||
"type": 3,
|
||||
"api": "csp_AList",
|
||||
"searchable": 1,
|
||||
"changeable": 0,
|
||||
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/alist.json"
|
||||
},
|
||||
{
|
||||
"key": "WebDAV",
|
||||
"name": "WebDAV",
|
||||
"type": 3,
|
||||
"api": "csp_WebDAV",
|
||||
"searchable": 1,
|
||||
"changeable": 0,
|
||||
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/webdav.json"
|
||||
},
|
||||
{
|
||||
"key": "七夜",
|
||||
"name": "七夜",
|
||||
"type": 3,
|
||||
"api": "csp_Dovx",
|
||||
"searchable": 1,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "易搜",
|
||||
"name": "易搜",
|
||||
"type": 3,
|
||||
"api": "csp_YiSo",
|
||||
"searchable": 1,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "雲搜",
|
||||
"name": "雲搜",
|
||||
"type": 3,
|
||||
"api": "csp_UpYun",
|
||||
"searchable": 1,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "盤搜",
|
||||
"name": "盤搜",
|
||||
"type": 3,
|
||||
"api": "csp_PanSou",
|
||||
"searchable": 1,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "紙條搜",
|
||||
"name": "紙條搜",
|
||||
"type": 3,
|
||||
"api": "csp_XiaoZhiTiao",
|
||||
"searchable": 1,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "盤搜索",
|
||||
"name": "盤搜索",
|
||||
"type": 3,
|
||||
"api": "csp_PanSearch",
|
||||
"searchable": 1,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "找資源",
|
||||
"name": "找資源",
|
||||
"type": 3,
|
||||
"api": "csp_Zhaozy",
|
||||
"searchable": 1,
|
||||
"changeable": 0,
|
||||
"ext": "影視天下第一$$$test2$$$test2"
|
||||
},
|
||||
{
|
||||
"key": "push_agent",
|
||||
"name": "推送",
|
||||
"type": 3,
|
||||
"api": "csp_Push",
|
||||
"searchable": 1,
|
||||
"changeable": 0
|
||||
}
|
||||
],
|
||||
"doh": [
|
||||
{
|
||||
"name": "Google",
|
||||
"url": "https://dns.google/dns-query",
|
||||
"ips": [
|
||||
"8.8.4.4",
|
||||
"8.8.8.8"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Cloudflare",
|
||||
"url": "https://cloudflare-dns.com/dns-query",
|
||||
"ips": [
|
||||
"1.1.1.1",
|
||||
"1.0.0.1",
|
||||
"2606:4700:4700::1111",
|
||||
"2606:4700:4700::1001"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "AdGuard",
|
||||
"url": "https://dns.adguard.com/dns-query",
|
||||
"ips": [
|
||||
"94.140.14.140",
|
||||
"94.140.14.141"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "DNSWatch",
|
||||
"url": "https://resolver2.dns.watch/dns-query",
|
||||
"ips": [
|
||||
"84.200.69.80",
|
||||
"84.200.70.40"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Quad9",
|
||||
"url": "https://dns.quad9.net/dns-quer",
|
||||
"ips": [
|
||||
"9.9.9.9",
|
||||
"149.112.112.112"
|
||||
]
|
||||
}
|
||||
],
|
||||
"rules": [
|
||||
{
|
||||
"name": "proxy",
|
||||
"hosts": [
|
||||
"raw.githubusercontent.com",
|
||||
"googlevideo.com",
|
||||
"cdn.v82u1l.com",
|
||||
"cdn.iz8qkg.com",
|
||||
"cdn.kin6c1.com",
|
||||
"c.biggggg.com",
|
||||
"c.olddddd.com",
|
||||
"haiwaikan.com",
|
||||
"www.histar.tv",
|
||||
"youtube.com",
|
||||
"uhibo.com",
|
||||
".*boku.*",
|
||||
".*nivod.*",
|
||||
".*ulivetv.*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "海外看",
|
||||
"hosts": [
|
||||
"haiwaikan"
|
||||
],
|
||||
"regex": [
|
||||
"10.0099",
|
||||
"10.3333",
|
||||
"16.0599",
|
||||
"8.1748",
|
||||
"10.85"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "索尼",
|
||||
"hosts": [
|
||||
"suonizy"
|
||||
],
|
||||
"regex": [
|
||||
"15.1666",
|
||||
"15.2666"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "暴風",
|
||||
"hosts": [
|
||||
"bfzy"
|
||||
],
|
||||
"regex": [
|
||||
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:3,[\\s\\S]*?#EXT-X-DISCONTINUITY"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "星星",
|
||||
"hosts": [
|
||||
"aws.ulivetv.net"
|
||||
],
|
||||
"regex": [
|
||||
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:8,[\\s\\S]*?#EXT-X-DISCONTINUITY"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "量子",
|
||||
"hosts": [
|
||||
"vip.lz",
|
||||
"hd.lz",
|
||||
"v.cdnlz"
|
||||
],
|
||||
"regex": [
|
||||
"18.5333"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "非凡",
|
||||
"hosts": [
|
||||
"vip.ffzy",
|
||||
"hd.ffzy"
|
||||
],
|
||||
"regex": [
|
||||
"25.0666"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "火山嗅探",
|
||||
"hosts": [
|
||||
"huoshan.com"
|
||||
],
|
||||
"regex": [
|
||||
"item_id="
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "抖音嗅探",
|
||||
"hosts": [
|
||||
"douyin.com"
|
||||
],
|
||||
"regex": [
|
||||
"is_play_url="
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "農民嗅探",
|
||||
"hosts": [
|
||||
"toutiaovod.com"
|
||||
],
|
||||
"regex": [
|
||||
"video/tos/cn"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue