Premium 버전 · Clash 문서

기능: Script Shortcuts

Clash Premium의 Rule 모드에서 스크립트 조건을 재사용하려면 Expr과 Starlark를 비교한 뒤 Script Shortcuts로 단축 조건을 정의하세요. 변수, 함수, no-resolve 요구 사항에 맞춰 규칙을 작성할 수 있습니다.

  • Script Shortcuts
  • Expr
  • Starlark
  • no-resolve
  • SCRIPT
Premium 버전
본문 목차

이 과거 문서의 적용 범위

이 문서는 이전 설정을 확인할 수 있도록 원본 Clash / Clash Premium의 과거 사용법을 보존한 자료입니다. “Premium 전용”, “미지원” 또는 플랫폼 제한은 현재 Mihomo의 기능을 뜻하지 않습니다. 이 내용을 그대로 적용해 현재 클라이언트 설정을 덮어쓰거나 권한 관련 명령을 실행하지 마세요.

Mihomo를 사용한다면 현재 Mihomo 설정 문서를 확인하세요. 화면 조작, 설치 및 권한 설정은 사용 중인 클라이언트의 프로젝트 문서를 따르세요.

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)