517 lines
16 KiB
YAML
517 lines
16 KiB
YAML
rules:
|
|
- RULE-SET, Reject, AdBlock
|
|
- RULE-SET, Special, DIRECT
|
|
- RULE-SET, Netflix, Netflix
|
|
- RULE-SET, Disney Plus, Disney
|
|
- RULE-SET, YouTube, YouTube
|
|
- RULE-SET, Spotify, Spotify
|
|
- RULE-SET, Bilibili, Asian TV
|
|
- RULE-SET, IQ, Asian TV
|
|
- RULE-SET, IQIYI, Asian TV
|
|
- RULE-SET, Letv, Asian TV
|
|
- RULE-SET, Netease Music, Asian TV
|
|
- RULE-SET, Tencent Video, Asian TV
|
|
- RULE-SET, Youku, Asian TV
|
|
- RULE-SET, WeTV, Asian TV
|
|
- RULE-SET, ABC, Global TV
|
|
- RULE-SET, Abema TV, Global TV
|
|
- RULE-SET, Amazon, Global TV
|
|
- RULE-SET, Bahamut, Global TV
|
|
- RULE-SET, BBC iPlayer, Global TV
|
|
- RULE-SET, DAZN, Global TV
|
|
- RULE-SET, Discovery Plus, Global TV
|
|
- RULE-SET, encoreTVB, Global TV
|
|
- RULE-SET, F1 TV, Global TV
|
|
- RULE-SET, Fox Now, Global TV
|
|
- RULE-SET, Fox+, Global TV
|
|
- RULE-SET, HBO Go, Global TV
|
|
- RULE-SET, HBO Max, Global TV
|
|
- RULE-SET, Hulu Japan, Global TV
|
|
- RULE-SET, Hulu, Global TV
|
|
- RULE-SET, Japonx, Global TV
|
|
- RULE-SET, JOOX, Global TV
|
|
- RULE-SET, KKBOX, Global TV
|
|
- RULE-SET, KKTV, Global TV
|
|
- RULE-SET, Line TV, Global TV
|
|
- RULE-SET, myTV SUPER, Global TV
|
|
- RULE-SET, Niconico, Global TV
|
|
- RULE-SET, Pandora, Global TV
|
|
- RULE-SET, PBS, Global TV
|
|
- RULE-SET, Pornhub, Global TV
|
|
- RULE-SET, Soundcloud, Global TV
|
|
- RULE-SET, ViuTV, Global TV
|
|
- RULE-SET, Apple Music, Apple TV
|
|
- RULE-SET, Apple News, Apple TV
|
|
- RULE-SET, Apple TV, Apple TV
|
|
- RULE-SET, Apple, Apple
|
|
- RULE-SET, Telegram, Telegram
|
|
- RULE-SET, Crypto, Crypto
|
|
- RULE-SET, Discord, Discord
|
|
- RULE-SET, Google FCM, Google FCM
|
|
- RULE-SET, Microsoft, Microsoft
|
|
- RULE-SET, OpenAI, OpenAI
|
|
- RULE-SET, PayPal, PayPal
|
|
- RULE-SET, Scholar, Scholar
|
|
- RULE-SET, Speedtest, Speedtest
|
|
- RULE-SET, Steam, Steam
|
|
- RULE-SET, miHoYo, miHoYo
|
|
- RULE-SET, PROXY, Proxy
|
|
- RULE-SET, Domestic, Domestic
|
|
- RULE-SET, Domestic IPs, Domestic
|
|
- RULE-SET, LAN, DIRECT
|
|
- GEOIP, CN, Domestic
|
|
- MATCH, Others
|
|
script:
|
|
code: |
|
|
def main(ctx, metadata):
|
|
ruleset_action = {
|
|
'Reject': 'AdBlock',
|
|
'Special': 'DIRECT',
|
|
'Netflix': 'Netflix',
|
|
'Disney Plus': 'Disney',
|
|
'YouTube': 'YouTube',
|
|
'Spotify': 'Spotify',
|
|
'Bilibili': 'Asian TV',
|
|
'IQ': 'Asian TV',
|
|
'IQIYI': 'Asian TV',
|
|
'Letv': 'Asian TV',
|
|
'Netease Music': 'Asian TV',
|
|
'Tencent Video': 'Asian TV',
|
|
'Youku': 'Asian TV',
|
|
'WeTV': 'Asian TV',
|
|
'ABC': 'Global TV',
|
|
'Abema TV': 'Global TV',
|
|
'Amazon': 'Global TV',
|
|
'Bahamut': 'Global TV',
|
|
'BBC iPlayer': 'Global TV',
|
|
'DAZN': 'Global TV',
|
|
'Discovery Plus': 'Global TV',
|
|
'encoreTVB': 'Global TV',
|
|
'F1 TV': 'Global TV',
|
|
'Fox Now': 'Global TV',
|
|
'Fox+': 'Global TV',
|
|
'HBO Go': 'Global TV',
|
|
'HBO Max': 'Global TV',
|
|
'Hulu Japan': 'Global TV',
|
|
'Hulu': 'Global TV',
|
|
'Japonx': 'Global TV',
|
|
'JOOX': 'Global TV',
|
|
'KKBOX': 'Global TV',
|
|
'KKTV': 'Global TV',
|
|
'Line TV': 'Global TV',
|
|
'myTV SUPER': 'Global TV',
|
|
'Niconico': 'Global TV',
|
|
'Pandora': 'Global TV',
|
|
'PBS': 'Global TV',
|
|
'Pornhub': 'Global TV',
|
|
'Soundcloud': 'Global TV',
|
|
'ViuTV': 'Global TV',
|
|
'Apple Music': 'Apple TV',
|
|
'Apple News': 'Apple TV',
|
|
'Apple TV': 'Apple TV',
|
|
'Apple': 'Apple',
|
|
'Telegram': 'Telegram',
|
|
'Crypto': 'Crypto',
|
|
'Discord': 'Discord',
|
|
'Google FCM': 'Google FCM',
|
|
'Microsoft': 'Microsoft',
|
|
'OpenAI': 'OpenAI',
|
|
'PayPal': 'PayPal',
|
|
'Scholar': 'Scholar',
|
|
'Speedtest': 'Speedtest',
|
|
'Steam': 'Steam',
|
|
'miHoYo': 'miHoYo',
|
|
'PROXY': 'Proxy',
|
|
'Domestic': 'Domestic',
|
|
'Domestic IPs': 'Domestic',
|
|
'LAN': 'DIRECT'
|
|
}
|
|
|
|
port = int(metadata['dst_port'])
|
|
|
|
if metadata['network'] == 'UDP' and port == 443:
|
|
ctx.log('[Script] matched QUIC traffic use reject')
|
|
return 'REJECT'
|
|
|
|
port_list = [21, 22, 23, 53, 80, 123, 143, 194, 443, 465, 587, 853, 993, 995, 998, 2052, 2053, 2082, 2083, 2086, 2095, 2096, 3389, 5222, 5228, 5229, 5230, 8080, 8443, 8880, 8888, 8889]
|
|
if port not in port_list:
|
|
ctx.log('[Script] not common port use direct')
|
|
return 'DIRECT'
|
|
|
|
if metadata['dst_ip'] == '':
|
|
metadata['dst_ip'] = ctx.resolve_ip(metadata['host'])
|
|
|
|
for ruleset in ruleset_action:
|
|
if ctx.rule_providers[ruleset].match(metadata):
|
|
return ruleset_action[ruleset]
|
|
|
|
if metadata['dst_ip'] != '':
|
|
code = ctx.geoip(metadata['dst_ip'])
|
|
if code == 'CN':
|
|
ctx.log('[Script] Geoip CN')
|
|
return 'Domestic'
|
|
|
|
ctx.log('[Script] FINAL')
|
|
return 'Others'
|
|
rule-providers:
|
|
Reject:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Reject.yaml
|
|
path: "./Rules/Reject"
|
|
interval: 86400
|
|
Special:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Special.yaml
|
|
path: "./Rules/Special"
|
|
interval: 86400
|
|
PROXY:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Proxy.yaml
|
|
path: "./Rules/Proxy"
|
|
interval: 86400
|
|
Domestic:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Domestic.yaml
|
|
path: "./Rules/Domestic"
|
|
interval: 86400
|
|
Domestic IPs:
|
|
type: http
|
|
behavior: ipcidr
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Domestic%20IPs.yaml
|
|
path: "./Rules/Domestic_IPs"
|
|
interval: 86400
|
|
LAN:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/LAN.yaml
|
|
path: "./Rules/LAN"
|
|
interval: 86400
|
|
Netflix:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Netflix.yaml
|
|
path: "./Rules/Media/Netflix"
|
|
interval: 86400
|
|
Spotify:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Spotify.yaml
|
|
path: "./Rules/Media/Spotify"
|
|
interval: 86400
|
|
YouTube:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/YouTube.yaml
|
|
path: "./Rules/Media/YouTube"
|
|
interval: 86400
|
|
Bilibili:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Bilibili.yaml
|
|
path: "./Rules/Media/Bilibili"
|
|
interval: 86400
|
|
IQ:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/IQ.yaml
|
|
path: "./Rules/Media/IQI"
|
|
interval: 86400
|
|
IQIYI:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/IQIYI.yaml
|
|
path: "./Rules/Media/IQYI"
|
|
interval: 86400
|
|
Letv:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Letv.yaml
|
|
path: "./Rules/Media/Letv"
|
|
interval: 86400
|
|
Netease Music:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Netease%20Music.yaml
|
|
path: "./Rules/Media/Netease_Music"
|
|
interval: 86400
|
|
Tencent Video:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Tencent%20Video.yaml
|
|
path: "./Rules/Media/Tencent_Video"
|
|
interval: 86400
|
|
Youku:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Youku.yaml
|
|
path: "./Rules/Media/Youku"
|
|
interval: 86400
|
|
WeTV:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/WeTV.yaml
|
|
path: "./Rules/Media/WeTV"
|
|
interval: 86400
|
|
ABC:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/ABC.yaml
|
|
path: "./Rules/Media/ABC"
|
|
interval: 86400
|
|
Abema TV:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Abema%20TV.yaml
|
|
path: "./Rules/Media/Abema_TV"
|
|
interval: 86400
|
|
Amazon:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Amazon.yaml
|
|
path: "./Rules/Media/Amazon"
|
|
interval: 86400
|
|
Apple Music:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20Music.yaml
|
|
path: "./Rules/Media/Apple_Music"
|
|
interval: 86400
|
|
Apple News:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20News.yaml
|
|
path: "./Rules/Media/Apple_News"
|
|
interval: 86400
|
|
Apple TV:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20TV.yaml
|
|
path: "./Rules/Media/Apple_TV"
|
|
interval: 86400
|
|
Bahamut:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Bahamut.yaml
|
|
path: "./Rules/Media/Bahamut"
|
|
interval: 86400
|
|
BBC iPlayer:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/BBC%20iPlayer.yaml
|
|
path: "./Rules/Media/BBC_iPlayer"
|
|
interval: 86400
|
|
DAZN:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/DAZN.yaml
|
|
path: "./Rules/Media/DAZN"
|
|
interval: 86400
|
|
Discovery Plus:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Discovery%20Plus.yaml
|
|
path: "./Rules/Media/Discovery_Plus"
|
|
interval: 86400
|
|
Disney Plus:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Disney%20Plus.yaml
|
|
path: "./Rules/Media/Disney_Plus"
|
|
interval: 86400
|
|
encoreTVB:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/encoreTVB.yaml
|
|
path: "./Rules/Media/encoreTVB"
|
|
interval: 86400
|
|
F1 TV:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/F1%20TV.yaml
|
|
path: "./Rules/Media/F1_TV"
|
|
interval: 86400
|
|
Fox Now:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Fox%20Now.yaml
|
|
path: "./Rules/Media/Fox_Now"
|
|
interval: 86400
|
|
Fox+:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Fox%2B.yaml
|
|
path: "./Rules/Media/Fox+"
|
|
interval: 86400
|
|
HBO Go:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/HBO%20Go.yaml
|
|
path: "./Rules/Media/HBO_Go"
|
|
interval: 86400
|
|
HBO Max:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/HBO%20Max.yaml
|
|
path: "./Rules/Media/HBO_Max"
|
|
interval: 86400
|
|
Hulu Japan:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Hulu%20Japan.yaml
|
|
path: "./Rules/Media/Hulu_Japan"
|
|
interval: 86400
|
|
Hulu:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Hulu.yaml
|
|
path: "./Rules/Media/Hulu"
|
|
interval: 86400
|
|
Japonx:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Japonx.yaml
|
|
path: "./Rules/Media/Japonx"
|
|
interval: 86400
|
|
JOOX:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/JOOX.yaml
|
|
path: "./Rules/Media/JOOX"
|
|
interval: 86400
|
|
KKBOX:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/KKBOX.yaml
|
|
path: "./Rules/Media/KKBOX"
|
|
interval: 86400
|
|
KKTV:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/KKTV.yaml
|
|
path: "./Rules/Media/KKTV"
|
|
interval: 86400
|
|
Line TV:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Line%20TV.yaml
|
|
path: "./Rules/Media/Line_TV"
|
|
interval: 86400
|
|
myTV SUPER:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/myTV%20SUPER.yaml
|
|
path: "./Rules/Media/myTV_SUPER"
|
|
interval: 86400
|
|
Niconico:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Niconico.yaml
|
|
path: "./Rules/Media/Niconico"
|
|
interval: 86400
|
|
Pandora:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Pandora.yaml
|
|
path: "./Rules/Media/Pandora"
|
|
interval: 86400
|
|
PBS:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/PBS.yaml
|
|
path: "./Rules/Media/PBS"
|
|
interval: 86400
|
|
Pornhub:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Pornhub.yaml
|
|
path: "./Rules/Media/Pornhub"
|
|
interval: 86400
|
|
Soundcloud:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Soundcloud.yaml
|
|
path: "./Rules/Media/Soundcloud"
|
|
interval: 86400
|
|
ViuTV:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/ViuTV.yaml
|
|
path: "./Rules/Media/ViuTV"
|
|
interval: 86400
|
|
Telegram:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Telegram.yaml
|
|
path: "./Rules/Telegram"
|
|
interval: 86400
|
|
Crypto:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Crypto.yaml
|
|
path: "./Rules/Crypto"
|
|
interval: 86400
|
|
Discord:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Discord.yaml
|
|
path: "./Rules/Discord"
|
|
interval: 86400
|
|
Steam:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Steam.yaml
|
|
path: "./Rules/Steam"
|
|
interval: 86400
|
|
Speedtest:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Speedtest.yaml
|
|
path: "./Rules/Speedtest"
|
|
interval: 86400
|
|
PayPal:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/PayPal.yaml
|
|
path: "./Rules/PayPal"
|
|
interval: 86400
|
|
Microsoft:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Microsoft.yaml
|
|
path: "./Rules/Microsoft"
|
|
interval: 86400
|
|
OpenAI:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/OpenAI.yaml
|
|
path: "./Rules/OpenAI"
|
|
interval: 86400
|
|
Apple:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Apple.yaml
|
|
path: "./Rules/Apple"
|
|
interval: 86400
|
|
Google FCM:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Google%20FCM.yaml
|
|
path: "./Rules/Google FCM"
|
|
interval: 86400
|
|
Scholar:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Scholar.yaml
|
|
path: "./Rules/Scholar"
|
|
interval: 86400
|
|
miHoYo:
|
|
type: http
|
|
behavior: classical
|
|
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/miHoYo.yaml
|
|
path: "./Rules/miHoYo"
|
|
interval: 86400
|