ชุดกฎ

คุณสามารถใช้ชุดกฎจาก URL, ผู้ให้บริการกฎ (rule provider) ที่กำหนดค่าไว้ หรือส่วนแบบฝังในไฟล์การกำหนดค่าเอง Chute ยังมีชุดกฎภายในสองชุด

ชุดกฎภายใน

SYSTEM

RULE-SET,SYSTEM,DIRECT

รวมกฎสำหรับคำขอส่วนใหญ่ที่ส่งโดย macOS และ iOS เอง คำขอที่ส่งโดย App Store, iTunes และบริการเนื้อหาอื่น ๆ จะไม่รวมอยู่

USER-AGENT,*com.apple.mobileme.fmip1
USER-AGENT,*WeatherFoundation*
USER-AGENT,%E5%9C%B0%E5%9B%BE*
USER-AGENT,%E8%AE%BE%E7%BD%AE*
USER-AGENT,com.apple.geod*
USER-AGENT,com.apple.Maps
USER-AGENT,FindMyFriends*
USER-AGENT,FindMyiPhone*
USER-AGENT,FMDClient*
USER-AGENT,FMFD*
USER-AGENT,fmflocatord*
USER-AGENT,geod*
USER-AGENT,locationd*
USER-AGENT,Maps*
DOMAIN,api.smoot.apple.com
DOMAIN,captive.apple.com
DOMAIN,configuration.apple.com
DOMAIN,guzzoni.apple.com
DOMAIN,smp-device-content.apple.com
DOMAIN,xp.apple.com
DOMAIN-SUFFIX,ess.apple.com
DOMAIN-SUFFIX,push-apple.com.akadns.net
DOMAIN-SUFFIX,push.apple.com
DOMAIN,aod.itunes.apple.com
DOMAIN,mesu.apple.com
DOMAIN,api.smoot.apple.cn
DOMAIN,gs-loc.apple.com
DOMAIN,mvod.itunes.apple.com
DOMAIN,streamingaudio.itunes.apple.com
DOMAIN-SUFFIX,lcdn-locator.apple.com
DOMAIN-SUFFIX,lcdn-registration.apple.com
DOMAIN-SUFFIX,ls.apple.com
PROCESS-NAME,trustd

กฎเหล่านี้อาจถูกอัปเดตพร้อมกับการอัปเดต Chute โปรดดูคำอธิบายในซอฟต์แวร์เพื่อรับกฎย่อยล่าสุด


LAN

RULE-SET,LAN,DIRECT

รวมกฎสำหรับที่อยู่ IP LAN และส่วนต่อท้าย .local โปรดทราบว่าชุดกฎนี้จะกระตุ้นการค้นหา DNS

DOMAIN-SUFFIX,local
IP-CIDR,192.168.0.0/16
IP-CIDR,10.0.0.0/8
IP-CIDR,172.16.0.0/12
IP-CIDR,127.0.0.0/8
IP-CIDR,100.64.0.0/10
IP-CIDR,255.0.0.0/8
IP-CIDR,fc00::/7
IP-CIDR,::1/128
IP-CIDR,fe80::/10

ชุดกฎภายนอก

ชุดกฎจาก URL แบบ http(s) ไฟล์ชุดกฎควรเป็นไฟล์ข้อความ แต่ละบรรทัดประกอบด้วยการประกาศกฎโดยไม่มีนโยบาย

หมายเหตุ: ไฟล์ชุดกฎรองรับเฉพาะประเภทกฎระดับปลายทาง (leaf) เท่านั้น บรรทัดที่เป็นกฎตรรกะ (AND/OR/NOT), SCRIPT และ DOMAIN-SET จะถูกตัดทิ้ง ส่วนบรรทัด RULE-SET ในไฟล์ที่ดึงมาด้วย RULE-SET,<url> นั้นไม่มีผลใด ๆ: ตัวแยกวิเคราะห์เก็บไว้เฉพาะค่าในตัว SYSTEM และ LAN และแม้แต่สองค่านั้นก็ไม่เคยถูกกางออก บรรทัดนั้นจึงไม่มีวันจับคู่ ส่วนการอ้างอิงแบบซ้อนกันนั้นใช้งานได้ในเพย์โหลดของ [Rule Provider] และในส่วน [Ruleset] แบบฝัง ส่วนบรรทัดที่เป็น CIDR เปล่า ๆ (เช่น 1.2.4.0/24) จะถูกยอมรับเป็นกฎ IP-CIDR

