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 com.github.catvod.crawler.Spider;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.security.SecureRandom;
|
|
||||||
import java.security.cert.X509Certificate;
|
|
||||||
import java.util.Arrays;
|
|
||||||
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 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.Dns;
|
||||||
import okhttp3.Headers;
|
import okhttp3.Headers;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
|
|
@ -110,35 +101,6 @@ public class OkHttp {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OkHttpClient.Builder getBuilder() {
|
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);
|
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);
|
||||||
ignoreSSLErrors(builder);
|
|
||||||
return builder;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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",
|
"wallpaper": "https://gao.chuqiuyu.tk",
|
||||||
"sites": [
|
"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",
|
"wallpaper": "http://饭太硬.top/深色壁纸/api.php",
|
||||||
"sites": [
|
"sites": [
|
||||||
{
|
{
|
||||||
|
|
@ -474,4 +474,4 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -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