Clash Premium은 Python3 기반 스크립트 기능을 구현해 사용자가 동적이고 유연하게 패킷 정책을 선택할 수 있게 합니다.
하나의 Python 스크립트로 전체 규칙 매칭 엔진을 제어하거나, Shortcuts를 정의해 일반 규칙과 함께 사용할 수 있습니다. 이 페이지는 후자를 설명합니다. 전자는 스크립트 문서를 참고하세요.
이 기능을 사용하면 rules 모드에서 스크립트를 사용할 수 있습니다. 기본적으로 SCRIPT 규칙은 DNS 확인을 수행합니다. 확인을 막으려면 규칙 뒤에 no-resolve 옵션을 추가하세요(예: SCRIPT,quic,DIRECT,no-resolve).
yaml
mode: Rule
script:
engine: expr # or starlark (10x to 20x slower)
shortcuts:
quic: network == 'udp' and dst_port == 443
curl: resolve_process_name() == 'curl'
# curl: resolve_process_path() == '/usr/bin/curl'
rules:
- SCRIPT,quic,REJECT평가 엔진
Expr는 Script Shortcuts의 기본 엔진이며 Starlark보다 10배에서 20배 빠릅니다.
Starlark는 Python과 유사한 구성 언어이며 Script Shortcuts에도 사용할 수 있습니다.
변수
- network: string
- type: string
- src_ip: string
- dst_ip: string
- src_port: uint16
- dst_port: uint16
- inbound_port: uint16
- host: string
- process_path: string
경고
현재 Starlark에는 process_path 변수가 없습니다.
함수
ts
type resolve_ip = (host: string) => string // ip string
type in_cidr = (ip: string, cidr: string) => boolean // ip in cidr
type in_ipset = (name: string, ip: string) => boolean // ip in ipset
type geoip = (ip: string) => string // country code
type match_provider = (name: string) => boolean // in rule provider
type resolve_process_name = () => string // find process name (curl .e.g)
type resolve_process_path = () => string // find process path (/usr/bin/curl .e.g)