RULE-SET,https://example.com/my-rules.txt,Proxy
RULE-SET,https://example.com/my-rules.txt,Proxy,update-interval=86400

พารามิเตอร์เสริม update-interval คืออายุสูงสุดเป็นวินาทีที่สำเนาที่ดาวน์โหลดไว้จะมีได้ ไม่มีตัวจับเวลา: การจับคู่ครั้งแรกหลังจากสำเนามีอายุเกินค่านั้นจะดาวน์โหลดสำเนาใหม่ในพื้นหลัง เมื่อโหลดการกำหนดค่า สำเนาในแคชที่ใหม่กว่าค่านั้นจะถูกใช้ตามเดิมโดยไม่ดาวน์โหลด ส่วนสำเนาที่เก่ากว่าค่านั้นจะไม่ถูกใช้ ชุดกฎจึงต้องดาวน์โหลดก่อนจึงจะจับคู่ได้ หากไม่มี update-interval สำเนาในแคชจะถูกเก็บไว้ และชุดกฎจะถูกดาวน์โหลดก็ต่อเมื่อไม่มีสำเนาเท่านั้น เมื่อเขียน no-resolve ไว้บนบรรทัด RULE-SET ตัวเลือกนี้จะมีผลกับกฎตาม IP ทุกข้อในชุด

ตัวอย่างไฟล์ชุดกฎ:

DOMAIN,exampleA.com
DOMAIN,exampleB.com

หากต้องการใช้ไฟล์ในเครื่อง ให้กำหนดรายการในส่วน [Rule Provider] พร้อมพารามิเตอร์ path= แล้วอ้างอิงด้วยชื่อ:

[Rule Provider]
my-rules = type=file, path=/path/to/my-rules.txt, format=native

[Rule]
RULE-SET,my-rules,Proxy

พารามิเตอร์ของผู้ให้บริการกฎ: type (http หรือ file; http ต้องใช้ url=), behavior (classical สำหรับการประกาศกฎ, domain สำหรับชุดโดเมน, ipcidr สำหรับรายการ CIDR เปล่า ๆ — ใช้กับผู้ให้บริการแบบ Clash/mihomo ได้ด้วย ซึ่งเพย์โหลดที่เป็น CIDR เปล่าจะถูกยอมรับ; ค่าเริ่มต้น classical), format (native — หรือ surge — สำหรับบรรทัดกฎแบบ Chute, mihomo-yaml สำหรับเพย์โหลด YAML ของ rule-provider แบบ Clash/mihomo, sing-box-source — หรือ sing-box, source — สำหรับชุดกฎของ sing-box รูปแบบ source (JSON); ค่าเริ่มต้น mihomo-yaml) และ interval (วินาที ค่าเริ่มต้น 86400) interval ที่เป็นบวกจะดาวน์โหลดเพย์โหลดใหม่ทุกครั้งที่โหลดการกำหนดค่า และสำเนาในแคชที่เก่ากว่าค่านั้นจะไม่ถูกใช้ ค่า 0 จะดาวน์โหลดเฉพาะเมื่อไม่มีสำเนาในแคช ส่วนค่าติดลบจะไม่ดาวน์โหลดเลย — แม้แต่สำหรับ update-interval ของบรรทัด RULE-SET — ผู้ให้บริการจึงไม่ทำงานเว้นแต่จะมีสำเนาในแคชอยู่ ขณะที่ Chute ทำงานอยู่ ผู้ให้บริการจะถูกรีเฟรชผ่านบรรทัด RULE-SET ที่ระบุชื่อของมันและมี update-interval เท่านั้น: การจับคู่ครั้งแรกหลังจากสำเนาในแคชมีอายุเกินค่านั้นจะดึงสำเนาใหม่จากแหล่งที่มาของผู้ให้บริการเอง บรรทัดใน [Rule Provider] ไม่มีคีย์ที่บรรจุกฎ ดังนั้น type=inline ที่นั่นจะได้ผู้ให้บริการที่ว่างเปล่า ให้เขียนชุดกฎแบบฝังเป็นส่วน [Ruleset <name>]

