- 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,Disney Plus,Disney - RULE-SET,Bilibili,Asian TV - RULE-SET,IQ,Asian TV - RULE-SET,IQIYI,Asian TV - RULE-SET,Letv,Asian TV # - RULE-SET,MOO,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,Apple News,Global TV - RULE-SET,Apple TV,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,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,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,Telegram,Telegram - RULE-SET,Steam,Steam - RULE-SET,Speedtest,Speedtest - RULE-SET,PayPal,PayPal - RULE-SET,Microsoft,Microsoft - RULE-SET,Apple,Apple - RULE-SET,Google FCM,Google FCM - RULE-SET,Scholar,Scholar - 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", "Spotify": "Spotify", "YouTube": "YouTube", "Disney Plus": "Disney", "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", "Apple News": "Global TV", "Apple TV": "Global TV", "Bahamut": "Global TV", "BBC iPlayer": "Global TV", "DAZN": "Global TV", "Discovery Plus": "Global TV", "encoreTVB": "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", "Pandora": "Global TV", "PBS": "Global TV", "Pornhub": "Global TV", "Soundcloud": "Global TV", "ViuTV": "Global TV", "Telegram": "Telegram", "Steam": "Steam", "Speedtest": "Speedtest", "PayPal": "PayPal", "Microsoft": "Microsoft", "Apple": "Apple", "Google FCM": "Google FCM", "Scholar": "Scholar", "PROXY": "Proxy", "Domestic": "Domestic", "Domestic IPs": "Domestic", "LAN": "DIRECT" } port = int(metadata["dst_port"]) if metadata["network"] == "UDP": if 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, 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"] == "": return "DIRECT" 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://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Reject.yaml' path: ./Rules/Reject interval: 86400 Special: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Special.yaml' path: ./Rules/Special interval: 86400 Netflix: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Netflix.yaml' path: ./Rules/Media/Netflix interval: 86400 Spotify: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Spotify.yaml' path: ./Rules/Media/Spotify interval: 86400 # YouTube Music: # type: http # behavior: classical # url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/YouTube%20Music.yaml' # path: ./Rules/Media/YouTube_Music # interval: 86400 YouTube: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/YouTube.yaml' path: ./Rules/Media/YouTube interval: 86400 Bilibili: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Bilibili.yaml' path: ./Rules/Media/Bilibili interval: 86400 IQ: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/IQ.yaml' path: ./Rules/Media/IQI interval: 86400 IQIYI: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/IQIYI.yaml' path: ./Rules/Media/IQYI interval: 86400 Letv: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Letv.yaml' path: ./Rules/Media/Letv interval: 86400 # MOO: # type: http # behavior: classical # url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/MOO.yaml' # path: ./Rules/Media/MOO # interval: 86400 Netease Music: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Netease%20Music.yaml' path: ./Rules/Media/Netease_Music interval: 86400 Tencent Video: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Tencent%20Video.yaml' path: ./Rules/Media/Tencent_Video interval: 86400 Youku: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Youku.yaml' path: ./Rules/Media/Youku interval: 86400 WeTV: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/WeTV.yaml' path: ./Rules/Media/WeTV interval: 86400 ABC: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/ABC.yaml' path: ./Rules/Media/ABC interval: 86400 Abema TV: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Abema%20TV.yaml' path: ./Rules/Media/Abema_TV interval: 86400 Amazon: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Amazon.yaml' path: ./Rules/Media/Amazon interval: 86400 Apple News: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Apple%20News.yaml' path: ./Rules/Media/Apple_News interval: 86400 Apple TV: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Apple%20TV.yaml' path: ./Rules/Media/Apple_TV interval: 86400 Bahamut: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Bahamut.yaml' path: ./Rules/Media/Bahamut interval: 86400 BBC iPlayer: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/BBC%20iPlayer.yaml' path: ./Rules/Media/BBC_iPlayer interval: 86400 DAZN: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/DAZN.yaml' path: ./Rules/Media/DAZN interval: 86400 Discovery Plus: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Discovery%20Plus.yaml' path: ./Rules/Media/Discovery_Plus interval: 86400 Disney Plus: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Disney%20Plus.yaml' path: ./Rules/Media/Disney_Plus interval: 86400 encoreTVB: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/encoreTVB.yaml' path: ./Rules/Media/encoreTVB interval: 86400 Fox Now: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Fox%20Now.yaml' path: ./Rules/Media/Fox_Now interval: 86400 Fox+: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Fox%2B.yaml' path: ./Rules/Media/Fox+ interval: 86400 HBO Go: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/HBO%20Go.yaml' path: ./Rules/Media/HBO_Go interval: 86400 HBO Max: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/HBO%20Max.yaml' path: ./Rules/Media/HBO_Max interval: 86400 Hulu Japan: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Hulu%20Japan.yaml' path: ./Rules/Media/Hulu_Japan interval: 86400 Hulu: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Hulu.yaml' path: ./Rules/Media/Hulu interval: 86400 Japonx: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Japonx.yaml' path: ./Rules/Media/Japonx interval: 86400 JOOX: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/JOOX.yaml' path: ./Rules/Media/JOOX interval: 86400 KKBOX: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/KKBOX.yaml' path: ./Rules/Media/KKBOX interval: 86400 KKTV: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/KKTV.yaml' path: ./Rules/Media/KKTV interval: 86400 Line TV: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Line%20TV.yaml' path: ./Rules/Media/Line_TV interval: 86400 myTV SUPER: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/myTV%20SUPER.yaml' path: ./Rules/Media/myTV_SUPER interval: 86400 Pandora: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Pandora.yaml' path: ./Rules/Media/Pandora interval: 86400 PBS: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/PBS.yaml' path: ./Rules/Media/PBS interval: 86400 Pornhub: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Pornhub.yaml' path: ./Rules/Media/Pornhub interval: 86400 Soundcloud: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/Soundcloud.yaml' path: ./Rules/Media/Soundcloud interval: 86400 ViuTV: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Media/ViuTV.yaml' path: ./Rules/Media/ViuTV interval: 86400 Telegram: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Telegram.yaml' path: ./Rules/Telegram interval: 86400 Steam: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Steam.yaml' path: ./Rules/Steam interval: 86400 Speedtest: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Speedtest.yaml' path: ./Rules/Speedtest interval: 86400 PayPal: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/PayPal.yaml' path: ./Rules/PayPal interval: 86400 Microsoft: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Microsoft.yaml' path: ./Rules/Microsoft interval: 86400 PROXY: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Proxy.yaml' path: ./Rules/Proxy interval: 86400 Domestic: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Domestic.yaml' path: ./Rules/Domestic interval: 86400 Apple: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Apple.yaml' path: ./Rules/Apple interval: 86400 Google FCM: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Google%20FCM.yaml' path: ./Rules/Google FCM interval: 86400 Scholar: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Scholar.yaml' path: ./Rules/Scholar interval: 86400 Domestic IPs: type: http behavior: ipcidr url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/Domestic%20IPs.yaml' path: ./Rules/Domestic_IPs interval: 86400 LAN: type: http behavior: classical url: 'https://raw.lhie1.com/lhie1/Rules/master/Clash/Provider/LAN.yaml' path: ./Rules/LAN interval: 86400