- RULE-SET,Reject,AdBlock - RULE-SET,Special,DIRECT - RULE-SET,Netflix,Netflix - RULE-SET,Spotify,Spotify # - RULE-SET,YouTube Music,YouTube - RULE-SET,YouTube,YouTube - RULE-SET,Bilibili,AsianTV - RULE-SET,iQiyi,AsianTV - RULE-SET,Letv,AsianTV # - RULE-SET,MOO,AsianTV - RULE-SET,Netease Music,AsianTV - RULE-SET,Tencent Video,AsianTV - RULE-SET,Youku,AsianTV - RULE-SET,ABC,GlobalTV - RULE-SET,Abema TV,GlobalTV - RULE-SET,Amazon,GlobalTV - RULE-SET,Apple News,GlobalTV - RULE-SET,Apple TV,GlobalTV - RULE-SET,Bahamut,GlobalTV - RULE-SET,BBC iPlayer,GlobalTV - RULE-SET,DAZN,GlobalTV - RULE-SET,Disney Plus,GlobalTV - RULE-SET,encoreTVB,GlobalTV - RULE-SET,Fox Now,GlobalTV - RULE-SET,Fox+,GlobalTV - RULE-SET,HBO,GlobalTV - RULE-SET,Hulu Japan,GlobalTV - RULE-SET,Hulu,GlobalTV - RULE-SET,Japonx,GlobalTV - RULE-SET,JOOX,GlobalTV - RULE-SET,KKBOX,GlobalTV - RULE-SET,KKTV,GlobalTV - RULE-SET,Line TV,GlobalTV - RULE-SET,myTV SUPER,GlobalTV - RULE-SET,Pandora,GlobalTV - RULE-SET,PBS,GlobalTV - RULE-SET,Pornhub,GlobalTV - RULE-SET,Soundcloud,GlobalTV - RULE-SET,ViuTV,GlobalTV - RULE-SET,Telegram,Telegram - RULE-SET,Steam,Steam - RULE-SET,Speedtest,Speedtest - RULE-SET,PayPal,PayPal - RULE-SET,Microsoft,Microsoft - RULE-SET,PROXY,Proxy - RULE-SET,Apple,Apple - RULE-SET,Domestic,Domestic - RULE-SET,Domestic IPs,Domestic - RULE-SET,LAN,DIRECT - GEOIP,CN,Domestic - MATCH,Others script: code: | def main(ctx, metadata): port_list = [21, 22, 23, 53, 80, 123, 143, 194, 443, 465, 587, 853, 993, 995, 998, 2052, 2053, 2082, 2083, 2086, 2095, 2096, 5222, 5228, 5229, 5230, 8080, 8443, 8880, 8888, 8889] ruleset_action = {"Reject": "AdBlock", "Special": "DIRECT", "Netflix": "Netflix", "Spotify": "Spotify", "YouTube": "YouTube", "Bilibili": "AsianTV", "iQiyi": "AsianTV", "Letv": "AsianTV", "Netease Music": "AsianTV", "Tencent Video": "AsianTV", "Youku": "AsianTV", "ABC": "GlobalTV", "Abema TV": "GlobalTV", "Amazon": "GlobalTV", "Apple News": "GlobalTV", "Apple TV": "GlobalTV", "Bahamut": "GlobalTV", "BBC iPlayer": "GlobalTV", "DAZN": "GlobalTV", "Disney Plus": "GlobalTV", "encoreTVB": "GlobalTV", "Fox Now": "GlobalTV", "Fox+": "GlobalTV", "HBO": "GlobalTV", "Hulu Japan": "GlobalTV", "Hulu": "GlobalTV", "Japonx": "GlobalTV", "JOOX": "GlobalTV", "KKBOX": "GlobalTV", "KKTV": "GlobalTV", "Line TV": "GlobalTV", "myTV SUPER": "GlobalTV", "Pandora": "GlobalTV", "PBS": "GlobalTV", "Pornhub": "GlobalTV", "Soundcloud": "GlobalTV", "ViuTV": "GlobalTV", "Telegram": "Telegram", "Steam": "Steam", "Speedtest": "Speedtest", "PayPal": "PayPal", "Microsoft": "Microsoft", "PROXY": "Proxy", "Apple": "Apple", "Domestic": "Domestic", "Domestic IPs": "Domestic", "LAN": "DIRECT" } port = int(metadata["dst_port"]) if port not in port_list: return "DIRECT" for rule_name in ctx.rule_providers.keys(): if ctx.rule_providers[rule_name].match(metadata): return ruleset_action[rule_name] ip = metadata["dst_ip"] or ctx.resolve_ip(metadata["host"]) if ip == "": return "DIRECT" code = ctx.geoip(ip) if code == "CN": return "Domestic" return "Others" rule-providers: Reject: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Reject.yaml' path: ./Rules/Reject interval: 86400 Special: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Special.yaml' path: ./Rules/Special interval: 86400 Netflix: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Netflix.yaml' path: ./Rules/Media/Netflix interval: 86400 Spotify: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Spotify.yaml' path: ./Rules/Media/Spotify interval: 86400 # YouTube Music: # type: http # behavior: classical # url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/YouTube%20Music.yaml' # path: ./Rules/Media/YouTube_Music # interval: 86400 YouTube: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/YouTube.yaml' path: ./Rules/Media/YouTube interval: 86400 Bilibili: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Bilibili.yaml' path: ./Rules/Media/Bilibili interval: 86400 iQiyi: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/iQiyi.yaml' path: ./Rules/Media/iQiyi interval: 86400 Letv: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Letv.yaml' path: ./Rules/Media/Letv interval: 86400 # MOO: # type: http # behavior: classical # url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/MOO.yaml' # path: ./Rules/Media/MOO # interval: 86400 Netease Music: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Netease%20Music.yaml' path: ./Rules/Media/Netease_Music interval: 86400 Tencent Video: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Tencent%20Video.yaml' path: ./Rules/Media/Tencent_Video interval: 86400 Youku: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Youku.yaml' path: ./Rules/Media/Youku interval: 86400 ABC: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/ABC.yaml' path: ./Rules/Media/ABC interval: 86400 Abema TV: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Abema%20TV.yaml' path: ./Rules/Media/Abema_TV interval: 86400 Amazon: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Amazon.yaml' path: ./Rules/Media/Amazon interval: 86400 Apple News: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Apple%20News.yaml' path: ./Rules/Media/Apple_News interval: 86400 Apple TV: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Apple%20TV.yaml' path: ./Rules/Media/Apple_TV interval: 86400 Bahamut: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Bahamut.yaml' path: ./Rules/Media/Bahamut interval: 86400 BBC iPlayer: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/BBC%20iPlayer.yaml' path: ./Rules/Media/BBC_iPlayer interval: 86400 DAZN: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/DAZN.yaml' path: ./Rules/Media/DAZN interval: 86400 Disney Plus: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Disney%20Plus.yaml' path: ./Rules/Media/Disney_Plus interval: 86400 encoreTVB: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/encoreTVB.yaml' path: ./Rules/Media/encoreTVB interval: 86400 Fox Now: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Fox%20Now.yaml' path: ./Rules/Media/Fox_Now interval: 86400 Fox+: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Fox%2B.yaml' path: ./Rules/Media/Fox+ interval: 86400 HBO: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/HBO.yaml' path: ./Rules/Media/HBO interval: 86400 Hulu Japan: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Hulu%20Japan.yaml' path: ./Rules/Media/Hulu_Japan interval: 86400 Hulu: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Hulu.yaml' path: ./Rules/Media/Hulu interval: 86400 Japonx: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Japonx.yaml' path: ./Rules/Media/Japonx interval: 86400 JOOX: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/JOOX.yaml' path: ./Rules/Media/JOOX interval: 86400 KKBOX: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/KKBOX.yaml' path: ./Rules/Media/KKBOX interval: 86400 KKTV: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/KKTV.yaml' path: ./Rules/Media/KKTV interval: 86400 Line TV: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Line%20TV.yaml' path: ./Rules/Media/Line_TV interval: 86400 myTV SUPER: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/myTV%20SUPER.yaml' path: ./Rules/Media/myTV_SUPER interval: 86400 Pandora: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Pandora.yaml' path: ./Rules/Media/Pandora interval: 86400 PBS: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/PBS.yaml' path: ./Rules/Media/PBS interval: 86400 Pornhub: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Pornhub.yaml' path: ./Rules/Media/Pornhub interval: 86400 Soundcloud: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Soundcloud.yaml' path: ./Rules/Media/Soundcloud interval: 86400 ViuTV: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/ViuTV.yaml' path: ./Rules/Media/ViuTV interval: 86400 Telegram: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Telegram.yaml' path: ./Rules/Telegram interval: 86400 Steam: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Steam.yaml' path: ./Rules/Steam interval: 86400 Speedtest: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Speedtest.yaml' path: ./Rules/Speedtest interval: 86400 PayPal: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/PayPal.yaml' path: ./Rules/PayPal interval: 86400 Microsoft: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Microsoft.yaml' path: ./Rules/Microsoft interval: 86400 PROXY: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Proxy.yaml' path: ./Rules/Proxy interval: 86400 Domestic: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Domestic.yaml' path: ./Rules/Domestic interval: 86400 Apple: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Apple.yaml' path: ./Rules/Apple interval: 86400 Domestic IPs: type: http behavior: ipcidr url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Domestic%20IPs.yaml' path: ./Rules/Domestic_IPs interval: 86400 LAN: type: http behavior: classical url: 'https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/LAN.yaml' path: ./Rules/LAN interval: 86400