policy=<name> ดาวน์โหลดเพย์โหลดผ่านนโยบายหรือกลุ่มนั้น (proxy: ของ mihomo) เช่น my-rules = type=http, url=https://example.com/rules.yaml, policy=Proxy ถ้าเป็นกลุ่มจะใช้ตัวที่เลือกอยู่ตอนเริ่มดาวน์โหลด หากไม่ระบุหรือเป็น policy=DIRECT จะดึงเพย์โหลดโดยตรง ส่วนชื่อที่ไม่ได้กำหนดไว้จะปฏิเสธการดาวน์โหลดแทนการดึงโดยตรง

GET /api/rules/providers ใน HTTP control API จะรายงานทุกรายการใน [Rule Provider] และทุกส่วน [Ruleset]: โหลดสำเร็จหรือไม่ เหตุผลที่โหลดไม่สำเร็จ และคำเตือนจากการแปลงใด ๆ ค่า rule_count ของมันนับบรรทัดของส่วน [Ruleset] และจะคงเป็น 0 สำหรับผู้ให้บริการที่ดาวน์โหลดมาหรือมาจากไฟล์ RULE-SET,<url> และ DOMAIN-SET,<url> ไม่อยู่ในรายการนี้ การดาวน์โหลดรายการเหล่านี้ที่ล้มเหลวจะปรากฏในบันทึกเท่านั้น

บน iPhone, Apple TV และ Android เพย์โหลดของผู้ให้บริการกฎ — ไม่ว่าจะดาวน์โหลดมาหรืออ่านจากไฟล์ — มีเพดานขนาด เพราะทันเนลบนแพลตฟอร์มเหล่านั้นมีหน่วยความจำเหลือน้อยมาก: 400 KB สำหรับ sing-box-source และ 1 MB สำหรับรูปแบบอื่นทั้งหมด เพย์โหลดที่เกินเพดานจะไม่ถูกโหลด และสถานะของผู้ให้บริการจะบอกเหตุผล RULE-SET,<url> และ DOMAIN-SET,<url> ถูกอ่านโดยไม่ต้องแปลงในหน่วยความจำและไม่มีเพดาน ส่วนบนเดสก์ท็อปไม่มีเพดาน ชุดกฎสาธารณะขนาดใหญ่ (geosite/cn และพวกเดียวกัน) จึงโหลดเป็นผู้ให้บริการได้เฉพาะบนเดสก์ท็อปเท่านั้น บนแพลตฟอร์มเหล่านี้ ดัชนีชุดกฎจะเปิดการเชื่อมต่อฐานข้อมูลพร้อมกันได้สูงสุด 24 รายการ (เดสก์ท็อป 128 รายการ)

เมื่อเพย์โหลด mihomo-yaml แยกวิเคราะห์ไม่ได้ แต่ดูเหมือนรายการบรรทัดกฎธรรมดา จะถูกอ่านเป็น native แทน และบันทึกข้อความแจ้งไว้ บรรทัดของเพย์โหลด mihomo แบบ classical ไม่ได้ระบุนโยบาย ดังนั้นสิ่งที่ตามหลังค่าของบรรทัดจะถูกอ่านเป็นพารามิเตอร์: no-resolve จะถูกเก็บไว้ ส่วนพารามิเตอร์อื่นใด — เช่น src ของ mihomo — จะถูกตัดทิ้ง กฎตรรกะและกฎ …-REGEX จะเก็บส่วนที่เหลือของบรรทัดไว้เป็นค่าของมัน

