Initial commit of sub2proxy with visual dashboard
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
node_modules/
|
||||
out/
|
||||
package-lock.json
|
||||
cache.db
|
||||
.DS_Store
|
||||
@@ -0,0 +1,744 @@
|
||||
{
|
||||
"log": {
|
||||
"level": "info",
|
||||
"timestamp": true
|
||||
},
|
||||
"experimental": {
|
||||
"cache_file": {
|
||||
"enabled": true,
|
||||
"path": "cache.db",
|
||||
"store_fakeip": true
|
||||
},
|
||||
"clash_api": {
|
||||
"external_controller": "127.0.0.1:9090",
|
||||
"default_mode": "rule"
|
||||
}
|
||||
},
|
||||
"dns": {
|
||||
"servers": [
|
||||
{
|
||||
"type": "udp",
|
||||
"tag": "dns-local",
|
||||
"server": "223.5.5.5",
|
||||
"server_port": 53
|
||||
},
|
||||
{
|
||||
"type": "udp",
|
||||
"tag": "dns-local-backup",
|
||||
"server": "119.29.29.29",
|
||||
"server_port": 53
|
||||
},
|
||||
{
|
||||
"type": "https",
|
||||
"tag": "dns-remote",
|
||||
"server": "1.1.1.1",
|
||||
"path": "/dns-query",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "cloudflare-dns.com"
|
||||
},
|
||||
"detour": "Proxy"
|
||||
},
|
||||
{
|
||||
"type": "fakeip",
|
||||
"tag": "dns-fakeip",
|
||||
"inet4_range": "198.18.0.0/15",
|
||||
"inet6_range": "fc00::/18"
|
||||
}
|
||||
],
|
||||
"rules": [
|
||||
{
|
||||
"clash_mode": "Direct",
|
||||
"action": "route",
|
||||
"server": "dns-local"
|
||||
},
|
||||
{
|
||||
"clash_mode": "Global",
|
||||
"action": "route",
|
||||
"server": "dns-remote"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-cn"
|
||||
],
|
||||
"action": "route",
|
||||
"server": "dns-local"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-openai",
|
||||
"geosite-google-gemini",
|
||||
"geosite-anthropic",
|
||||
"geosite-telegram",
|
||||
"geosite-youtube",
|
||||
"geosite-google",
|
||||
"geosite-twitter",
|
||||
"geosite-github",
|
||||
"geosite-netflix",
|
||||
"geosite-disney",
|
||||
"geosite-tiktok",
|
||||
"geosite-spotify",
|
||||
"geosite-geolocation-!cn"
|
||||
],
|
||||
"action": "route",
|
||||
"server": "dns-fakeip"
|
||||
},
|
||||
{
|
||||
"query_type": [
|
||||
"A",
|
||||
"AAAA"
|
||||
],
|
||||
"action": "route",
|
||||
"server": "dns-fakeip"
|
||||
}
|
||||
],
|
||||
"final": "dns-remote"
|
||||
},
|
||||
"inbounds": [
|
||||
{
|
||||
"type": "tproxy",
|
||||
"tag": "tproxy-in",
|
||||
"listen": "::",
|
||||
"listen_port": 7893
|
||||
},
|
||||
{
|
||||
"type": "mixed",
|
||||
"tag": "mixed-in",
|
||||
"listen": "0.0.0.0",
|
||||
"listen_port": 7890
|
||||
}
|
||||
],
|
||||
"outbounds": [
|
||||
{
|
||||
"type": "hysteria2",
|
||||
"tag": "美国1-hy2",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 4439,
|
||||
"up_mbps": 200,
|
||||
"down_mbps": 500,
|
||||
"password": "Se7RAuFZ8Lzg",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "hy2.jocayn.qzz.io",
|
||||
"insecure": false,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "美国1-vless",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 19150,
|
||||
"uuid": "b9136671-ef40-4b5c-a007-dcf996ec2466",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"network": "tcp",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "aws.amazon.com",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h2",
|
||||
"http/1.1"
|
||||
],
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "-dTj4YHBzV5tpgVpD4mgXzlAESmxjOoyyn6waky1Dkw",
|
||||
"short_id": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "美国1-Tuic",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 4438,
|
||||
"uuid": "ca4d81b1-f8d9-4533-8b61-c15e1da91697",
|
||||
"password": "ca4d81b1-f8d9-4533-8b61-c15e1da91697",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"heartbeat": "10s",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"disable_sni": true,
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "美国2-vless",
|
||||
"server": "107.174.208.133",
|
||||
"server_port": 34532,
|
||||
"uuid": "1b8889b6-bb2f-4735-a401-4e53bdc81c51",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"network": "tcp",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "www.cloudflare.com",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h2",
|
||||
"http/1.1"
|
||||
],
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "R31tFIfDoM8yjrCfQAQqQ8QhFt6KuGjhhtQ3oSnPbAI",
|
||||
"short_id": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "美国2-Tuic",
|
||||
"server": "107.174.208.133",
|
||||
"server_port": 4438,
|
||||
"uuid": "161eaa3d-cf5b-4c07-ab36-f4f58536d081",
|
||||
"password": "161eaa3d-cf5b-4c07-ab36-f4f58536d081",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"heartbeat": "10s",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"disable_sni": true,
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "HK-Tuic",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 63155,
|
||||
"uuid": "ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef",
|
||||
"password": "ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"heartbeat": "10s",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"disable_sni": true,
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "HK-vless[最高2.5mb/s]",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 63159,
|
||||
"uuid": "27485652-f88d-48e8-b4ee-3759ac63ce80",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"network": "tcp",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "www.amazon.com",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h2",
|
||||
"http/1.1"
|
||||
],
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "Jq_MTHf-vZLqpvPaViXUSZfQJ3oLM7DYeqBrtH8qlgs",
|
||||
"short_id": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "hysteria2",
|
||||
"tag": "HK-Hy2",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 4438,
|
||||
"up_mbps": 15,
|
||||
"down_mbps": 15,
|
||||
"password": "09e70d0d-fb51-458a-a650-5922eaefcc24",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "hy2.jocay.icu",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Proxy",
|
||||
"outbounds": [
|
||||
"美国1-Tuic",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2",
|
||||
"direct"
|
||||
],
|
||||
"default": "美国1-Tuic"
|
||||
},
|
||||
{
|
||||
"type": "urltest",
|
||||
"tag": "Auto",
|
||||
"outbounds": [
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless"
|
||||
],
|
||||
"url": "https://www.gstatic.com/generate_204",
|
||||
"interval": "10m",
|
||||
"tolerance": 50
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "GPT",
|
||||
"outbounds": [
|
||||
"美国1-Tuic",
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2"
|
||||
],
|
||||
"default": "美国1-Tuic"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Streaming",
|
||||
"outbounds": [
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2",
|
||||
"direct"
|
||||
],
|
||||
"default": "Proxy"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Steam",
|
||||
"outbounds": [
|
||||
"direct",
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2"
|
||||
],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Emby",
|
||||
"outbounds": [
|
||||
"direct",
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2"
|
||||
],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Domestic",
|
||||
"outbounds": [
|
||||
"direct",
|
||||
"Proxy"
|
||||
],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Final",
|
||||
"outbounds": [
|
||||
"Proxy",
|
||||
"direct",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2"
|
||||
],
|
||||
"default": "Proxy"
|
||||
},
|
||||
{
|
||||
"type": "direct",
|
||||
"tag": "direct"
|
||||
},
|
||||
{
|
||||
"type": "block",
|
||||
"tag": "block"
|
||||
}
|
||||
],
|
||||
"route": {
|
||||
"rules": [
|
||||
{
|
||||
"action": "sniff"
|
||||
},
|
||||
{
|
||||
"protocol": "dns",
|
||||
"action": "hijack-dns"
|
||||
},
|
||||
{
|
||||
"ip_is_private": true,
|
||||
"action": "route",
|
||||
"outbound": "direct"
|
||||
},
|
||||
{
|
||||
"clash_mode": "Direct",
|
||||
"action": "route",
|
||||
"outbound": "direct"
|
||||
},
|
||||
{
|
||||
"clash_mode": "Global",
|
||||
"action": "route",
|
||||
"outbound": "Proxy"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-openai",
|
||||
"geosite-google-gemini",
|
||||
"geosite-anthropic"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "GPT"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"chatgpt.com",
|
||||
"openai.com",
|
||||
"oaistatic.com",
|
||||
"oaiusercontent.com",
|
||||
"anthropic.com",
|
||||
"claude.ai",
|
||||
"claudeusercontent.com",
|
||||
"gemini.google.com",
|
||||
"perplexity.ai",
|
||||
"poe.com"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "GPT"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-telegram",
|
||||
"geosite-youtube",
|
||||
"geosite-google",
|
||||
"geosite-twitter",
|
||||
"geosite-github",
|
||||
"geosite-geolocation-!cn"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Proxy"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-netflix",
|
||||
"geosite-disney",
|
||||
"geosite-tiktok",
|
||||
"geosite-spotify"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Streaming"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-steam"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Steam"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"mobaiemby.site",
|
||||
"recmata.net",
|
||||
"emby.media",
|
||||
"jellyfin.org"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Emby"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-apple",
|
||||
"geosite-microsoft",
|
||||
"geosite-onedrive"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Domestic"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-bilibili",
|
||||
"geosite-cn",
|
||||
"geoip-cn"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Domestic"
|
||||
}
|
||||
],
|
||||
"rule_set": [
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-openai",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-openai.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-google-gemini",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-google-gemini.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-anthropic",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-anthropic.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-telegram",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-telegram.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-youtube",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-youtube.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-google",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-google.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-twitter",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-twitter.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-github",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-github.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-netflix",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-netflix.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-disney",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-disney.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-tiktok",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-tiktok.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-spotify",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-spotify.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-apple",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-apple.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-microsoft",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-microsoft.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-onedrive",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-onedrive.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-bilibili",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-bilibili.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-steam",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-steam.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-geolocation-!cn",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-!cn.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-cn",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geoip-cn",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
}
|
||||
],
|
||||
"final": "Final",
|
||||
"auto_detect_interface": true,
|
||||
"find_process": true,
|
||||
"default_domain_resolver": "dns-local"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,750 @@
|
||||
{
|
||||
"log": {
|
||||
"level": "info",
|
||||
"timestamp": true
|
||||
},
|
||||
"experimental": {
|
||||
"cache_file": {
|
||||
"enabled": true,
|
||||
"path": "cache.db",
|
||||
"store_fakeip": true
|
||||
},
|
||||
"clash_api": {
|
||||
"external_controller": "127.0.0.1:9090",
|
||||
"default_mode": "rule"
|
||||
}
|
||||
},
|
||||
"dns": {
|
||||
"servers": [
|
||||
{
|
||||
"type": "udp",
|
||||
"tag": "dns-local",
|
||||
"server": "223.5.5.5",
|
||||
"server_port": 53
|
||||
},
|
||||
{
|
||||
"type": "udp",
|
||||
"tag": "dns-local-backup",
|
||||
"server": "119.29.29.29",
|
||||
"server_port": 53
|
||||
},
|
||||
{
|
||||
"type": "https",
|
||||
"tag": "dns-remote",
|
||||
"server": "1.1.1.1",
|
||||
"path": "/dns-query",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "cloudflare-dns.com"
|
||||
},
|
||||
"detour": "Proxy"
|
||||
},
|
||||
{
|
||||
"type": "fakeip",
|
||||
"tag": "dns-fakeip",
|
||||
"inet4_range": "198.18.0.0/15",
|
||||
"inet6_range": "fc00::/18"
|
||||
}
|
||||
],
|
||||
"rules": [
|
||||
{
|
||||
"clash_mode": "Direct",
|
||||
"action": "route",
|
||||
"server": "dns-local"
|
||||
},
|
||||
{
|
||||
"clash_mode": "Global",
|
||||
"action": "route",
|
||||
"server": "dns-remote"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-cn"
|
||||
],
|
||||
"action": "route",
|
||||
"server": "dns-local"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-openai",
|
||||
"geosite-google-gemini",
|
||||
"geosite-anthropic",
|
||||
"geosite-telegram",
|
||||
"geosite-youtube",
|
||||
"geosite-google",
|
||||
"geosite-twitter",
|
||||
"geosite-github",
|
||||
"geosite-netflix",
|
||||
"geosite-disney",
|
||||
"geosite-tiktok",
|
||||
"geosite-spotify",
|
||||
"geosite-geolocation-!cn"
|
||||
],
|
||||
"action": "route",
|
||||
"server": "dns-fakeip"
|
||||
},
|
||||
{
|
||||
"query_type": [
|
||||
"A",
|
||||
"AAAA"
|
||||
],
|
||||
"action": "route",
|
||||
"server": "dns-fakeip"
|
||||
}
|
||||
],
|
||||
"final": "dns-remote"
|
||||
},
|
||||
"inbounds": [
|
||||
{
|
||||
"type": "tun",
|
||||
"tag": "tun-in",
|
||||
"address": [
|
||||
"172.19.0.1/30",
|
||||
"fd00::1/126"
|
||||
],
|
||||
"mtu": 9000,
|
||||
"auto_route": true,
|
||||
"strict_route": true,
|
||||
"stack": "mixed"
|
||||
},
|
||||
{
|
||||
"type": "mixed",
|
||||
"tag": "mixed-in",
|
||||
"listen": "127.0.0.1",
|
||||
"listen_port": 7890
|
||||
}
|
||||
],
|
||||
"outbounds": [
|
||||
{
|
||||
"type": "hysteria2",
|
||||
"tag": "美国1-hy2",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 4439,
|
||||
"up_mbps": 200,
|
||||
"down_mbps": 500,
|
||||
"password": "Se7RAuFZ8Lzg",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "hy2.jocayn.qzz.io",
|
||||
"insecure": false,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "美国1-vless",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 19150,
|
||||
"uuid": "b9136671-ef40-4b5c-a007-dcf996ec2466",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"network": "tcp",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "aws.amazon.com",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h2",
|
||||
"http/1.1"
|
||||
],
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "-dTj4YHBzV5tpgVpD4mgXzlAESmxjOoyyn6waky1Dkw",
|
||||
"short_id": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "美国1-Tuic",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 4438,
|
||||
"uuid": "ca4d81b1-f8d9-4533-8b61-c15e1da91697",
|
||||
"password": "ca4d81b1-f8d9-4533-8b61-c15e1da91697",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"heartbeat": "10s",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"disable_sni": true,
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "美国2-vless",
|
||||
"server": "107.174.208.133",
|
||||
"server_port": 34532,
|
||||
"uuid": "1b8889b6-bb2f-4735-a401-4e53bdc81c51",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"network": "tcp",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "www.cloudflare.com",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h2",
|
||||
"http/1.1"
|
||||
],
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "R31tFIfDoM8yjrCfQAQqQ8QhFt6KuGjhhtQ3oSnPbAI",
|
||||
"short_id": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "美国2-Tuic",
|
||||
"server": "107.174.208.133",
|
||||
"server_port": 4438,
|
||||
"uuid": "161eaa3d-cf5b-4c07-ab36-f4f58536d081",
|
||||
"password": "161eaa3d-cf5b-4c07-ab36-f4f58536d081",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"heartbeat": "10s",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"disable_sni": true,
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "HK-Tuic",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 63155,
|
||||
"uuid": "ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef",
|
||||
"password": "ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"heartbeat": "10s",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"disable_sni": true,
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "HK-vless[最高2.5mb/s]",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 63159,
|
||||
"uuid": "27485652-f88d-48e8-b4ee-3759ac63ce80",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"network": "tcp",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "www.amazon.com",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h2",
|
||||
"http/1.1"
|
||||
],
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "Jq_MTHf-vZLqpvPaViXUSZfQJ3oLM7DYeqBrtH8qlgs",
|
||||
"short_id": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "hysteria2",
|
||||
"tag": "HK-Hy2",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 4438,
|
||||
"up_mbps": 15,
|
||||
"down_mbps": 15,
|
||||
"password": "09e70d0d-fb51-458a-a650-5922eaefcc24",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "hy2.jocay.icu",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Proxy",
|
||||
"outbounds": [
|
||||
"美国1-Tuic",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2",
|
||||
"direct"
|
||||
],
|
||||
"default": "美国1-Tuic"
|
||||
},
|
||||
{
|
||||
"type": "urltest",
|
||||
"tag": "Auto",
|
||||
"outbounds": [
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless"
|
||||
],
|
||||
"url": "https://www.gstatic.com/generate_204",
|
||||
"interval": "10m",
|
||||
"tolerance": 50
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "GPT",
|
||||
"outbounds": [
|
||||
"美国1-Tuic",
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2"
|
||||
],
|
||||
"default": "美国1-Tuic"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Streaming",
|
||||
"outbounds": [
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2",
|
||||
"direct"
|
||||
],
|
||||
"default": "Proxy"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Steam",
|
||||
"outbounds": [
|
||||
"direct",
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2"
|
||||
],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Emby",
|
||||
"outbounds": [
|
||||
"direct",
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2"
|
||||
],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Domestic",
|
||||
"outbounds": [
|
||||
"direct",
|
||||
"Proxy"
|
||||
],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Final",
|
||||
"outbounds": [
|
||||
"Proxy",
|
||||
"direct",
|
||||
"Auto",
|
||||
"美国1-Tuic",
|
||||
"美国1-vless",
|
||||
"美国1-hy2",
|
||||
"美国2-Tuic",
|
||||
"美国2-vless",
|
||||
"HK-Tuic",
|
||||
"HK-vless[最高2.5mb/s]",
|
||||
"HK-Hy2"
|
||||
],
|
||||
"default": "Proxy"
|
||||
},
|
||||
{
|
||||
"type": "direct",
|
||||
"tag": "direct"
|
||||
},
|
||||
{
|
||||
"type": "block",
|
||||
"tag": "block"
|
||||
}
|
||||
],
|
||||
"route": {
|
||||
"rules": [
|
||||
{
|
||||
"action": "sniff"
|
||||
},
|
||||
{
|
||||
"protocol": "dns",
|
||||
"action": "hijack-dns"
|
||||
},
|
||||
{
|
||||
"ip_is_private": true,
|
||||
"action": "route",
|
||||
"outbound": "direct"
|
||||
},
|
||||
{
|
||||
"clash_mode": "Direct",
|
||||
"action": "route",
|
||||
"outbound": "direct"
|
||||
},
|
||||
{
|
||||
"clash_mode": "Global",
|
||||
"action": "route",
|
||||
"outbound": "Proxy"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-openai",
|
||||
"geosite-google-gemini",
|
||||
"geosite-anthropic"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "GPT"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"chatgpt.com",
|
||||
"openai.com",
|
||||
"oaistatic.com",
|
||||
"oaiusercontent.com",
|
||||
"anthropic.com",
|
||||
"claude.ai",
|
||||
"claudeusercontent.com",
|
||||
"gemini.google.com",
|
||||
"perplexity.ai",
|
||||
"poe.com"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "GPT"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-telegram",
|
||||
"geosite-youtube",
|
||||
"geosite-google",
|
||||
"geosite-twitter",
|
||||
"geosite-github",
|
||||
"geosite-geolocation-!cn"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Proxy"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-netflix",
|
||||
"geosite-disney",
|
||||
"geosite-tiktok",
|
||||
"geosite-spotify"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Streaming"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-steam"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Steam"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"mobaiemby.site",
|
||||
"recmata.net",
|
||||
"emby.media",
|
||||
"jellyfin.org"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Emby"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-apple",
|
||||
"geosite-microsoft",
|
||||
"geosite-onedrive"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Domestic"
|
||||
},
|
||||
{
|
||||
"rule_set": [
|
||||
"geosite-bilibili",
|
||||
"geosite-cn",
|
||||
"geoip-cn"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Domestic"
|
||||
}
|
||||
],
|
||||
"rule_set": [
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-openai",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-openai.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-google-gemini",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-google-gemini.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-anthropic",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-anthropic.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-telegram",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-telegram.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-youtube",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-youtube.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-google",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-google.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-twitter",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-twitter.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-github",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-github.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-netflix",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-netflix.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-disney",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-disney.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-tiktok",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-tiktok.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-spotify",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-spotify.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-apple",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-apple.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-microsoft",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-microsoft.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-onedrive",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-onedrive.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-bilibili",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-bilibili.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-steam",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-steam.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-geolocation-!cn",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-!cn.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geosite-cn",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "remote",
|
||||
"tag": "geoip-cn",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs",
|
||||
"update_interval": "24h",
|
||||
"http_client": {
|
||||
"detour": "Proxy"
|
||||
}
|
||||
}
|
||||
],
|
||||
"final": "Final",
|
||||
"auto_detect_interface": true,
|
||||
"find_process": true,
|
||||
"default_domain_resolver": "dns-local"
|
||||
}
|
||||
}
|
||||
+580
@@ -0,0 +1,580 @@
|
||||
{
|
||||
"log": {
|
||||
"level": "info",
|
||||
"timestamp": true
|
||||
},
|
||||
"dns": {
|
||||
"servers": [
|
||||
{
|
||||
"type": "udp",
|
||||
"tag": "local-dns",
|
||||
"server": "223.5.5.5"
|
||||
},
|
||||
{
|
||||
"type": "udp",
|
||||
"tag": "local-dns-backup",
|
||||
"server": "119.29.29.29"
|
||||
},
|
||||
{
|
||||
"type": "https",
|
||||
"tag": "remote-dns",
|
||||
"server": "cloudflare-dns.com",
|
||||
"path": "/dns-query",
|
||||
"domain_resolver": "local-dns"
|
||||
}
|
||||
],
|
||||
"rules": [
|
||||
{
|
||||
"domain": [
|
||||
"localhost"
|
||||
],
|
||||
"domain_suffix": [
|
||||
"local",
|
||||
"lan"
|
||||
],
|
||||
"action": "route",
|
||||
"server": "local-dns"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
".cn",
|
||||
"12306.cn",
|
||||
"360.cn",
|
||||
"alicdn.com",
|
||||
"alipay.com",
|
||||
"aliyun.com",
|
||||
"amap.com",
|
||||
"baidu.com",
|
||||
"bdstatic.com",
|
||||
"bilibili.com",
|
||||
"biliapi.net",
|
||||
"bilivideo.com",
|
||||
"ctrip.com",
|
||||
"douban.com",
|
||||
"douyin.com",
|
||||
"edu.cn",
|
||||
"gov.cn",
|
||||
"iqiyi.com",
|
||||
"jd.com",
|
||||
"meituan.com",
|
||||
"mi.com",
|
||||
"netease.com",
|
||||
"qq.com",
|
||||
"sina.com.cn",
|
||||
"snssdk.com",
|
||||
"sohu.com",
|
||||
"taobao.com",
|
||||
"tencent.com",
|
||||
"tmall.com",
|
||||
"weibo.com",
|
||||
"weixin.qq.com",
|
||||
"xiaomi.com",
|
||||
"youku.com",
|
||||
"zhihu.com"
|
||||
],
|
||||
"action": "route",
|
||||
"server": "local-dns"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"ai.com",
|
||||
"ai.google.dev",
|
||||
"aistudio.google.com",
|
||||
"anthropic.com",
|
||||
"chatgpt.com",
|
||||
"claude.ai",
|
||||
"claudeusercontent.com",
|
||||
"gemini.google.com",
|
||||
"generativelanguage.googleapis.com",
|
||||
"makersuite.google.com",
|
||||
"notebooklm.google.com",
|
||||
"oaistatic.com",
|
||||
"oaiusercontent.com",
|
||||
"openai.com",
|
||||
"openaiapi-site.azureedge.net",
|
||||
"openaicom-api-bdcpf8c6d2e9atf6.z01.azurefd.net",
|
||||
"perplexity.ai",
|
||||
"poe.com"
|
||||
],
|
||||
"action": "route",
|
||||
"server": "remote-dns"
|
||||
}
|
||||
],
|
||||
"final": "remote-dns",
|
||||
"strategy": "prefer_ipv4"
|
||||
},
|
||||
"inbounds": [
|
||||
{
|
||||
"type": "tun",
|
||||
"tag": "tun-in",
|
||||
"address": [
|
||||
"172.19.0.1/30",
|
||||
"fdfe:dcba:9876::1/126"
|
||||
],
|
||||
"mtu": 9000,
|
||||
"auto_route": true,
|
||||
"strict_route": true,
|
||||
"stack": "mixed"
|
||||
},
|
||||
{
|
||||
"type": "mixed",
|
||||
"tag": "mixed-in",
|
||||
"listen": "127.0.0.1",
|
||||
"listen_port": 7890
|
||||
}
|
||||
],
|
||||
"outbounds": [
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Proxy",
|
||||
"outbounds": [
|
||||
"Auto",
|
||||
"US1-VLESS",
|
||||
"US1-TUIC",
|
||||
"US1-HY2",
|
||||
"US2-VLESS",
|
||||
"US2-TUIC",
|
||||
"HK-VLESS",
|
||||
"HK-HY2",
|
||||
"HK-TUIC",
|
||||
"direct"
|
||||
],
|
||||
"default": "Auto"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "GPT",
|
||||
"outbounds": [
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"US1-VLESS",
|
||||
"US1-TUIC",
|
||||
"US1-HY2",
|
||||
"US2-VLESS",
|
||||
"US2-TUIC",
|
||||
"HK-VLESS",
|
||||
"HK-HY2",
|
||||
"HK-TUIC",
|
||||
"direct"
|
||||
],
|
||||
"default": "Proxy"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Steam",
|
||||
"outbounds": [
|
||||
"direct",
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"US1-VLESS",
|
||||
"US1-TUIC",
|
||||
"US2-VLESS",
|
||||
"US2-TUIC",
|
||||
"HK-VLESS",
|
||||
"HK-HY2",
|
||||
"HK-TUIC"
|
||||
],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Emby",
|
||||
"outbounds": [
|
||||
"direct",
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"US1-VLESS",
|
||||
"US1-TUIC",
|
||||
"US1-HY2",
|
||||
"US2-VLESS",
|
||||
"US2-TUIC",
|
||||
"HK-VLESS",
|
||||
"HK-HY2",
|
||||
"HK-TUIC"
|
||||
],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "China",
|
||||
"outbounds": [
|
||||
"direct",
|
||||
"Proxy",
|
||||
"Auto",
|
||||
"US1-VLESS",
|
||||
"US2-VLESS",
|
||||
"HK-VLESS"
|
||||
],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Final",
|
||||
"outbounds": [
|
||||
"Proxy",
|
||||
"direct",
|
||||
"Auto",
|
||||
"US1-VLESS",
|
||||
"US1-TUIC",
|
||||
"US1-HY2",
|
||||
"US2-VLESS",
|
||||
"US2-TUIC",
|
||||
"HK-VLESS",
|
||||
"HK-HY2",
|
||||
"HK-TUIC"
|
||||
],
|
||||
"default": "Proxy"
|
||||
},
|
||||
{
|
||||
"type": "urltest",
|
||||
"tag": "Auto",
|
||||
"outbounds": [
|
||||
"US1-VLESS",
|
||||
"US1-TUIC",
|
||||
"US1-HY2",
|
||||
"US2-VLESS",
|
||||
"US2-TUIC",
|
||||
"HK-VLESS",
|
||||
"HK-HY2",
|
||||
"HK-TUIC"
|
||||
],
|
||||
"url": "https://www.gstatic.com/generate_204",
|
||||
"interval": "10m",
|
||||
"tolerance": 50
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "US1-VLESS",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 19150,
|
||||
"uuid": "b9136671-ef40-4b5c-a007-dcf996ec2466",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"network": "tcp",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "aws.amazon.com",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h2",
|
||||
"http/1.1"
|
||||
],
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "-dTj4YHBzV5tpgVpD4mgXzlAESmxjOoyyn6waky1Dkw",
|
||||
"short_id": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "US1-TUIC",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 4438,
|
||||
"uuid": "ca4d81b1-f8d9-4533-8b61-c15e1da91697",
|
||||
"password": "ca4d81b1-f8d9-4533-8b61-c15e1da91697",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"disable_sni": true,
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "hysteria2",
|
||||
"tag": "US1-HY2",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 4439,
|
||||
"up_mbps": 200,
|
||||
"down_mbps": 500,
|
||||
"password": "Se7RAuFZ8Lzg",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "hy2.jocayn.qzz.io",
|
||||
"insecure": false,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "US2-VLESS",
|
||||
"server": "107.174.208.133",
|
||||
"server_port": 34532,
|
||||
"uuid": "1b8889b6-bb2f-4735-a401-4e53bdc81c51",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"network": "tcp",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "www.cloudflare.com",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h2",
|
||||
"http/1.1"
|
||||
],
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "R31tFIfDoM8yjrCfQAQqQ8QhFt6KuGjhhtQ3oSnPbAI",
|
||||
"short_id": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "US2-TUIC",
|
||||
"server": "107.174.208.133",
|
||||
"server_port": 4438,
|
||||
"uuid": "161eaa3d-cf5b-4c07-ab36-f4f58536d081",
|
||||
"password": "161eaa3d-cf5b-4c07-ab36-f4f58536d081",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"disable_sni": true,
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "HK-VLESS",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 63159,
|
||||
"uuid": "27485652-f88d-48e8-b4ee-3759ac63ce80",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"network": "tcp",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "www.amazon.com",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h2",
|
||||
"http/1.1"
|
||||
],
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "Jq_MTHf-vZLqpvPaViXUSZfQJ3oLM7DYeqBrtH8qlgs",
|
||||
"short_id": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "hysteria2",
|
||||
"tag": "HK-HY2",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 4438,
|
||||
"up_mbps": 15,
|
||||
"down_mbps": 15,
|
||||
"password": "09e70d0d-fb51-458a-a650-5922eaefcc24",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "hy2.jocay.icu",
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "HK-TUIC",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 63155,
|
||||
"uuid": "ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef",
|
||||
"password": "ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"disable_sni": true,
|
||||
"insecure": true,
|
||||
"alpn": [
|
||||
"h3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "direct",
|
||||
"tag": "direct"
|
||||
},
|
||||
{
|
||||
"type": "block",
|
||||
"tag": "block"
|
||||
}
|
||||
],
|
||||
"route": {
|
||||
"rules": [
|
||||
{
|
||||
"action": "sniff"
|
||||
},
|
||||
{
|
||||
"protocol": "dns",
|
||||
"action": "hijack-dns"
|
||||
},
|
||||
{
|
||||
"ip_is_private": true,
|
||||
"action": "route",
|
||||
"outbound": "direct"
|
||||
},
|
||||
{
|
||||
"domain": [
|
||||
"localhost"
|
||||
],
|
||||
"domain_suffix": [
|
||||
"local",
|
||||
"lan"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "direct"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"adnxs.com",
|
||||
"adsrvr.org",
|
||||
"doubleclick.net",
|
||||
"googleadservices.com",
|
||||
"googlesyndication.com",
|
||||
"scorecardresearch.com"
|
||||
],
|
||||
"action": "reject"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"ai.com",
|
||||
"ai.google.dev",
|
||||
"aistudio.google.com",
|
||||
"anthropic.com",
|
||||
"chatgpt.com",
|
||||
"claude.ai",
|
||||
"claudeusercontent.com",
|
||||
"gemini.google.com",
|
||||
"generativelanguage.googleapis.com",
|
||||
"makersuite.google.com",
|
||||
"notebooklm.google.com",
|
||||
"oaistatic.com",
|
||||
"oaiusercontent.com",
|
||||
"openai.com",
|
||||
"openaiapi-site.azureedge.net",
|
||||
"openaicom-api-bdcpf8c6d2e9atf6.z01.azurefd.net",
|
||||
"perplexity.ai",
|
||||
"poe.com"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "GPT"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"emby.media",
|
||||
"emby.wtf",
|
||||
"jellyfin.org",
|
||||
"makima.online",
|
||||
"mobaiemby.site",
|
||||
"recmata.net"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Emby"
|
||||
},
|
||||
{
|
||||
"process_name": [
|
||||
"steam.exe",
|
||||
"steamwebhelper.exe"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Steam"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"steam-chat.com",
|
||||
"steamcdn-a.akamaihd.net",
|
||||
"steamcommunity.com",
|
||||
"steamcontent.com",
|
||||
"steamgames.com",
|
||||
"steampowered.com",
|
||||
"steamserver.net",
|
||||
"underlords.com",
|
||||
"valvesoftware.com"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "Steam"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
".cn",
|
||||
"12306.cn",
|
||||
"360.cn",
|
||||
"alicdn.com",
|
||||
"alipay.com",
|
||||
"aliyun.com",
|
||||
"amap.com",
|
||||
"baidu.com",
|
||||
"bdstatic.com",
|
||||
"bilibili.com",
|
||||
"biliapi.net",
|
||||
"bilivideo.com",
|
||||
"ctrip.com",
|
||||
"douban.com",
|
||||
"douyin.com",
|
||||
"edu.cn",
|
||||
"gov.cn",
|
||||
"iqiyi.com",
|
||||
"jd.com",
|
||||
"meituan.com",
|
||||
"mi.com",
|
||||
"netease.com",
|
||||
"qq.com",
|
||||
"sina.com.cn",
|
||||
"snssdk.com",
|
||||
"sohu.com",
|
||||
"taobao.com",
|
||||
"tencent.com",
|
||||
"tmall.com",
|
||||
"weibo.com",
|
||||
"weixin.qq.com",
|
||||
"xiaomi.com",
|
||||
"youku.com",
|
||||
"zhihu.com"
|
||||
],
|
||||
"action": "route",
|
||||
"outbound": "China"
|
||||
}
|
||||
],
|
||||
"final": "Final",
|
||||
"auto_detect_interface": true,
|
||||
"find_process": true,
|
||||
"default_domain_resolver": "local-dns"
|
||||
},
|
||||
"experimental": {
|
||||
"cache_file": {
|
||||
"enabled": true,
|
||||
"store_dns": true
|
||||
},
|
||||
"clash_api": {
|
||||
"external_controller": "127.0.0.1:9090",
|
||||
"default_mode": "Rule"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
mixed-port: 7890
|
||||
allow-lan: true
|
||||
bind-address: '*'
|
||||
mode: rule
|
||||
log-level: info
|
||||
ipv6: true
|
||||
unified-delay: true
|
||||
tcp-concurrent: true
|
||||
external-controller: '127.0.0.1:9090'
|
||||
profile:
|
||||
store-selected: true
|
||||
store-fake-ip: true
|
||||
sniffer:
|
||||
enable: true
|
||||
force-dns-mapping: true
|
||||
parse-pure-ip: true
|
||||
override-destination: true
|
||||
sniff:
|
||||
TLS:
|
||||
ports: [443, 8443]
|
||||
HTTP:
|
||||
ports: [80, 8080-8880]
|
||||
override-destination: true
|
||||
QUIC:
|
||||
ports: [443, 8443]
|
||||
skip-domain:
|
||||
- '+.push.apple.com'
|
||||
dns:
|
||||
enable: true
|
||||
listen: 0.0.0.0:1053
|
||||
cache-algorithm: arc
|
||||
prefer-h3: false
|
||||
ipv6: true
|
||||
default-nameserver: [223.5.5.5, 119.29.29.29]
|
||||
enhanced-mode: fake-ip
|
||||
fake-ip-range: 198.18.0.1/16
|
||||
fake-ip-filter:
|
||||
- '*.lan'
|
||||
- '*.local'
|
||||
- 'localhost.ptlogin2.qq.com'
|
||||
- '+.msftconnecttest.com'
|
||||
- '+.msftncsi.com'
|
||||
- 'time.*.com'
|
||||
- 'time.*.gov'
|
||||
- 'time.*.edu.cn'
|
||||
- 'time.*.apple.com'
|
||||
use-hosts: true
|
||||
use-system-hosts: true
|
||||
nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
|
||||
proxy-server-nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
|
||||
direct-nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
|
||||
fallback: ['https://doh-pure.onedns.net/dns-query', 'https://ada.openbld.net/dns-query', 'https://223.5.5.5/dns-query', 'https://223.6.6.6/dns-query']
|
||||
fallback-filter: { geoip: true, geoip-code: CN, ipcidr: [240.0.0.0/4, 0.0.0.0/32] }
|
||||
respect-rules: true
|
||||
proxies:
|
||||
- { name: '美国1-hy2', type: hysteria2, server: 64.69.34.207, port: 4439, password: Se7RAuFZ8Lzg, up: '200 Mbps', down: '500 Mbps', sni: hy2.jocayn.qzz.io, skip-cert-verify: false, alpn: [h3] }
|
||||
- { name: '美国1-vless', type: vless, server: 64.69.34.207, port: 19150, udp: true, uuid: b9136671-ef40-4b5c-a007-dcf996ec2466, tls: true, servername: aws.amazon.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: -dTj4YHBzV5tpgVpD4mgXzlAESmxjOoyyn6waky1Dkw, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: '美国1-Tuic', type: tuic, server: 64.69.34.207, port: 4438, version: 5, uuid: ca4d81b1-f8d9-4533-8b61-c15e1da91697, password: ca4d81b1-f8d9-4533-8b61-c15e1da91697, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: '美国2-vless', type: vless, server: 107.174.208.133, port: 34532, udp: true, uuid: 1b8889b6-bb2f-4735-a401-4e53bdc81c51, tls: true, servername: www.cloudflare.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: R31tFIfDoM8yjrCfQAQqQ8QhFt6KuGjhhtQ3oSnPbAI, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: '美国2-Tuic', type: tuic, server: 107.174.208.133, port: 4438, version: 5, uuid: 161eaa3d-cf5b-4c07-ab36-f4f58536d081, password: 161eaa3d-cf5b-4c07-ab36-f4f58536d081, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: 'HK-Tuic', type: tuic, server: 154.94.234.168, port: 63155, version: 5, uuid: ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef, password: ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: 'HK-vless[最高2.5mb/s]', type: vless, server: 154.94.234.168, port: 63159, udp: true, uuid: 27485652-f88d-48e8-b4ee-3759ac63ce80, tls: true, servername: www.amazon.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: Jq_MTHf-vZLqpvPaViXUSZfQJ3oLM7DYeqBrtH8qlgs, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: 'HK-Hy2', type: hysteria2, server: 154.94.234.168, port: 4438, password: 09e70d0d-fb51-458a-a650-5922eaefcc24, up: '15 Mbps', down: '15 Mbps', sni: hy2.jocay.icu, skip-cert-verify: true, alpn: [h3] }
|
||||
proxy-groups:
|
||||
- { name: CatMata, type: select, proxies: [DIRECT, '♻️ Auto', '美国1-hy2', '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '♻️ Auto', type: url-test, proxies: ['美国1-hy2', '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic'], url: 'http://connectivitycheck.gstatic.com/generate_204', interval: 600, timeout: 1500, tolerance: 50, lazy: true }
|
||||
- { name: '🍎 Apple', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📲 Telegram', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 YouTube', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 BiliBili', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 OpenAI', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 Gemini', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 Claude', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎵 TikTok', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '💿 Spotify', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 Netflix', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 Disney', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🌐 Google', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '☁️ OneDrive', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🖥 Microsoft', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '👩💼 LinkedIn', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🖥 Learning', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📟 Twitter', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 GlobalMedia', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 Emby', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎮 Steam', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎮 OtherGames', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '💀 Hijacking', type: select, proxies: [DIRECT, REJECT, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🇨🇳 ChinaWebsites', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: Final, type: select, proxies: [CatMata, DIRECT, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
rule-providers:
|
||||
Apple: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Apple/Apple_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Telegram: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Telegram/Telegram.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
YouTube: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/YouTube/YouTube.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
BiliBili: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/BiliBili/BiliBili.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
TikTok: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/TikTok/TikTok.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Spotify: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Spotify/Spotify.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Netflix: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Netflix/Netflix.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Disney: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Disney/Disney.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Google: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Google/Google.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
OpenAI: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OpenAI/OpenAI.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Microsoft: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Microsoft/Microsoft.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
LinkedIn: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/LinkedIn/LinkedIn.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Twitter: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Twitter/Twitter.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GameDownload: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Game/GameDownload/GameDownload.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GameDownloadCN: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Game/GameDownloadCN/GameDownloadCN.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Steam: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Steam/Steam.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
SteamCN: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/SteamCN/SteamCN.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
OneDrive: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OneDrive/OneDrive.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Emby: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Emby/Emby.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
HoYoverse: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/HoYoverse/HoYoverse.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GlobalMedia: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/GlobalMedia/GlobalMedia_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
ChinaMax: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Gemini: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Gemini/Gemini.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Claude: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Claude/Claude.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Hijacking: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Hijacking/Hijacking.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Lan: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Lan/Lan.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
rules:
|
||||
- 'RULE-SET,Lan,DIRECT'
|
||||
- 'RULE-SET,Hijacking,💀 Hijacking'
|
||||
- 'RULE-SET,Telegram,📲 Telegram'
|
||||
- 'RULE-SET,YouTube,🎬 YouTube'
|
||||
- 'RULE-SET,OpenAI,🤖 OpenAI'
|
||||
- 'RULE-SET,Gemini,🤖 Gemini'
|
||||
- 'RULE-SET,Claude,🤖 Claude'
|
||||
- 'RULE-SET,OneDrive,☁️ OneDrive'
|
||||
- 'DOMAIN-SUFFIX,microsoftpersonalcontent.com,☁️ OneDrive'
|
||||
- 'RULE-SET,Microsoft,🖥 Microsoft'
|
||||
- 'RULE-SET,Google,🌐 Google'
|
||||
- 'RULE-SET,Apple,🍎 Apple'
|
||||
- 'RULE-SET,LinkedIn,👩💼 LinkedIn'
|
||||
- 'DOMAIN-SUFFIX,acm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,acs.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,aip.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ams.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,annualreviews.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,aps.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ascelibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,asm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,asme.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,astm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,blackwell-synergy.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,bmj.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cabdirect.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cambridge.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cas.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cell.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,clarivate.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cnki.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cqvip.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,csiro.au,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,deepdyve.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ebscohost.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,els-cdn.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,elsevier.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,emerald.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,endnote.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,engineeringvillage.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,icevirtuallibrary.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ieee.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,imf.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,iop.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jamanetwork.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jbc.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jhu.edu,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jstor.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,karger.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,libguides.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,madsrevolution.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,mdpi.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,mpg.de,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,myilibrary.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,nature.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ncbi.nlm.nih.gov,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oecd-ilibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,osapublishing.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oup.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ovid.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordartonline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordbibliographies.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordmusiconline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,pkulaw.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,pnas.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,proquest.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,readcube.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,researchgate.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,rsc.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sagepub.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sci-hub.tw,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sciencedirect.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sciencemag.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,scitation.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,scopus.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,siam.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,spiedigitallibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,springer.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,springerlink.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,tandfonline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,un.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,uni-bielefeld.de,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,wanfangdata.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,webofknowledge.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,westlaw.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,westlawchina.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,wiley.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,worldbank.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,worldscientific.com,🖥 Learning'
|
||||
- 'RULE-SET,Twitter,📟 Twitter'
|
||||
- 'RULE-SET,BiliBili,🎬 BiliBili'
|
||||
- 'RULE-SET,TikTok,🎵 TikTok'
|
||||
- 'RULE-SET,Spotify,💿 Spotify'
|
||||
- 'RULE-SET,Netflix,📺 Netflix'
|
||||
- 'RULE-SET,Disney,📺 Disney'
|
||||
- 'RULE-SET,GameDownload,🎮 OtherGames'
|
||||
- 'RULE-SET,GameDownloadCN,🎮 OtherGames'
|
||||
- 'RULE-SET,HoYoverse,🎮 OtherGames'
|
||||
- 'RULE-SET,Steam,🎮 Steam'
|
||||
- 'RULE-SET,SteamCN,🎮 Steam'
|
||||
- 'DOMAIN-SUFFIX,makima.online,DIRECT'
|
||||
- 'DOMAIN-SUFFIX,mobaiemby.site,🎬 Emby'
|
||||
- 'DOMAIN-SUFFIX,recmata.net,🎬 Emby'
|
||||
- 'RULE-SET,Emby,🎬 Emby'
|
||||
- 'RULE-SET,GlobalMedia,📺 GlobalMedia'
|
||||
- 'RULE-SET,ChinaMax,🇨🇳 ChinaWebsites'
|
||||
- 'GEOIP,CN,🇨🇳 ChinaWebsites'
|
||||
- 'MATCH,Final'
|
||||
@@ -0,0 +1,249 @@
|
||||
mixed-port: 7890
|
||||
redir-port: 7892
|
||||
tproxy-port: 7893
|
||||
allow-lan: true
|
||||
bind-address: '*'
|
||||
mode: rule
|
||||
log-level: info
|
||||
ipv6: false
|
||||
find-process-mode: off
|
||||
keep-alive-interval: 15
|
||||
keep-alive-idle: 15
|
||||
unified-delay: true
|
||||
tcp-concurrent: true
|
||||
external-controller: '0.0.0.0:9999'
|
||||
secret: ''
|
||||
profile:
|
||||
store-selected: true
|
||||
store-fake-ip: true
|
||||
geodata-mode: true
|
||||
geodata-loader: memconservative
|
||||
geo-auto-update: true
|
||||
geo-update-interval: 72
|
||||
sniffer:
|
||||
enable: true
|
||||
force-dns-mapping: true
|
||||
parse-pure-ip: true
|
||||
override-destination: true
|
||||
sniff:
|
||||
TLS:
|
||||
ports: [443, 8443]
|
||||
HTTP:
|
||||
ports: [80, 8080-8880]
|
||||
override-destination: true
|
||||
QUIC:
|
||||
ports: [443, 8443]
|
||||
skip-domain:
|
||||
- '+.push.apple.com'
|
||||
dns:
|
||||
enable: true
|
||||
listen: 0.0.0.0:1053
|
||||
cache-algorithm: arc
|
||||
prefer-h3: false
|
||||
ipv6: false
|
||||
default-nameserver: [223.5.5.5, 119.29.29.29]
|
||||
enhanced-mode: fake-ip
|
||||
fake-ip-range: 198.18.0.1/16
|
||||
fake-ip-filter:
|
||||
- '*.lan'
|
||||
- '*.local'
|
||||
- 'localhost.ptlogin2.qq.com'
|
||||
- '+.msftconnecttest.com'
|
||||
- '+.msftncsi.com'
|
||||
- '+.router.asus.com'
|
||||
- '+.miwifi.com'
|
||||
- '+.tplogin.cn'
|
||||
- '+.tendawifi.com'
|
||||
- '+.home.arpa'
|
||||
- '+.localdomain'
|
||||
- '+.example'
|
||||
- '+.invalid'
|
||||
- '+.test'
|
||||
- '+.stun.*.*'
|
||||
- '+.stun.*.*.*'
|
||||
- '+.stun.*.*.*.*'
|
||||
- '+.stun.*.*.*.*.*'
|
||||
- 'time.*.com'
|
||||
- 'time.*.gov'
|
||||
- 'time.*.edu.cn'
|
||||
- 'time.*.apple.com'
|
||||
use-hosts: true
|
||||
use-system-hosts: true
|
||||
nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
|
||||
proxy-server-nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
|
||||
direct-nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
|
||||
fallback: ['https://doh-pure.onedns.net/dns-query', 'https://ada.openbld.net/dns-query', 'https://223.5.5.5/dns-query', 'https://223.6.6.6/dns-query']
|
||||
fallback-filter: { geoip: true, geoip-code: CN, ipcidr: [240.0.0.0/4, 0.0.0.0/32] }
|
||||
respect-rules: true
|
||||
proxies:
|
||||
- { name: '美国1-hy2', type: hysteria2, server: 64.69.34.207, port: 4439, password: Se7RAuFZ8Lzg, up: '200 Mbps', down: '500 Mbps', sni: hy2.jocayn.qzz.io, skip-cert-verify: false, alpn: [h3] }
|
||||
- { name: '美国1-vless', type: vless, server: 64.69.34.207, port: 19150, udp: true, uuid: b9136671-ef40-4b5c-a007-dcf996ec2466, tls: true, servername: aws.amazon.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: -dTj4YHBzV5tpgVpD4mgXzlAESmxjOoyyn6waky1Dkw, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: '美国1-Tuic', type: tuic, server: 64.69.34.207, port: 4438, version: 5, uuid: ca4d81b1-f8d9-4533-8b61-c15e1da91697, password: ca4d81b1-f8d9-4533-8b61-c15e1da91697, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: '美国2-vless', type: vless, server: 107.174.208.133, port: 34532, udp: true, uuid: 1b8889b6-bb2f-4735-a401-4e53bdc81c51, tls: true, servername: www.cloudflare.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: R31tFIfDoM8yjrCfQAQqQ8QhFt6KuGjhhtQ3oSnPbAI, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: '美国2-Tuic', type: tuic, server: 107.174.208.133, port: 4438, version: 5, uuid: 161eaa3d-cf5b-4c07-ab36-f4f58536d081, password: 161eaa3d-cf5b-4c07-ab36-f4f58536d081, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: 'HK-Tuic', type: tuic, server: 154.94.234.168, port: 63155, version: 5, uuid: ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef, password: ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: 'HK-vless[最高2.5mb/s]', type: vless, server: 154.94.234.168, port: 63159, udp: true, uuid: 27485652-f88d-48e8-b4ee-3759ac63ce80, tls: true, servername: www.amazon.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: Jq_MTHf-vZLqpvPaViXUSZfQJ3oLM7DYeqBrtH8qlgs, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: 'HK-Hy2', type: hysteria2, server: 154.94.234.168, port: 4438, password: 09e70d0d-fb51-458a-a650-5922eaefcc24, up: '15 Mbps', down: '15 Mbps', sni: hy2.jocay.icu, skip-cert-verify: true, alpn: [h3] }
|
||||
proxy-groups:
|
||||
- { name: CatMata, type: select, proxies: [DIRECT, '♻️ Auto', '美国1-hy2', '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '♻️ Auto', type: url-test, proxies: ['美国1-hy2', '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic'], url: 'http://connectivitycheck.gstatic.com/generate_204', interval: 600, timeout: 1500, tolerance: 50, lazy: true }
|
||||
- { name: '🍎 Apple', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📲 Telegram', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 YouTube', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 BiliBili', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 OpenAI', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 Gemini', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 Claude', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎵 TikTok', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '💿 Spotify', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 Netflix', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 Disney', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🌐 Google', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '☁️ OneDrive', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🖥 Microsoft', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '👩💼 LinkedIn', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🖥 Learning', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📟 Twitter', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 GlobalMedia', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 Emby', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎮 Steam', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎮 OtherGames', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '💀 Hijacking', type: select, proxies: [DIRECT, REJECT, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🇨🇳 ChinaWebsites', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: Final, type: select, proxies: [CatMata, DIRECT, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
rule-providers:
|
||||
Apple: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Apple/Apple_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Telegram: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Telegram/Telegram.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
YouTube: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/YouTube/YouTube.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
BiliBili: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/BiliBili/BiliBili.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
TikTok: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/TikTok/TikTok.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Spotify: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Spotify/Spotify.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Netflix: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Netflix/Netflix.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Disney: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Disney/Disney.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Google: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Google/Google.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
OpenAI: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OpenAI/OpenAI.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Microsoft: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Microsoft/Microsoft.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
LinkedIn: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/LinkedIn/LinkedIn.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Twitter: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Twitter/Twitter.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GameDownload: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Game/GameDownload/GameDownload.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GameDownloadCN: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Game/GameDownloadCN/GameDownloadCN.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Steam: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Steam/Steam.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
SteamCN: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/SteamCN/SteamCN.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
OneDrive: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OneDrive/OneDrive.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Emby: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Emby/Emby.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
HoYoverse: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/HoYoverse/HoYoverse.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GlobalMedia: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/GlobalMedia/GlobalMedia_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
ChinaMax: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Gemini: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Gemini/Gemini.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Claude: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Claude/Claude.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Hijacking: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Hijacking/Hijacking.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Lan: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Lan/Lan.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
rules:
|
||||
- 'RULE-SET,Lan,DIRECT'
|
||||
- 'RULE-SET,Hijacking,💀 Hijacking'
|
||||
- 'RULE-SET,Telegram,📲 Telegram'
|
||||
- 'RULE-SET,YouTube,🎬 YouTube'
|
||||
- 'RULE-SET,OpenAI,🤖 OpenAI'
|
||||
- 'RULE-SET,Gemini,🤖 Gemini'
|
||||
- 'RULE-SET,Claude,🤖 Claude'
|
||||
- 'RULE-SET,OneDrive,☁️ OneDrive'
|
||||
- 'DOMAIN-SUFFIX,microsoftpersonalcontent.com,☁️ OneDrive'
|
||||
- 'RULE-SET,Microsoft,🖥 Microsoft'
|
||||
- 'RULE-SET,Google,🌐 Google'
|
||||
- 'RULE-SET,Apple,🍎 Apple'
|
||||
- 'RULE-SET,LinkedIn,👩💼 LinkedIn'
|
||||
- 'DOMAIN-SUFFIX,acm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,acs.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,aip.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ams.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,annualreviews.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,aps.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ascelibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,asm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,asme.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,astm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,blackwell-synergy.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,bmj.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cabdirect.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cambridge.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cas.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cell.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,clarivate.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cnki.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cqvip.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,csiro.au,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,deepdyve.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ebscohost.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,els-cdn.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,elsevier.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,emerald.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,endnote.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,engineeringvillage.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,icevirtuallibrary.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ieee.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,imf.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,iop.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jamanetwork.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jbc.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jhu.edu,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jstor.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,karger.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,libguides.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,madsrevolution.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,mdpi.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,mpg.de,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,myilibrary.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,nature.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ncbi.nlm.nih.gov,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oecd-ilibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,osapublishing.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oup.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ovid.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordartonline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordbibliographies.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordmusiconline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,pkulaw.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,pnas.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,proquest.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,readcube.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,researchgate.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,rsc.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sagepub.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sci-hub.tw,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sciencedirect.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sciencemag.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,scitation.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,scopus.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,siam.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,spiedigitallibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,springer.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,springerlink.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,tandfonline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,un.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,uni-bielefeld.de,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,wanfangdata.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,webofknowledge.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,westlaw.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,westlawchina.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,wiley.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,worldbank.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,worldscientific.com,🖥 Learning'
|
||||
- 'RULE-SET,Twitter,📟 Twitter'
|
||||
- 'RULE-SET,BiliBili,🎬 BiliBili'
|
||||
- 'RULE-SET,TikTok,🎵 TikTok'
|
||||
- 'RULE-SET,Spotify,💿 Spotify'
|
||||
- 'RULE-SET,Netflix,📺 Netflix'
|
||||
- 'RULE-SET,Disney,📺 Disney'
|
||||
- 'RULE-SET,GameDownload,🎮 OtherGames'
|
||||
- 'RULE-SET,GameDownloadCN,🎮 OtherGames'
|
||||
- 'RULE-SET,HoYoverse,🎮 OtherGames'
|
||||
- 'RULE-SET,Steam,🎮 Steam'
|
||||
- 'RULE-SET,SteamCN,🎮 Steam'
|
||||
- 'DOMAIN-SUFFIX,makima.online,DIRECT'
|
||||
- 'DOMAIN-SUFFIX,mobaiemby.site,🎬 Emby'
|
||||
- 'DOMAIN-SUFFIX,recmata.net,🎬 Emby'
|
||||
- 'RULE-SET,Emby,🎬 Emby'
|
||||
- 'RULE-SET,GlobalMedia,📺 GlobalMedia'
|
||||
- 'RULE-SET,ChinaMax,🇨🇳 ChinaWebsites'
|
||||
- 'GEOIP,CN,🇨🇳 ChinaWebsites'
|
||||
- 'MATCH,Final'
|
||||
@@ -0,0 +1,248 @@
|
||||
mixed-port: 7890
|
||||
allow-lan: true
|
||||
bind-address: '*'
|
||||
mode: rule
|
||||
log-level: info
|
||||
ipv6: true
|
||||
unified-delay: true
|
||||
tcp-concurrent: true
|
||||
external-controller: '127.0.0.1:9090'
|
||||
profile:
|
||||
store-selected: true
|
||||
store-fake-ip: true
|
||||
sniffer:
|
||||
enable: true
|
||||
force-dns-mapping: true
|
||||
parse-pure-ip: true
|
||||
override-destination: true
|
||||
sniff:
|
||||
TLS:
|
||||
ports: [443, 8443]
|
||||
HTTP:
|
||||
ports: [80, 8080-8880]
|
||||
override-destination: true
|
||||
QUIC:
|
||||
ports: [443, 8443]
|
||||
skip-domain:
|
||||
- '+.push.apple.com'
|
||||
tun:
|
||||
enable: true
|
||||
stack: mixed
|
||||
device: Mihomo
|
||||
auto-route: true
|
||||
auto-detect-interface: true
|
||||
dns-hijack:
|
||||
- any:53
|
||||
- tcp://any:53
|
||||
strict-route: true
|
||||
udp-timeout: 300
|
||||
endpoint-independent-nat: false
|
||||
route-exclude-address:
|
||||
- 10.0.0.0/8
|
||||
- 100.64.0.0/10
|
||||
- 127.0.0.0/8
|
||||
- 169.254.0.0/16
|
||||
- 172.16.0.0/12
|
||||
- 192.168.0.0/16
|
||||
- 224.0.0.0/4
|
||||
- 'fc00::/7'
|
||||
- 'fe80::/10'
|
||||
dns:
|
||||
enable: true
|
||||
listen: 0.0.0.0:1053
|
||||
cache-algorithm: arc
|
||||
prefer-h3: false
|
||||
ipv6: true
|
||||
default-nameserver: [223.5.5.5, 119.29.29.29]
|
||||
enhanced-mode: fake-ip
|
||||
fake-ip-range: 198.18.0.1/16
|
||||
fake-ip-filter:
|
||||
- '*.lan'
|
||||
- '*.local'
|
||||
- 'localhost.ptlogin2.qq.com'
|
||||
- '+.msftconnecttest.com'
|
||||
- '+.msftncsi.com'
|
||||
- 'time.*.com'
|
||||
- 'time.*.gov'
|
||||
- 'time.*.edu.cn'
|
||||
- 'time.*.apple.com'
|
||||
use-hosts: true
|
||||
use-system-hosts: true
|
||||
nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
|
||||
proxy-server-nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
|
||||
direct-nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
|
||||
fallback: ['https://doh-pure.onedns.net/dns-query', 'https://ada.openbld.net/dns-query', 'https://223.5.5.5/dns-query', 'https://223.6.6.6/dns-query']
|
||||
fallback-filter: { geoip: true, geoip-code: CN, ipcidr: [240.0.0.0/4, 0.0.0.0/32] }
|
||||
respect-rules: true
|
||||
proxies:
|
||||
- { name: '美国1-hy2', type: hysteria2, server: 64.69.34.207, port: 4439, password: Se7RAuFZ8Lzg, up: '200 Mbps', down: '500 Mbps', sni: hy2.jocayn.qzz.io, skip-cert-verify: false, alpn: [h3] }
|
||||
- { name: '美国1-vless', type: vless, server: 64.69.34.207, port: 19150, udp: true, uuid: b9136671-ef40-4b5c-a007-dcf996ec2466, tls: true, servername: aws.amazon.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: -dTj4YHBzV5tpgVpD4mgXzlAESmxjOoyyn6waky1Dkw, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: '美国1-Tuic', type: tuic, server: 64.69.34.207, port: 4438, version: 5, uuid: ca4d81b1-f8d9-4533-8b61-c15e1da91697, password: ca4d81b1-f8d9-4533-8b61-c15e1da91697, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: '美国2-vless', type: vless, server: 107.174.208.133, port: 34532, udp: true, uuid: 1b8889b6-bb2f-4735-a401-4e53bdc81c51, tls: true, servername: www.cloudflare.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: R31tFIfDoM8yjrCfQAQqQ8QhFt6KuGjhhtQ3oSnPbAI, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: '美国2-Tuic', type: tuic, server: 107.174.208.133, port: 4438, version: 5, uuid: 161eaa3d-cf5b-4c07-ab36-f4f58536d081, password: 161eaa3d-cf5b-4c07-ab36-f4f58536d081, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: 'HK-Tuic', type: tuic, server: 154.94.234.168, port: 63155, version: 5, uuid: ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef, password: ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: 'HK-vless[最高2.5mb/s]', type: vless, server: 154.94.234.168, port: 63159, udp: true, uuid: 27485652-f88d-48e8-b4ee-3759ac63ce80, tls: true, servername: www.amazon.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: Jq_MTHf-vZLqpvPaViXUSZfQJ3oLM7DYeqBrtH8qlgs, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: 'HK-Hy2', type: hysteria2, server: 154.94.234.168, port: 4438, password: 09e70d0d-fb51-458a-a650-5922eaefcc24, up: '15 Mbps', down: '15 Mbps', sni: hy2.jocay.icu, skip-cert-verify: true, alpn: [h3] }
|
||||
proxy-groups:
|
||||
- { name: CatMata, type: select, proxies: [DIRECT, '♻️ Auto', '美国1-hy2', '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '♻️ Auto', type: url-test, proxies: ['美国1-hy2', '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic'], url: 'http://connectivitycheck.gstatic.com/generate_204', interval: 600, timeout: 1500, tolerance: 50, lazy: true }
|
||||
- { name: '🍎 Apple', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📲 Telegram', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 YouTube', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 BiliBili', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 OpenAI', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 Gemini', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 Claude', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎵 TikTok', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '💿 Spotify', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 Netflix', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 Disney', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🌐 Google', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '☁️ OneDrive', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🖥 Microsoft', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '👩💼 LinkedIn', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🖥 Learning', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📟 Twitter', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 GlobalMedia', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 Emby', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎮 Steam', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎮 OtherGames', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '💀 Hijacking', type: select, proxies: [DIRECT, REJECT, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🇨🇳 ChinaWebsites', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: Final, type: select, proxies: [CatMata, DIRECT, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
rule-providers:
|
||||
Apple: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Apple/Apple_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Telegram: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Telegram/Telegram.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
YouTube: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/YouTube/YouTube.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
BiliBili: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/BiliBili/BiliBili.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
TikTok: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/TikTok/TikTok.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Spotify: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Spotify/Spotify.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Netflix: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Netflix/Netflix.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Disney: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Disney/Disney.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Google: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Google/Google.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
OpenAI: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OpenAI/OpenAI.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Microsoft: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Microsoft/Microsoft.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
LinkedIn: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/LinkedIn/LinkedIn.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Twitter: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Twitter/Twitter.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GameDownload: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Game/GameDownload/GameDownload.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GameDownloadCN: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Game/GameDownloadCN/GameDownloadCN.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Steam: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Steam/Steam.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
SteamCN: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/SteamCN/SteamCN.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
OneDrive: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OneDrive/OneDrive.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Emby: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Emby/Emby.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
HoYoverse: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/HoYoverse/HoYoverse.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GlobalMedia: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/GlobalMedia/GlobalMedia_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
ChinaMax: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Gemini: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Gemini/Gemini.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Claude: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Claude/Claude.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Hijacking: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Hijacking/Hijacking.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Lan: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Lan/Lan.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
rules:
|
||||
- 'RULE-SET,Lan,DIRECT'
|
||||
- 'RULE-SET,Hijacking,💀 Hijacking'
|
||||
- 'RULE-SET,Telegram,📲 Telegram'
|
||||
- 'RULE-SET,YouTube,🎬 YouTube'
|
||||
- 'RULE-SET,OpenAI,🤖 OpenAI'
|
||||
- 'RULE-SET,Gemini,🤖 Gemini'
|
||||
- 'RULE-SET,Claude,🤖 Claude'
|
||||
- 'RULE-SET,OneDrive,☁️ OneDrive'
|
||||
- 'DOMAIN-SUFFIX,microsoftpersonalcontent.com,☁️ OneDrive'
|
||||
- 'RULE-SET,Microsoft,🖥 Microsoft'
|
||||
- 'RULE-SET,Google,🌐 Google'
|
||||
- 'RULE-SET,Apple,🍎 Apple'
|
||||
- 'RULE-SET,LinkedIn,👩💼 LinkedIn'
|
||||
- 'DOMAIN-SUFFIX,acm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,acs.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,aip.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ams.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,annualreviews.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,aps.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ascelibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,asm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,asme.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,astm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,blackwell-synergy.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,bmj.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cabdirect.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cambridge.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cas.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cell.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,clarivate.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cnki.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cqvip.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,csiro.au,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,deepdyve.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ebscohost.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,els-cdn.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,elsevier.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,emerald.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,endnote.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,engineeringvillage.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,icevirtuallibrary.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ieee.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,imf.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,iop.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jamanetwork.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jbc.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jhu.edu,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jstor.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,karger.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,libguides.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,madsrevolution.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,mdpi.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,mpg.de,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,myilibrary.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,nature.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ncbi.nlm.nih.gov,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oecd-ilibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,osapublishing.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oup.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ovid.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordartonline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordbibliographies.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordmusiconline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,pkulaw.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,pnas.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,proquest.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,readcube.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,researchgate.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,rsc.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sagepub.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sci-hub.tw,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sciencedirect.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sciencemag.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,scitation.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,scopus.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,siam.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,spiedigitallibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,springer.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,springerlink.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,tandfonline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,un.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,uni-bielefeld.de,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,wanfangdata.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,webofknowledge.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,westlaw.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,westlawchina.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,wiley.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,worldbank.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,worldscientific.com,🖥 Learning'
|
||||
- 'RULE-SET,Twitter,📟 Twitter'
|
||||
- 'RULE-SET,BiliBili,🎬 BiliBili'
|
||||
- 'RULE-SET,TikTok,🎵 TikTok'
|
||||
- 'RULE-SET,Spotify,💿 Spotify'
|
||||
- 'RULE-SET,Netflix,📺 Netflix'
|
||||
- 'RULE-SET,Disney,📺 Disney'
|
||||
- 'RULE-SET,GameDownload,🎮 OtherGames'
|
||||
- 'RULE-SET,GameDownloadCN,🎮 OtherGames'
|
||||
- 'RULE-SET,HoYoverse,🎮 OtherGames'
|
||||
- 'RULE-SET,Steam,🎮 Steam'
|
||||
- 'RULE-SET,SteamCN,🎮 Steam'
|
||||
- 'DOMAIN-SUFFIX,makima.online,DIRECT'
|
||||
- 'DOMAIN-SUFFIX,mobaiemby.site,🎬 Emby'
|
||||
- 'DOMAIN-SUFFIX,recmata.net,🎬 Emby'
|
||||
- 'RULE-SET,Emby,🎬 Emby'
|
||||
- 'RULE-SET,GlobalMedia,📺 GlobalMedia'
|
||||
- 'RULE-SET,ChinaMax,🇨🇳 ChinaWebsites'
|
||||
- 'GEOIP,CN,🇨🇳 ChinaWebsites'
|
||||
- 'MATCH,Final'
|
||||
+189
@@ -0,0 +1,189 @@
|
||||
mixed-port: 7890
|
||||
allow-lan: true
|
||||
bind-address: 127.0.0.1
|
||||
mode: rule
|
||||
log-level: info
|
||||
external-controller: '127.0.0.1:9090'
|
||||
dns:
|
||||
enable: true
|
||||
ipv6: true
|
||||
default-nameserver: [223.5.5.5, 119.29.29.29]
|
||||
enhanced-mode: fake-ip
|
||||
fake-ip-range: 198.18.0.1/16
|
||||
use-hosts: true
|
||||
nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
|
||||
fallback: ['https://doh-pure.onedns.net/dns-query', 'https://ada.openbld.net/dns-query', 'https://223.5.5.5/dns-query', 'https://223.6.6.6/dns-query']
|
||||
fallback-filter: { geoip: true, ipcidr: [240.0.0.0/4, 0.0.0.0/32] }
|
||||
respect-rules: false
|
||||
proxies:
|
||||
- { name: '美国1-hy2', type: hysteria2, server: 64.69.34.207, port: 4439, password: Se7RAuFZ8Lzg, up: '200 Mbps', down: '500 Mbps', sni: hy2.jocayn.qzz.io, skip-cert-verify: false, alpn: [h3] }
|
||||
- { name: '美国1-vless', type: vless, server: 64.69.34.207, port: 19150, udp: true, uuid: b9136671-ef40-4b5c-a007-dcf996ec2466, tls: true, servername: aws.amazon.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: -dTj4YHBzV5tpgVpD4mgXzlAESmxjOoyyn6waky1Dkw, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: '美国1-Tuic', type: tuic, server: 64.69.34.207, port: 4438, version: 5, uuid: ca4d81b1-f8d9-4533-8b61-c15e1da91697, password: ca4d81b1-f8d9-4533-8b61-c15e1da91697, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: '美国2-vless', type: vless, server: 107.174.208.133, port: 34532, udp: true, uuid: 1b8889b6-bb2f-4735-a401-4e53bdc81c51, tls: true, servername: www.cloudflare.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: R31tFIfDoM8yjrCfQAQqQ8QhFt6KuGjhhtQ3oSnPbAI, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: '美国2-Tuic', type: tuic, server: 107.174.208.133, port: 4438, version: 5, uuid: 161eaa3d-cf5b-4c07-ab36-f4f58536d081, password: 161eaa3d-cf5b-4c07-ab36-f4f58536d081, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: 'HK-Tuic', type: tuic, server: 154.94.234.168, port: 63155, version: 5, uuid: ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef, password: ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef, alpn: [h3], disable-sni: true, reduce-rtt: true, request-timeout: 8000, udp-relay-mode: native, congestion-controller: bbr, skip-cert-verify: true }
|
||||
- { name: 'HK-vless[最高2.5mb/s]', type: vless, server: 154.94.234.168, port: 63159, udp: true, uuid: 27485652-f88d-48e8-b4ee-3759ac63ce80, tls: true, servername: www.amazon.com, flow: xtls-rprx-vision, network: tcp, reality-opts: { public-key: Jq_MTHf-vZLqpvPaViXUSZfQJ3oLM7DYeqBrtH8qlgs, short-id: '' }, client-fingerprint: chrome, alpn: [h2, 'http/1.1'], packet-encoding: xudp, encryption: '', skip-cert-verify: true, smux: { enabled: false } }
|
||||
- { name: 'HK-Hy2', type: hysteria2, server: 154.94.234.168, port: 4438, password: 09e70d0d-fb51-458a-a650-5922eaefcc24, up: '15 Mbps', down: '15 Mbps', sni: hy2.jocay.icu, skip-cert-verify: true, alpn: [h3] }
|
||||
proxy-groups:
|
||||
- { name: CatMata, type: select, proxies: [DIRECT, '♻️ Auto', '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '♻️ Auto', type: url-test, proxies: ['美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic'], url: 'http://connectivitycheck.gstatic.com/generate_204', interval: 600, timeout: 1500, tolerance: 50 }
|
||||
- { name: '🍎 Apple', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📲 Telegram', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 YouTube', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 BiliBili', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 OpenAI', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 Gemini', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🤖 Claude', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎵 TikTok', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '💿 Spotify', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 Netflix', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 Disney', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🌐 Google', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '☁️ OneDrive', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🖥 Microsoft', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '👩💼 LinkedIn', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🖥 Learning', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📟 Twitter', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '📺 GlobalMedia', type: select, proxies: [CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎬 Emby', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎮 Steam', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🎮 OtherGames', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '💀 Hijacking', type: select, proxies: [DIRECT, REJECT, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: '🇨🇳 ChinaWebsites', type: select, proxies: [DIRECT, CatMata, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
- { name: Final, type: select, proxies: [CatMata, DIRECT, '美国1-vless', '美国1-Tuic', '美国2-vless','美国2-Tuic', 'HK-vless[最高2.5mb/s]', 'HK-Hy2', 'HK-Tuic'] }
|
||||
rule-providers:
|
||||
Apple: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Apple/Apple_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Telegram: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Telegram/Telegram.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
YouTube: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/YouTube/YouTube.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
BiliBili: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/BiliBili/BiliBili.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
TikTok: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/TikTok/TikTok.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Spotify: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Spotify/Spotify.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Netflix: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Netflix/Netflix.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Disney: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Disney/Disney.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Google: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Google/Google.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
OpenAI: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OpenAI/OpenAI.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Microsoft: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Microsoft/Microsoft.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
LinkedIn: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/LinkedIn/LinkedIn.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Twitter: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Twitter/Twitter.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GameDownload: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Game/GameDownload/GameDownload.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GameDownloadCN: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Game/GameDownloadCN/GameDownloadCN.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Steam: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Steam/Steam.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
SteamCN: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/SteamCN/SteamCN.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
OneDrive: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OneDrive/OneDrive.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Emby: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Emby/Emby.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
HoYoverse: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/HoYoverse/HoYoverse.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
GlobalMedia: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/GlobalMedia/GlobalMedia_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
ChinaMax: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Classical.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Gemini: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Gemini/Gemini.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Claude: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Claude/Claude.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Hijacking: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Hijacking/Hijacking.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
Lan: { type: http, url: 'https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Lan/Lan.yaml', interval: 86400, proxy: CatMata, behavior: classical }
|
||||
rules:
|
||||
- 'RULE-SET,Telegram,📲 Telegram'
|
||||
- 'RULE-SET,YouTube,🎬 YouTube'
|
||||
- 'RULE-SET,OpenAI,🤖 OpenAI'
|
||||
- 'RULE-SET,Gemini,🤖 Gemini'
|
||||
- 'RULE-SET,Claude,🤖 Claude'
|
||||
- 'RULE-SET,OneDrive,☁️ OneDrive'
|
||||
- 'DOMAIN-SUFFIX,microsoftpersonalcontent.com,☁️ OneDrive'
|
||||
- 'RULE-SET,Microsoft,🖥 Microsoft'
|
||||
- 'RULE-SET,Google,🌐 Google'
|
||||
- 'RULE-SET,Apple,🍎 Apple'
|
||||
- 'RULE-SET,LinkedIn,👩💼 LinkedIn'
|
||||
- 'DOMAIN-SUFFIX,acm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,acs.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,aip.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ams.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,annualreviews.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,aps.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ascelibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,asm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,asme.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,astm.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,blackwell-synergy.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,bmj.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cabdirect.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cambridge.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cas.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cell.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,clarivate.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cnki.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,cqvip.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,csiro.au,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,deepdyve.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ebscohost.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,els-cdn.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,elsevier.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,emerald.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,endnote.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,engineeringvillage.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,icevirtuallibrary.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ieee.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,imf.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,iop.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jamanetwork.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jbc.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jhu.edu,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,jstor.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,karger.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,libguides.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,madsrevolution.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,mdpi.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,mpg.de,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,myilibrary.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,nature.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ncbi.nlm.nih.gov,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oecd-ilibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,osapublishing.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oup.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,ovid.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordartonline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordbibliographies.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,oxfordmusiconline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,pkulaw.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,pnas.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,proquest.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,readcube.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,researchgate.net,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,rsc.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sagepub.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sci-hub.tw,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sciencedirect.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,sciencemag.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,scitation.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,scopus.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,siam.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,spiedigitallibrary.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,springer.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,springerlink.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,tandfonline.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,un.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,uni-bielefeld.de,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,wanfangdata.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,webofknowledge.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,westlaw.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,westlawchina.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,wiley.com,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,worldbank.org,🖥 Learning'
|
||||
- 'DOMAIN-SUFFIX,worldscientific.com,🖥 Learning'
|
||||
- 'RULE-SET,Twitter,📟 Twitter'
|
||||
- 'RULE-SET,BiliBili,🎬 BiliBili'
|
||||
- 'RULE-SET,TikTok,🎵 TikTok'
|
||||
- 'RULE-SET,Spotify,💿 Spotify'
|
||||
- 'RULE-SET,Netflix,📺 Netflix'
|
||||
- 'RULE-SET,Disney,📺 Disney'
|
||||
- 'RULE-SET,GameDownload,🎮 OtherGames'
|
||||
- 'RULE-SET,GameDownloadCN,🎮 OtherGames'
|
||||
- 'RULE-SET,HoYoverse,🎮 OtherGames'
|
||||
- 'RULE-SET,Steam,🎮 Steam'
|
||||
- 'RULE-SET,SteamCN,🎮 Steam'
|
||||
- 'DOMAIN-SUFFIX,makima.online,DIRECT'
|
||||
- 'DOMAIN-SUFFIX,mobaiemby.site,🎬 Emby'
|
||||
- 'DOMAIN-SUFFIX,recmata.net,🎬 Emby'
|
||||
- 'RULE-SET,Emby,🎬 Emby'
|
||||
- 'RULE-SET,GlobalMedia,📺 GlobalMedia'
|
||||
- 'RULE-SET,ChinaMax,🇨🇳 ChinaWebsites'
|
||||
- 'RULE-SET,Lan,DIRECT'
|
||||
- 'RULE-SET,Hijacking,💀 Hijacking'
|
||||
- 'GEOIP,CN,🇨🇳 ChinaWebsites'
|
||||
- 'MATCH,Final'
|
||||
+693
@@ -0,0 +1,693 @@
|
||||
{
|
||||
"log": {
|
||||
"level": "info",
|
||||
"timestamp": true
|
||||
},
|
||||
"experimental": {
|
||||
"cache_file": {
|
||||
"enabled": true,
|
||||
"path": "cache.db",
|
||||
"store_fakeip": true
|
||||
},
|
||||
"clash_api": {
|
||||
"external_controller": "127.0.0.1:9090",
|
||||
"default_mode": "rule"
|
||||
}
|
||||
},
|
||||
"dns": {
|
||||
"servers": [
|
||||
{
|
||||
"type": "udp",
|
||||
"tag": "dns-remote",
|
||||
"server": "223.5.5.5",
|
||||
"server_port": 53
|
||||
},
|
||||
{
|
||||
"type": "udp",
|
||||
"tag": "dns-direct",
|
||||
"server": "119.29.29.29",
|
||||
"server_port": 53
|
||||
},
|
||||
{
|
||||
"type": "fakeip",
|
||||
"tag": "dns-fakeip",
|
||||
"inet4_range": "198.18.0.0/15",
|
||||
"inet6_range": "fc00::/18"
|
||||
}
|
||||
],
|
||||
"rules": [
|
||||
{
|
||||
"clash_mode": "Direct",
|
||||
"server": "dns-direct"
|
||||
},
|
||||
{
|
||||
"clash_mode": "Global",
|
||||
"server": "dns-remote"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-cn"],
|
||||
"server": "dns-direct"
|
||||
},
|
||||
{
|
||||
"query_type": ["A", "AAAA"],
|
||||
"server": "dns-fakeip"
|
||||
}
|
||||
],
|
||||
"final": "dns-remote"
|
||||
},
|
||||
"inbounds": [
|
||||
{
|
||||
"type": "tun",
|
||||
"tag": "tun-in",
|
||||
"address": [
|
||||
"172.19.0.1/30",
|
||||
"fd00::1/126"
|
||||
],
|
||||
"auto_route": true,
|
||||
"strict_route": true,
|
||||
"stack": "mixed"
|
||||
},
|
||||
{
|
||||
"type": "mixed",
|
||||
"tag": "mixed-in",
|
||||
"listen": "127.0.0.1",
|
||||
"listen_port": 7890
|
||||
}
|
||||
],
|
||||
"outbounds": [
|
||||
{
|
||||
"type": "hysteria2",
|
||||
"tag": "美国1-hy2",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 4439,
|
||||
"password": "Se7RAuFZ8Lzg",
|
||||
"up_mbps": 200,
|
||||
"down_mbps": 500,
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "hy2.jocayn.qzz.io",
|
||||
"alpn": ["h3"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "美国1-vless",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 19150,
|
||||
"uuid": "b9136671-ef40-4b5c-a007-dcf996ec2466",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "aws.amazon.com",
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "-dTj4YHBzV5tpgVpD4mgXzlAESmxjOoyyn6waky1Dkw",
|
||||
"short_id": ""
|
||||
},
|
||||
"alpn": ["h2", "http/1.1"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "美国1-Tuic",
|
||||
"server": "64.69.34.207",
|
||||
"server_port": 4438,
|
||||
"uuid": "ca4d81b1-f8d9-4533-8b61-c15e1da91697",
|
||||
"password": "ca4d81b1-f8d9-4533-8b61-c15e1da91697",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"insecure": true,
|
||||
"alpn": ["h3"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "美国2-vless",
|
||||
"server": "107.174.208.133",
|
||||
"server_port": 34532,
|
||||
"uuid": "1b8889b6-bb2f-4735-a401-4e53bdc81c51",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "www.cloudflare.com",
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "R31tFIfDoM8yjrCfQAQqQ8QhFt6KuGjhhtQ3oSnPbAI",
|
||||
"short_id": ""
|
||||
},
|
||||
"alpn": ["h2", "http/1.1"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "美国2-Tuic",
|
||||
"server": "107.174.208.133",
|
||||
"server_port": 4438,
|
||||
"uuid": "161eaa3d-cf5b-4c07-ab36-f4f58536d081",
|
||||
"password": "161eaa3d-cf5b-4c07-ab36-f4f58536d081",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"insecure": true,
|
||||
"alpn": ["h3"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tuic",
|
||||
"tag": "HK-Tuic",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 63155,
|
||||
"uuid": "ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef",
|
||||
"password": "ef24b7cf-ec2f-48b4-b2eb-c1314f8787ef",
|
||||
"congestion_control": "bbr",
|
||||
"udp_relay_mode": "native",
|
||||
"zero_rtt_handshake": true,
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"insecure": true,
|
||||
"alpn": ["h3"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "HK-vless[最高2.5mb/s]",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 63159,
|
||||
"uuid": "27485652-f88d-48e8-b4ee-3759ac63ce80",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"packet_encoding": "xudp",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "www.amazon.com",
|
||||
"utls": {
|
||||
"enabled": true,
|
||||
"fingerprint": "chrome"
|
||||
},
|
||||
"reality": {
|
||||
"enabled": true,
|
||||
"public_key": "Jq_MTHf-vZLqpvPaViXUSZfQJ3oLM7DYeqBrtH8qlgs",
|
||||
"short_id": ""
|
||||
},
|
||||
"alpn": ["h2", "http/1.1"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "hysteria2",
|
||||
"tag": "HK-Hy2",
|
||||
"server": "154.94.234.168",
|
||||
"server_port": 4438,
|
||||
"password": "09e70d0d-fb51-458a-a650-5922eaefcc24",
|
||||
"up_mbps": 15,
|
||||
"down_mbps": 15,
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "hy2.jocay.icu",
|
||||
"insecure": true,
|
||||
"alpn": ["h3"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "CatMata",
|
||||
"outbounds": ["direct", "♻️ Auto", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "urltest",
|
||||
"tag": "♻️ Auto",
|
||||
"outbounds": ["美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic"],
|
||||
"url": "http://connectivitycheck.gstatic.com/generate_204",
|
||||
"interval": "10m",
|
||||
"tolerance": 50
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🍎 Apple",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "📲 Telegram",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🎬 YouTube",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🎬 BiliBili",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🤖 OpenAI",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🤖 Gemini",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🤖 Claude",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🎵 TikTok",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "💿 Spotify",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "📺 Netflix",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "📺 Disney",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🌐 Google",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "☁️ OneDrive",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🖥 Microsoft",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "👩💼 LinkedIn",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🖥 Learning",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "📟 Twitter",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "📺 GlobalMedia",
|
||||
"outbounds": ["CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🎬 Emby",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🎮 Steam",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🎮 OtherGames",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "💀 Hijacking",
|
||||
"outbounds": ["direct", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "🇨🇳 ChinaWebsites",
|
||||
"outbounds": ["direct", "CatMata", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"],
|
||||
"default": "direct"
|
||||
},
|
||||
{
|
||||
"type": "selector",
|
||||
"tag": "Final",
|
||||
"outbounds": ["CatMata", "direct", "美国1-vless", "美国1-Tuic", "美国2-vless", "美国2-Tuic", "HK-vless[最高2.5mb/s]", "HK-Hy2", "HK-Tuic"]
|
||||
},
|
||||
{
|
||||
"type": "direct",
|
||||
"tag": "direct"
|
||||
}
|
||||
],
|
||||
|
||||
"route": {
|
||||
"rules": [
|
||||
{
|
||||
"action": "sniff"
|
||||
},
|
||||
{
|
||||
"protocol": "dns",
|
||||
"action": "hijack-dns"
|
||||
},
|
||||
{
|
||||
"ip_is_private": true,
|
||||
"outbound": "direct"
|
||||
},
|
||||
{
|
||||
"clash_mode": "Direct",
|
||||
"outbound": "direct"
|
||||
},
|
||||
{
|
||||
"clash_mode": "Global",
|
||||
"outbound": "CatMata"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-telegram"],
|
||||
"outbound": "📲 Telegram"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-youtube"],
|
||||
"outbound": "🎬 YouTube"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-openai"],
|
||||
"outbound": "🤖 OpenAI"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-google-gemini"],
|
||||
"outbound": "🤖 Gemini"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-anthropic"],
|
||||
"outbound": "🤖 Claude"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-onedrive"],
|
||||
"outbound": "☁️ OneDrive"
|
||||
},
|
||||
{
|
||||
"domain_suffix": ["microsoftpersonalcontent.com"],
|
||||
"outbound": "☁️ OneDrive"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-microsoft"],
|
||||
"outbound": "🖥 Microsoft"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-google"],
|
||||
"outbound": "🌐 Google"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-apple"],
|
||||
"outbound": "🍎 Apple"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-linkedin"],
|
||||
"outbound": "👩💼 LinkedIn"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"acm.org", "acs.org", "aip.org", "ams.org", "annualreviews.org",
|
||||
"aps.org", "ascelibrary.org", "asm.org", "asme.org", "astm.org",
|
||||
"blackwell-synergy.com", "bmj.com", "cabdirect.org", "cambridge.org",
|
||||
"cas.org", "cell.com", "clarivate.com", "cnki.net", "cqvip.com",
|
||||
"csiro.au", "deepdyve.com", "ebscohost.com", "els-cdn.com",
|
||||
"elsevier.com", "emerald.com", "endnote.com", "engineeringvillage.com",
|
||||
"icevirtuallibrary.com", "ieee.org", "imf.org", "iop.org",
|
||||
"jamanetwork.com", "jbc.org", "jhu.edu", "jstor.org", "karger.com",
|
||||
"libguides.com", "madsrevolution.net", "mdpi.com", "mpg.de",
|
||||
"myilibrary.com", "nature.com", "ncbi.nlm.nih.gov", "oecd-ilibrary.org",
|
||||
"osapublishing.org", "oup.com", "ovid.com", "oxfordartonline.com",
|
||||
"oxfordbibliographies.com", "oxfordmusiconline.com", "pkulaw.com",
|
||||
"pnas.org", "proquest.com", "readcube.com", "researchgate.net",
|
||||
"rsc.org", "sagepub.com", "sci-hub.tw", "sciencedirect.com",
|
||||
"sciencemag.org", "scitation.org", "scopus.com", "siam.org",
|
||||
"spiedigitallibrary.org", "springer.com", "springerlink.com",
|
||||
"tandfonline.com", "un.org", "uni-bielefeld.de", "wanfangdata.com",
|
||||
"webofknowledge.com", "westlaw.com", "westlawchina.com", "wiley.com",
|
||||
"worldbank.org", "worldscientific.com"
|
||||
],
|
||||
"outbound": "🖥 Learning"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-twitter"],
|
||||
"outbound": "📟 Twitter"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-bilibili"],
|
||||
"outbound": "🎬 BiliBili"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-tiktok"],
|
||||
"outbound": "🎵 TikTok"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-spotify"],
|
||||
"outbound": "💿 Spotify"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-netflix"],
|
||||
"outbound": "📺 Netflix"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-disney"],
|
||||
"outbound": "📺 Disney"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-category-games"],
|
||||
"outbound": "🎮 OtherGames"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-steam"],
|
||||
"outbound": "🎮 Steam"
|
||||
},
|
||||
{
|
||||
"domain_suffix": ["makima.online"],
|
||||
"outbound": "direct"
|
||||
},
|
||||
{
|
||||
"domain_suffix": ["mobaiemby.site", "recmata.net"],
|
||||
"outbound": "🎬 Emby"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-geolocation-!cn"],
|
||||
"outbound": "📺 GlobalMedia"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geosite-cn"],
|
||||
"outbound": "🇨🇳 ChinaWebsites"
|
||||
},
|
||||
{
|
||||
"rule_set": ["geoip-cn"],
|
||||
"outbound": "🇨🇳 ChinaWebsites"
|
||||
}
|
||||
],
|
||||
"rule_set": [
|
||||
{
|
||||
"tag": "geosite-telegram",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-telegram.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
|
||||
{
|
||||
"tag": "geosite-youtube",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-youtube.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-openai",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-openai.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-google-gemini",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-google-gemini.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-anthropic",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-anthropic.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-onedrive",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-onedrive.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-microsoft",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-microsoft.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-google",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-google.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-apple",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-apple.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-linkedin",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-linkedin.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-twitter",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-twitter.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-bilibili",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-bilibili.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-tiktok",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-tiktok.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-spotify",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-spotify.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-netflix",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-netflix.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-disney",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-disney.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-category-games",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-category-games.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-steam",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-steam.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-geolocation-!cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-!cn.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geosite-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
},
|
||||
{
|
||||
"tag": "geoip-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs",
|
||||
"download_detour": "美国1-vless",
|
||||
"update_interval": "24h"
|
||||
}
|
||||
],
|
||||
"final": "Final",
|
||||
"auto_detect_interface": true,
|
||||
"default_domain_resolver": "dns-direct"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
# CatMata Sub2Proxy
|
||||
|
||||
这是一个用于获取 Clash / Sing-box 订阅节点并自动进行跨平台格式转换、重命名及整合的轻量控制面板与工具。
|
||||
|
||||
## 功能特性
|
||||
* **一键拉取转换**:支持 Clash (YAML) 与 Sing-box (JSON) 订阅的获取,并进行双向转换。
|
||||
* **节点智能重命名**:自动重命名节点为 `[订阅源]-[协议]`,如有同协议重名节点,自动附带递增数字。
|
||||
* **规则整合替换**:根据预置的 `CatMata.optimized.yaml` 和 `CatMata.json` / `CatMata-tun.json` 模板,动态替换策略组/出站节点,保留原分流和 DNS 规则。
|
||||
* **可视化控制面板**:基于本地 Node.js 精美单网页 (Glassmorphism),可方便管理订阅、修改节点字段、配置 DNS。
|
||||
* **客户端一键唤醒导入**:历史记录面板支持一键唤醒本地 Clash / Sing-box 客户端,直接将配置导入客户端。
|
||||
* **CLI 静默模式**:支持 `--cli` 无界面静默转换,方便接入自动化定时脚本。
|
||||
|
||||
## 目录结构
|
||||
* `public/index.html` - 控制面板前端网页
|
||||
* `sub2proxy.js` - 后端及 CLI 转换引擎
|
||||
* `subs.json` - 订阅源配置
|
||||
* `CatMata.*` - Clash 与 Sing-box 的配置模板
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 运行环境
|
||||
* [Node.js](https://nodejs.org/) (建议 v18+)
|
||||
|
||||
### 启动可视化面板 (GUI)
|
||||
双击运行 `sub2proxy.bat`,或者在终端运行:
|
||||
```bash
|
||||
node sub2proxy.js
|
||||
```
|
||||
启动后会在默认浏览器中打开控制面板:`http://localhost:3000`
|
||||
|
||||
### 命令行编译 (CLI)
|
||||
在终端运行:
|
||||
```bash
|
||||
node sub2proxy.js --cli
|
||||
```
|
||||
配置会自动输出到 `out/CatMata-sub.yaml` 和 `out/CatMata-sub.json`,并归档于 `out/history`。
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "sub2proxy",
|
||||
"version": "1.0.0",
|
||||
"description": "Clash & Sing-box subscription converter with a modern web control panel.",
|
||||
"main": "sub2proxy.js",
|
||||
"scripts": {
|
||||
"start": "node sub2proxy.js",
|
||||
"cli": "node sub2proxy.js --cli"
|
||||
},
|
||||
"dependencies": {
|
||||
"js-yaml": "^4.1.0"
|
||||
}
|
||||
}
|
||||
+1421
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
@echo off
|
||||
python "%~dp0sub2proxy.py" %*
|
||||
+791
@@ -0,0 +1,791 @@
|
||||
#!/usr/bin/env node
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const http = require('http');
|
||||
const { execSync, exec } = require('child_process');
|
||||
|
||||
// Auto-install js-yaml if missing
|
||||
try {
|
||||
require('js-yaml');
|
||||
} catch (e) {
|
||||
console.log('js-yaml module not found. Installing it via npm...');
|
||||
try {
|
||||
execSync('npm install js-yaml', { stdio: 'inherit' });
|
||||
} catch (err) {
|
||||
console.error('Failed to install js-yaml:', err.message);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
const yaml = require('js-yaml');
|
||||
|
||||
function getProtoName(typeStr) {
|
||||
const t = typeStr.toLowerCase();
|
||||
if (t === 'hysteria2') return 'hy2';
|
||||
if (t === 'ss' || t === 'shadowsocks') return 'ss';
|
||||
return t;
|
||||
}
|
||||
|
||||
function parseSpeed(speedStr) {
|
||||
if (!speedStr) return null;
|
||||
const m = String(speedStr).match(/(\d+)/);
|
||||
return m ? parseInt(m[1], 10) : null;
|
||||
}
|
||||
|
||||
function clashToSingbox(node) {
|
||||
const sb = {};
|
||||
const t = (node.type || '').toLowerCase();
|
||||
|
||||
sb.tag = node.name;
|
||||
sb.server = node.server;
|
||||
sb.server_port = parseInt(node.port || 0, 10);
|
||||
|
||||
if (t === 'hysteria2') {
|
||||
sb.type = 'hysteria2';
|
||||
sb.password = node.password;
|
||||
|
||||
const up = parseSpeed(node.up);
|
||||
if (up !== null) sb.up_mbps = up;
|
||||
const down = parseSpeed(node.down);
|
||||
if (down !== null) sb.down_mbps = down;
|
||||
|
||||
const tls = { enabled: true };
|
||||
if (node.sni) tls.server_name = node.sni;
|
||||
if (node.hasOwnProperty('skip-cert-verify')) tls.insecure = !!node['skip-cert-verify'];
|
||||
if (node.alpn) tls.alpn = node.alpn;
|
||||
sb.tls = tls;
|
||||
} else if (t === 'vless') {
|
||||
sb.type = 'vless';
|
||||
sb.uuid = node.uuid;
|
||||
sb.flow = node.flow || '';
|
||||
sb.network = node.network || 'tcp';
|
||||
if (node['packet-encoding']) sb.packet_encoding = node['packet-encoding'];
|
||||
|
||||
const tls = { enabled: false };
|
||||
if (node.tls) {
|
||||
tls.enabled = true;
|
||||
if (node.servername) tls.server_name = node.servername;
|
||||
if (node.hasOwnProperty('skip-cert-verify')) tls.insecure = !!node['skip-cert-verify'];
|
||||
if (node.alpn) tls.alpn = node.alpn;
|
||||
|
||||
if (node['reality-opts'] || (node.opts && node.opts.reality)) {
|
||||
const ropts = node['reality-opts'] || {};
|
||||
tls.reality = {
|
||||
enabled: true,
|
||||
public_key: ropts['public-key'] || '',
|
||||
short_id: ropts['short-id'] || ''
|
||||
};
|
||||
}
|
||||
|
||||
if (node['client-fingerprint']) {
|
||||
tls.utls = {
|
||||
enabled: true,
|
||||
fingerprint: node['client-fingerprint']
|
||||
};
|
||||
}
|
||||
}
|
||||
sb.tls = tls;
|
||||
} else if (t === 'tuic') {
|
||||
sb.type = 'tuic';
|
||||
sb.uuid = node.uuid;
|
||||
sb.password = node.password;
|
||||
if (node['congestion-controller']) sb.congestion_control = node['congestion-controller'];
|
||||
if (node['udp-relay-mode']) sb.udp_relay_mode = node['udp-relay-mode'];
|
||||
if (node['reduce-rtt']) sb.zero_rtt_handshake = !!node['reduce-rtt'];
|
||||
|
||||
const tls = { enabled: true };
|
||||
if (node.hasOwnProperty('disable-sni')) tls.disable_sni = !!node['disable-sni'];
|
||||
if (node.hasOwnProperty('skip-cert-verify')) tls.insecure = !!node['skip-cert-verify'];
|
||||
if (node.alpn) tls.alpn = node.alpn;
|
||||
sb.tls = tls;
|
||||
} else if (t === 'ss' || t === 'shadowsocks') {
|
||||
sb.type = 'shadowsocks';
|
||||
sb.method = node.cipher;
|
||||
sb.password = node.password;
|
||||
} else if (t === 'trojan') {
|
||||
sb.type = 'trojan';
|
||||
sb.password = node.password;
|
||||
const tls = { enabled: true };
|
||||
if (node.sni) tls.server_name = node.sni;
|
||||
if (node.hasOwnProperty('skip-cert-verify')) tls.insecure = !!node['skip-cert-verify'];
|
||||
if (node.alpn) tls.alpn = node.alpn;
|
||||
sb.tls = tls;
|
||||
} else if (t === 'vmess') {
|
||||
sb.type = 'vmess';
|
||||
sb.uuid = node.uuid;
|
||||
sb.security = node.cipher || 'auto';
|
||||
sb.alter_id = parseInt(node.alterId || 0, 10);
|
||||
|
||||
const tls = { enabled: false };
|
||||
if (node.tls) {
|
||||
tls.enabled = true;
|
||||
if (node.servername) tls.server_name = node.servername;
|
||||
if (node.hasOwnProperty('skip-cert-verify')) tls.insecure = !!node['skip-cert-verify'];
|
||||
}
|
||||
sb.tls = tls;
|
||||
|
||||
if (node.network === 'ws') {
|
||||
const ws_opts = node['ws-opts'] || {};
|
||||
sb.transport = {
|
||||
type: 'ws',
|
||||
path: ws_opts.path || '/',
|
||||
headers: ws_opts.headers || {}
|
||||
};
|
||||
}
|
||||
} else {
|
||||
sb.type = t;
|
||||
for (const k in node) {
|
||||
if (!['name', 'port', 'type', 'server'].includes(k)) {
|
||||
sb[k] = node[k];
|
||||
}
|
||||
}
|
||||
}
|
||||
return sb;
|
||||
}
|
||||
|
||||
function singboxToClash(node) {
|
||||
const c = {};
|
||||
const t = (node.type || '').toLowerCase();
|
||||
|
||||
c.name = node.tag;
|
||||
c.server = node.server;
|
||||
c.port = parseInt(node.server_port || 0, 10);
|
||||
c.udp = true;
|
||||
|
||||
if (t === 'hysteria2') {
|
||||
c.type = 'hysteria2';
|
||||
c.password = node.password;
|
||||
if (node.up_mbps) c.up = `${node.up_mbps} Mbps`;
|
||||
if (node.down_mbps) c.down = `${node.down_mbps} Mbps`;
|
||||
|
||||
const tls = node.tls || {};
|
||||
if (tls.enabled) {
|
||||
if (tls.server_name) c.sni = tls.server_name;
|
||||
if (tls.hasOwnProperty('insecure')) c['skip-cert-verify'] = !!tls.insecure;
|
||||
if (tls.alpn) c.alpn = tls.alpn;
|
||||
}
|
||||
} else if (t === 'vless') {
|
||||
c.type = 'vless';
|
||||
c.uuid = node.uuid;
|
||||
c.flow = node.flow || '';
|
||||
c.network = node.network || 'tcp';
|
||||
if (node.packet_encoding) c['packet-encoding'] = node.packet_encoding;
|
||||
|
||||
const tls = node.tls || {};
|
||||
if (tls.enabled) {
|
||||
c.tls = true;
|
||||
if (tls.server_name) c.servername = tls.server_name;
|
||||
if (tls.hasOwnProperty('insecure')) c['skip-cert-verify'] = !!tls.insecure;
|
||||
if (tls.alpn) c.alpn = tls.alpn;
|
||||
|
||||
const reality = tls.reality || {};
|
||||
if (reality.enabled) {
|
||||
c['reality-opts'] = {
|
||||
'public-key': reality.public_key || '',
|
||||
'short-id': reality.short_id || ''
|
||||
};
|
||||
}
|
||||
|
||||
const utls = tls.utls || {};
|
||||
if (utls.enabled && utls.fingerprint) {
|
||||
c['client-fingerprint'] = utls.fingerprint;
|
||||
}
|
||||
} else {
|
||||
c.tls = false;
|
||||
}
|
||||
} else if (t === 'tuic') {
|
||||
c.type = 'tuic';
|
||||
c.version = 5;
|
||||
c.uuid = node.uuid;
|
||||
c.password = node.password;
|
||||
if (node.congestion_control) c['congestion-controller'] = node.congestion_control;
|
||||
if (node.udp_relay_mode) c['udp-relay-mode'] = node.udp_relay_mode;
|
||||
if (node.hasOwnProperty('zero_rtt_handshake')) c['reduce-rtt'] = !!node.zero_rtt_handshake;
|
||||
|
||||
const tls = node.tls || {};
|
||||
if (tls.enabled) {
|
||||
if (tls.hasOwnProperty('disable_sni')) c['disable-sni'] = !!tls.disable_sni;
|
||||
if (tls.hasOwnProperty('insecure')) c['skip-cert-verify'] = !!tls.insecure;
|
||||
if (tls.alpn) c.alpn = tls.alpn;
|
||||
}
|
||||
} else if (t === 'shadowsocks') {
|
||||
c.type = 'ss';
|
||||
c.cipher = node.method;
|
||||
c.password = node.password;
|
||||
} else if (t === 'trojan') {
|
||||
c.type = 'trojan';
|
||||
c.password = node.password;
|
||||
const tls = node.tls || {};
|
||||
if (tls.enabled) {
|
||||
if (tls.server_name) c.sni = tls.server_name;
|
||||
if (tls.hasOwnProperty('insecure')) c['skip-cert-verify'] = !!tls.insecure;
|
||||
if (tls.alpn) c.alpn = tls.alpn;
|
||||
}
|
||||
} else if (t === 'vmess') {
|
||||
c.type = 'vmess';
|
||||
c.uuid = node.uuid;
|
||||
c.cipher = node.security || 'auto';
|
||||
c.alterId = parseInt(node.alter_id || 0, 10);
|
||||
|
||||
const tls = node.tls || {};
|
||||
if (tls.enabled) {
|
||||
c.tls = true;
|
||||
if (tls.server_name) c.servername = tls.server_name;
|
||||
if (tls.hasOwnProperty('insecure')) c['skip-cert-verify'] = !!tls.insecure;
|
||||
} else {
|
||||
c.tls = false;
|
||||
}
|
||||
|
||||
const trans = node.transport || {};
|
||||
if (trans.type === 'ws') {
|
||||
c.network = 'ws';
|
||||
c['ws-opts'] = {
|
||||
path: trans.path || '/',
|
||||
headers: trans.headers || {}
|
||||
};
|
||||
}
|
||||
} else {
|
||||
c.type = t;
|
||||
for (const k in node) {
|
||||
if (!['tag', 'server_port', 'type', 'server'].includes(k)) {
|
||||
c[k] = node[k];
|
||||
}
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
async function loadSubscriptionContent(link) {
|
||||
if (link.startsWith('http://') || link.startsWith('https://')) {
|
||||
try {
|
||||
const controller = new AbortController();
|
||||
const id = setTimeout(() => controller.abort(), 15000);
|
||||
const res = await fetch(link, {
|
||||
headers: {
|
||||
'User-Agent': 'clash-meta; sing-box; Mozilla/5.0'
|
||||
},
|
||||
signal: controller.signal
|
||||
});
|
||||
clearTimeout(id);
|
||||
if (!res.ok) {
|
||||
throw new Error(`HTTP error! status: ${res.status}`);
|
||||
}
|
||||
return await res.text();
|
||||
} catch (e) {
|
||||
console.error(`Error fetching ${link}:`, e.message);
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
return fs.readFileSync(link, 'utf-8');
|
||||
} catch (e) {
|
||||
console.error(`Error reading local file ${link}:`, e.message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function parseClashNodes(content) {
|
||||
try {
|
||||
const data = yaml.load(content);
|
||||
if (data && typeof data === 'object' && Array.isArray(data.proxies)) {
|
||||
return data.proxies;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(`Error parsing Clash YAML:`, e.message);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
function parseSingboxNodes(content) {
|
||||
try {
|
||||
const data = JSON.parse(content);
|
||||
if (data && typeof data === 'object') {
|
||||
const outbounds = data.outbounds || [];
|
||||
return outbounds.filter(o =>
|
||||
o && o.type && !['selector', 'urltest', 'direct', 'block', 'dns'].includes(o.type)
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(`Error parsing Sing-box JSON:`, e.message);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
const usedNames = new Set();
|
||||
|
||||
function renameNode(node, subName, isClash = true) {
|
||||
const typeStr = (node.type || '').toLowerCase();
|
||||
const protoClean = getProtoName(typeStr);
|
||||
const baseName = `${subName}-${protoClean}`;
|
||||
|
||||
let newName = baseName;
|
||||
let counter = 1;
|
||||
while (usedNames.has(newName.toLowerCase())) {
|
||||
newName = `${baseName}-${counter}`;
|
||||
counter++;
|
||||
}
|
||||
|
||||
usedNames.add(newName.toLowerCase());
|
||||
|
||||
if (isClash) {
|
||||
node.name = newName;
|
||||
} else {
|
||||
node.tag = newName;
|
||||
}
|
||||
return newName;
|
||||
}
|
||||
|
||||
function detectTemplates() {
|
||||
let yamlTpl = 'CatMata.optimized.yaml';
|
||||
if (!fs.existsSync(yamlTpl)) {
|
||||
const yamls = fs.readdirSync('.').filter(f => f.endsWith('.yaml') || f.endsWith('.yml'));
|
||||
const matched = yamls.find(f => f.includes('CatMata'));
|
||||
if (matched) yamlTpl = matched;
|
||||
}
|
||||
|
||||
let jsonTpl = 'CatMata.json';
|
||||
if (!fs.existsSync(jsonTpl)) {
|
||||
if (fs.existsSync('CatMata-tun.json')) {
|
||||
jsonTpl = 'CatMata-tun.json';
|
||||
} else {
|
||||
const jsons = fs.readdirSync('.').filter(f => f.endsWith('.json') && f !== 'subs.json');
|
||||
const matched = jsons.find(f => f.includes('CatMata'));
|
||||
if (matched) jsonTpl = matched;
|
||||
}
|
||||
}
|
||||
return { yamlTpl, jsonTpl };
|
||||
}
|
||||
|
||||
function replaceNodeRefs(data, oldNodesSet, fallbackNode) {
|
||||
if (data && typeof data === 'object') {
|
||||
if (Array.isArray(data)) {
|
||||
for (const item of data) {
|
||||
replaceNodeRefs(item, oldNodesSet, fallbackNode);
|
||||
}
|
||||
} else {
|
||||
for (const k in data) {
|
||||
if ((k === 'detour' || k === 'download_detour') && typeof data[k] === 'string') {
|
||||
if (oldNodesSet.has(data[k])) {
|
||||
data[k] = fallbackNode;
|
||||
}
|
||||
} else {
|
||||
replaceNodeRefs(data[k], oldNodesSet, fallbackNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Configuration paths
|
||||
const subsFile = 'subs.json';
|
||||
const outDir = 'out';
|
||||
const PORT = 3000;
|
||||
|
||||
// Central configuration generation function
|
||||
function generateConfigs(rawClashNodes, dns = null) {
|
||||
const { yamlTpl, jsonTpl } = detectTemplates();
|
||||
if (!fs.existsSync(outDir)) {
|
||||
fs.mkdirSync(outDir, { recursive: true });
|
||||
}
|
||||
|
||||
// 1. Process Clash Config
|
||||
const clashConfig = yaml.load(fs.readFileSync(yamlTpl, 'utf-8')) || {};
|
||||
clashConfig.proxies = rawClashNodes;
|
||||
|
||||
if (dns && dns.clash) {
|
||||
clashConfig.dns = yaml.load(dns.clash);
|
||||
}
|
||||
|
||||
const groupNames = new Set((clashConfig['proxy-groups'] || []).map(g => g.name));
|
||||
const specialNames = new Set(['DIRECT', 'REJECT', 'PASS', 'COMPATIBLE']);
|
||||
const newNodeNames = rawClashNodes.map(n => n.name);
|
||||
|
||||
for (const group of (clashConfig['proxy-groups'] || [])) {
|
||||
const oldProxies = group.proxies || [];
|
||||
const nonNodeItems = oldProxies.filter(p => groupNames.has(p) || specialNames.has(p));
|
||||
const hasNodes = oldProxies.some(p => !groupNames.has(p) && !specialNames.has(p));
|
||||
if (hasNodes || nonNodeItems.length === 0) {
|
||||
group.proxies = [...nonNodeItems, ...newNodeNames];
|
||||
}
|
||||
}
|
||||
|
||||
const outYamlPath = path.join(outDir, 'CatMata-sub.yaml');
|
||||
fs.writeFileSync(outYamlPath, yaml.dump(clashConfig, { noRefs: true, sortKeys: false }), 'utf-8');
|
||||
|
||||
// 2. Process Sing-box Config
|
||||
const sbConfig = JSON.parse(fs.readFileSync(jsonTpl, 'utf-8')) || {};
|
||||
const allSingboxNodes = rawClashNodes.map(n => {
|
||||
const nodeCopy = JSON.parse(JSON.stringify(n));
|
||||
return clashToSingbox(nodeCopy);
|
||||
});
|
||||
|
||||
if (dns && dns.singbox) {
|
||||
sbConfig.dns = JSON.parse(dns.singbox);
|
||||
}
|
||||
|
||||
const oldNodesSet = new Set();
|
||||
const preservedOutbounds = [];
|
||||
|
||||
for (const o of (sbConfig.outbounds || [])) {
|
||||
if (['selector', 'urltest', 'direct', 'block', 'dns'].includes(o.type)) {
|
||||
preservedOutbounds.push(o);
|
||||
} else {
|
||||
oldNodesSet.add(o.tag);
|
||||
}
|
||||
}
|
||||
|
||||
const groupTags = new Set(preservedOutbounds.filter(o => ['selector', 'urltest'].includes(o.type)).map(o => o.tag));
|
||||
const specialTags = new Set(['direct', 'block', 'dns']);
|
||||
const newNodeTags = allSingboxNodes.map(n => n.tag);
|
||||
|
||||
for (const o of preservedOutbounds) {
|
||||
if (['selector', 'urltest'].includes(o.type)) {
|
||||
const oldList = o.outbounds || [];
|
||||
const nonNodeTags = oldList.filter(t => groupTags.has(t) || specialTags.has(t));
|
||||
const hasNodes = oldList.some(t => !groupTags.has(t) && !specialTags.has(t));
|
||||
if (hasNodes || nonNodeTags.length === 0) {
|
||||
o.outbounds = [...nonNodeTags, ...newNodeTags];
|
||||
}
|
||||
|
||||
if (o.default && oldNodesSet.has(o.default)) {
|
||||
o.default = newNodeTags[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
replaceNodeRefs(sbConfig, oldNodesSet, newNodeTags[0]);
|
||||
sbConfig.outbounds = [...preservedOutbounds, ...allSingboxNodes];
|
||||
|
||||
const outJsonPath = path.join(outDir, 'CatMata-sub.json');
|
||||
fs.writeFileSync(outJsonPath, JSON.stringify(sbConfig, null, 2), 'utf-8');
|
||||
|
||||
// Archive in history
|
||||
const historyDir = path.join(outDir, 'history');
|
||||
if (!fs.existsSync(historyDir)) {
|
||||
fs.mkdirSync(historyDir, { recursive: true });
|
||||
}
|
||||
|
||||
const now = new Date();
|
||||
const pad = n => String(n).padStart(2, '0');
|
||||
const timestampFile = `${now.getFullYear()}${pad(now.getMonth()+1)}${pad(now.getDate())}-${pad(now.getHours())}${pad(now.getMinutes())}${pad(now.getSeconds())}`;
|
||||
const timeStr = `${now.getFullYear()}-${pad(now.getMonth()+1)}-${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`;
|
||||
|
||||
const histYamlName = `CatMata-sub-${timestampFile}.yaml`;
|
||||
const histJsonName = `CatMata-sub-${timestampFile}.json`;
|
||||
|
||||
fs.writeFileSync(path.join(historyDir, histYamlName), fs.readFileSync(outYamlPath));
|
||||
fs.writeFileSync(path.join(historyDir, histJsonName), fs.readFileSync(outJsonPath));
|
||||
|
||||
const historyJsonPath = path.join(historyDir, 'history.json');
|
||||
let historyList = [];
|
||||
if (fs.existsSync(historyJsonPath)) {
|
||||
try {
|
||||
historyList = JSON.parse(fs.readFileSync(historyJsonPath, 'utf-8'));
|
||||
} catch (e) {
|
||||
console.error("Failed to parse history.json, resetting:", e.message);
|
||||
}
|
||||
}
|
||||
|
||||
historyList.unshift({
|
||||
timestamp: now.toISOString(),
|
||||
timeStr: timeStr,
|
||||
yamlFile: histYamlName,
|
||||
jsonFile: histJsonName,
|
||||
nodesCount: rawClashNodes.length
|
||||
});
|
||||
|
||||
fs.writeFileSync(historyJsonPath, JSON.stringify(historyList, null, 2), 'utf-8');
|
||||
|
||||
return { yamlPath: outYamlPath, jsonPath: outJsonPath };
|
||||
}
|
||||
|
||||
function openBrowser(url) {
|
||||
let cmd;
|
||||
if (process.platform === 'win32') {
|
||||
cmd = `start "" "${url}"`;
|
||||
} else if (process.platform === 'darwin') {
|
||||
cmd = `open "${url}"`;
|
||||
} else {
|
||||
cmd = `xdg-open "${url}"`;
|
||||
}
|
||||
exec(cmd, err => {
|
||||
if (err) console.error('Failed to open browser:', err);
|
||||
});
|
||||
}
|
||||
|
||||
function readJsonBody(req) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let body = '';
|
||||
req.on('data', chunk => { body += chunk; });
|
||||
req.on('end', () => {
|
||||
try {
|
||||
resolve(JSON.parse(body || '{}'));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
});
|
||||
req.on('error', err => reject(err));
|
||||
});
|
||||
}
|
||||
|
||||
// HTTP Server setup
|
||||
function startServer() {
|
||||
const server = http.createServer(async (req, res) => {
|
||||
const parsedUrl = new URL(req.url, `http://${req.headers.host}`);
|
||||
const pathname = parsedUrl.pathname;
|
||||
|
||||
// Static Index file
|
||||
if (pathname === '/' || pathname === '/index.html') {
|
||||
const htmlPath = path.join(__dirname, 'public', 'index.html');
|
||||
if (fs.existsSync(htmlPath)) {
|
||||
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
||||
res.end(fs.readFileSync(htmlPath));
|
||||
} else {
|
||||
res.writeHead(404);
|
||||
res.end('index.html not found');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// API: GET /api/subs
|
||||
if (pathname === '/api/subs' && req.method === 'GET') {
|
||||
if (fs.existsSync(subsFile)) {
|
||||
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
||||
res.end(fs.readFileSync(subsFile));
|
||||
} else {
|
||||
res.writeHead(200, { 'Content-Type': 'application/json' });
|
||||
res.end(JSON.stringify([]));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// API: POST /api/subs
|
||||
if (pathname === '/api/subs' && req.method === 'POST') {
|
||||
try {
|
||||
const payload = await readJsonBody(req);
|
||||
fs.writeFileSync(subsFile, JSON.stringify(payload, null, 2), 'utf-8');
|
||||
res.writeHead(200, { 'Content-Type': 'application/json' });
|
||||
res.end(JSON.stringify({ success: true }));
|
||||
} catch (e) {
|
||||
res.writeHead(500);
|
||||
res.end(e.message);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// API: GET /api/dns
|
||||
if (pathname === '/api/dns' && req.method === 'GET') {
|
||||
try {
|
||||
const { yamlTpl, jsonTpl } = detectTemplates();
|
||||
const clashConfig = yaml.load(fs.readFileSync(yamlTpl, 'utf-8')) || {};
|
||||
const sbConfig = JSON.parse(fs.readFileSync(jsonTpl, 'utf-8')) || {};
|
||||
|
||||
const clashDnsStr = yaml.dump(clashConfig.dns || {}, { noRefs: true, sortKeys: false });
|
||||
const sbDnsStr = JSON.stringify(sbConfig.dns || {}, null, 2);
|
||||
|
||||
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
||||
res.end(JSON.stringify({ clash: clashDnsStr, singbox: sbDnsStr }));
|
||||
} catch (e) {
|
||||
res.writeHead(500);
|
||||
res.end(e.message);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// API: POST /api/fetch (Fetches and converts in-memory)
|
||||
if (pathname === '/api/fetch' && req.method === 'POST') {
|
||||
try {
|
||||
if (!fs.existsSync(subsFile)) {
|
||||
res.writeHead(400);
|
||||
res.end('Subscription config subs.json is missing');
|
||||
return;
|
||||
}
|
||||
|
||||
const subs = JSON.parse(fs.readFileSync(subsFile, 'utf-8'));
|
||||
const allClashNodes = [];
|
||||
usedNames.clear();
|
||||
|
||||
for (const sub of subs) {
|
||||
const subName = sub.name || 'Sub';
|
||||
const subLink = sub.link;
|
||||
const subType = (sub.type || 'clash').toLowerCase();
|
||||
|
||||
if (!subLink) continue;
|
||||
|
||||
const content = await loadSubscriptionContent(subLink);
|
||||
if (!content) continue;
|
||||
|
||||
if (subType === 'clash') {
|
||||
const nodes = parseClashNodes(content);
|
||||
for (const node of nodes) {
|
||||
const cNode = JSON.parse(JSON.stringify(node));
|
||||
renameNode(cNode, subName, true);
|
||||
allClashNodes.push(cNode);
|
||||
}
|
||||
} else if (subType === 'singbox') {
|
||||
const nodes = parseSingboxNodes(content);
|
||||
for (const node of nodes) {
|
||||
const sbNode = JSON.parse(JSON.stringify(node));
|
||||
renameNode(sbNode, subName, false);
|
||||
|
||||
const cNode = singboxToClash(sbNode);
|
||||
allClashNodes.push(cNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
||||
res.end(JSON.stringify({ proxies: allClashNodes }));
|
||||
} catch (e) {
|
||||
res.writeHead(500);
|
||||
res.end(e.message);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// API: POST /api/generate (Generates and writes configurations)
|
||||
if (pathname === '/api/generate' && req.method === 'POST') {
|
||||
try {
|
||||
const { proxies: rawClashNodes, dns } = await readJsonBody(req);
|
||||
if (!rawClashNodes || !Array.isArray(rawClashNodes) || rawClashNodes.length === 0) {
|
||||
res.writeHead(400);
|
||||
res.end('No proxies supplied');
|
||||
return;
|
||||
}
|
||||
|
||||
generateConfigs(rawClashNodes, dns);
|
||||
|
||||
res.writeHead(200, { 'Content-Type': 'application/json' });
|
||||
res.end(JSON.stringify({ success: true }));
|
||||
} catch (e) {
|
||||
res.writeHead(500);
|
||||
res.end(e.message);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// API: GET /api/history
|
||||
if (pathname === '/api/history' && req.method === 'GET') {
|
||||
const historyJsonPath = path.join(outDir, 'history', 'history.json');
|
||||
if (fs.existsSync(historyJsonPath)) {
|
||||
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
||||
res.end(fs.readFileSync(historyJsonPath));
|
||||
} else {
|
||||
res.writeHead(200, { 'Content-Type': 'application/json' });
|
||||
res.end(JSON.stringify([]));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// API: GET /api/download
|
||||
if (pathname === '/api/download' && req.method === 'GET') {
|
||||
const fileName = parsedUrl.searchParams.get('file');
|
||||
if (!fileName) {
|
||||
res.writeHead(400);
|
||||
res.end('Missing file parameter');
|
||||
return;
|
||||
}
|
||||
|
||||
// Security check: prevent directory traversal
|
||||
const safeRegex = /^CatMata-sub-\d{8}-\d{6}\.(yaml|json)$/;
|
||||
if (!safeRegex.test(fileName)) {
|
||||
res.writeHead(400);
|
||||
res.end('Invalid file name');
|
||||
return;
|
||||
}
|
||||
|
||||
const filePath = path.join(outDir, 'history', fileName);
|
||||
if (fs.existsSync(filePath)) {
|
||||
const isYaml = fileName.endsWith('.yaml');
|
||||
res.writeHead(200, {
|
||||
'Content-Type': isYaml ? 'application/x-yaml' : 'application/json; charset=utf-8',
|
||||
'Content-Disposition': `attachment; filename="${fileName}"`
|
||||
});
|
||||
res.end(fs.readFileSync(filePath));
|
||||
} else {
|
||||
res.writeHead(404);
|
||||
res.end('File not found');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
res.writeHead(404);
|
||||
res.end('Not Found');
|
||||
});
|
||||
|
||||
server.listen(PORT, () => {
|
||||
console.log(`CatMata Sub2Proxy 控制面板已启动!`);
|
||||
console.log(`本地访问地址: http://localhost:${PORT}`);
|
||||
console.log(`正在自动打开默认浏览器...`);
|
||||
openBrowser(`http://localhost:${PORT}`);
|
||||
});
|
||||
}
|
||||
|
||||
// Legacy CLI Mode fallback
|
||||
async function runCli() {
|
||||
const detected = detectTemplates();
|
||||
const yamlTpl = detected.yamlTpl;
|
||||
const jsonTpl = detected.jsonTpl;
|
||||
|
||||
console.log(`CLI 编译模式:`);
|
||||
console.log(`Clash 模板: ${yamlTpl}`);
|
||||
console.log(`Sing-box 模板: ${jsonTpl}`);
|
||||
|
||||
if (!fs.existsSync(subsFile)) {
|
||||
console.error(`Error: subs.json not found.`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const subs = JSON.parse(fs.readFileSync(subsFile, 'utf-8'));
|
||||
const allClashNodes = [];
|
||||
usedNames.clear();
|
||||
|
||||
for (const sub of subs) {
|
||||
const subName = sub.name || 'Sub';
|
||||
const subLink = sub.link;
|
||||
const subType = (sub.type || 'clash').toLowerCase();
|
||||
|
||||
if (!subLink) continue;
|
||||
const content = await loadSubscriptionContent(subLink);
|
||||
if (!content) continue;
|
||||
|
||||
if (subType === 'clash') {
|
||||
const nodes = parseClashNodes(content);
|
||||
for (const node of nodes) {
|
||||
const cNode = JSON.parse(JSON.stringify(node));
|
||||
const newName = renameNode(cNode, subName, true);
|
||||
allClashNodes.push(cNode);
|
||||
}
|
||||
} else if (subType === 'singbox') {
|
||||
const nodes = parseSingboxNodes(content);
|
||||
for (const node of nodes) {
|
||||
const sbNode = JSON.parse(JSON.stringify(node));
|
||||
const newName = renameNode(sbNode, subName, false);
|
||||
|
||||
const cNode = singboxToClash(sbNode);
|
||||
allClashNodes.push(cNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (allClashNodes.length === 0) {
|
||||
console.error("未拉取到任何代理节点。");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
try {
|
||||
const result = generateConfigs(allClashNodes);
|
||||
console.log(`生成 Clash 配置成功: ${result.yamlPath}`);
|
||||
console.log(`生成 Sing-box 配置成功: ${result.jsonPath}`);
|
||||
} catch (e) {
|
||||
console.error("生成配置失败:", e.message);
|
||||
}
|
||||
}
|
||||
|
||||
// Start Main Routine
|
||||
const args = process.argv.slice(2);
|
||||
if (args.includes('--cli') || args.includes('-c')) {
|
||||
runCli();
|
||||
} else {
|
||||
startServer();
|
||||
}
|
||||
Reference in New Issue
Block a user