เพย์โหลดที่เป็นอ็อบเจกต์ JSON จะถูกลองอ่านเป็นชุดกฎ sing-box ก่อน ดังนั้นชุดกฎ sing-box ที่ประกาศด้วยรูปแบบค่าเริ่มต้นก็โหลดได้เช่นกัน ในชุดกฎ sing-box กฎที่ตัวจับคู่ทั้งหมดเป็นชนิดเดียวกันจะกลายเป็นหนึ่งบรรทัดต่อค่า ชนิดต่าง ๆ ได้แก่: ปลายทาง (domain, domain_suffix, domain_keyword, domain_regex, ip_cidr, geoip และ ip_is_private ซึ่งจะกลายเป็นช่วงที่อยู่ส่วนตัวพร้อม no-resolve), พอร์ตปลายทาง (port, port_range), ที่อยู่ต้นทาง (source_ip_cidr, source_ip_is_private), พอร์ตต้นทาง (source_port, source_port_range) และ protocol, network, process_name และ process_path ซึ่งแต่ละตัวเป็นชนิดของตัวเอง clash_mode: rule จะถูกละเว้น เพราะโหมดกฎเป็นโหมดเดียวที่ Chute ใช้ทำงาน ส่วน clash_mode ค่าอื่นใดจะทำให้กฎนั้นถูกตัดทิ้ง ส่วนกฎที่รวมหลายชนิด (เช่น โดเมนกับพอร์ต) กฎ invert และกฎ logical ไม่สามารถเป็นบรรทัดเดียวได้ จึงถูกข้ามและแสดงอยู่ในคำเตือนของชุดกฎนั้น รูปแบบไบนารีที่คอมไพล์แล้วอ่านไม่ได้ ผู้ให้บริการแบบ .srs ของ sing-box จะถูกตรวจพบว่าเป็นไบนารี — จาก format=srs หรือ format=binary หรือจากตำแหน่งที่ลงท้ายด้วย .srs — และจะไม่ทำงาน โดยมีสถานะบอกให้ชี้ไปยังรูปแบบ source (.json) ของ sing-box แทน ส่วน .mrs ของ mihomo ไม่ถูกตรวจจับ: เพย์โหลดของมันเพียงแค่ถอดรหัสเป็นข้อความไม่ได้ ชุดกฎจึงไม่ทำงานภายใต้สถานะทั่วไปว่าดาวน์โหลดไม่สำเร็จ บน macOS ตัวนำเข้าจะเปลี่ยนชุดกฎไบนารีให้ชี้ไปยังเพย์โหลดแบบ source ที่วางอยู่ข้างกันเมื่อผู้เผยแพร่มีให้ ส่วนบน iOS, Apple TV และ Android จะไม่ทำ

RULE-SET และ DOMAIN-SET ใช้เป็นกฎย่อยภายในกฎตรรกะ AND/OR/NOT ได้ — NOT,((RULE-SET,cn_ip)),Proxy ใช้งานได้ และชุดกฎที่ซ้อนอยู่จะถูกจับคู่ด้วยตัวกรองเพย์โหลดเดียวกับที่เขียนแยกเดี่ยว


ชุดกฎแบบฝังในไฟล์

ส่วน [Ruleset <name>] เก็บชุดกฎไว้ในไฟล์การกำหนดค่าเอง (ไวยากรณ์ของ Surge) แต่ละบรรทัดคือการประกาศกฎที่ไม่มีนโยบาย เหมือนในไฟล์ชุดกฎ และกฎจะอ้างถึงส่วนนี้ด้วยชื่อ:

[Ruleset Streaming]
DOMAIN-SUFFIX,netflix.com
IP-CIDR,198.51.100.0/24,no-resolve

[Rule]
RULE-SET,Streaming,Proxy

ส่วนนี้ทำงานเหมือนรายการ [Rule Provider] ที่มี type=inline และ format=native และจะถูกบันทึกกลับเป็นส่วน ชุดกฎสองชุดที่มีชื่อเดียวกันถือเป็นข้อผิดพลาดในการกำหนดค่า

ส่วนแบบฝัง (เช่นเดียวกับเพย์โหลดของผู้ให้บริการกฎ) อาจมี RULE-SET,SYSTEM, RULE-SET,LAN หรือ RULE-SET,<ส่วนแบบฝังอื่น> ซึ่งจะถูกขยายเมื่อโหลดกฎ ลึกได้ไม่เกิน 8 ชั้น การอ้างอิงที่จะทำให้เกิดวงวน หรือที่อ้างถึงชุดกฎแบบ file หรือ http ชุดโดเมน หรือ DOMAIN-SET จะถูกทิ้งพร้อมคำเตือน


ชุดโดเมน

ชุดโดเมนคล้ายกับชุดกฎภายนอกแต่เฉพาะสำหรับชื่อโดเมน และใช้รูปแบบไฟล์ที่กะทัดรัดกว่า

DOMAIN-SET,https://example.com/domains.txt,DIRECT
DOMAIN-SET,https://example.com/domains.txt,DIRECT,update-interval=86400

ฟิลด์แรกหลังประเภทต้องเป็น URL แบบ http(s) ไฟล์ชุดโดเมนประกอบด้วยโดเมนเปล่า หนึ่งโดเมนต่อบรรทัด (ไม่ใช่การประกาศกฎ):

# exact domain
example.com
# the domain and all of its subdomains
.example.org
+.example.net

บรรทัดที่ขึ้นต้นด้วย # หรือ // เป็นหมายเหตุ

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก

results matching ""

    No results matching ""