โมดูล

Chute รองรับไฟล์โมดูลภายนอก (.sgmodule) เพื่อขยายการกำหนดค่าด้วยกฎ สคริปต์ โฮสต์ MitM และการกำหนด DNS ที่ใช้ซ้ำและแชร์ได้ โมดูลทำตามรูปแบบโมดูล Surge

โมดูลถูกกำหนดในส่วน [Module]:

[Module]
https://example.com/my-module.sgmodule
/Users/me/.chute/custom-module.sgmodule
~/.chute/another-module.sgmodule

โมดูลแบบ http:// และ https:// ถูกดึงจากระยะไกล ส่วนไฟล์ในเครื่องให้เขียนเป็นเส้นทางเปล่า ๆ — /path/to/local-module.sgmodule หรือ ~/.chute/local-module.sgmodule — ซึ่งเป็นรูปแบบเดียวกับที่การกำหนดค่าถูกบันทึกกลับ URL แบบ file:/// ก็ใช้ได้เช่นกัน ส่วนไฟล์โมดูลในเครื่องที่อ่านไม่ได้จะถูกข้ามพร้อมคำเตือนในบันทึก

โครงสร้างไฟล์โมดูล

ไฟล์ .sgmodule ทำตามไวยากรณ์เดียวกับไฟล์การกำหนดค่าหลัก ส่วนที่รองรับ:

ส่วน วัตถุประสงค์
[MITM] เพิ่มชื่อโฮสต์ไปยังรายการโฮสต์ MitM
[Script] ลงทะเบียนสคริปต์ JavaScript
[URL Rewrite] เพิ่มกฎ URL Rewrite
[Header Rewrite] เพิ่มกฎ Header Rewrite
[Rule] เพิ่มกฎการจัดเส้นทาง
[Host] เพิ่มการจับคู่ชื่อโฮสต์กับ IP สำหรับ DNS
[Map Local] เพิ่มกฎการตอบกลับจำลอง
[Body Rewrite] เพิ่มกฎ Body Rewrite
[General] ขยายตัวเลือกแบบรายการบางตัว (ดูด้านล่าง)

เพื่อความเข้ากันได้ ส่วน [DNS] ในโมดูลจะถูกยอมรับให้เป็นชื่อแฝงของ [Host]

ข้อมูลเมตาของโมดูล

โมดูลสามารถรวมคำสั่งข้อมูลเมตา (บรรทัดที่เริ่มต้นด้วย #!):

#!name = My Custom Module
#!desc = Blocks ads and trackers for example.com
#!system = ios,macos
คำสั่ง คำอธิบาย
#!name ชื่อโมดูล (แสดงใน UI)
#!desc คำอธิบายโมดูล
#!system ตัวกรองแพลตฟอร์ม: ios, macos (คั่นด้วยคอมมา)
#!arguments ประกาศตัวแปรของโมดูลพร้อมค่าเริ่มต้น (เช่น #!arguments = var1:default1, var2:default2)
#!system_version เวอร์ชันระบบขั้นต่ำของ Surge เก็บไว้เป็นข้อมูลเท่านั้น ไม่ได้บังคับใช้
#!REQUIREMENT ข้อกำหนดเวอร์ชันของ Surge (เขียนเป็น //!REQUIREMENT ได้ด้วย) ถูกบันทึกไว้แต่ละเว้น

#!system เป็นข้อมูลเมตาเพื่อแสดงผลในตัวแก้ไขโมดูลเท่านั้น; ปัจจุบันมันไม่ได้ควบคุมการโหลด — โมดูลจะถูกนำไปใช้บนทุกแพลตฟอร์ม

#!arguments สามารถปรากฏได้หลายครั้ง โดยการประกาศครั้งหลังจะแทนที่ครั้งก่อนหน้า ตัวยึดตำแหน่ง {{{variable}}} ในเนื้อหาโมดูลจะถูกแทนที่ด้วยค่าเริ่มต้นของตัวแปรนั้นจาก #!arguments หรือด้วยสตริงว่างเมื่อตัวแปรนั้นไม่ได้ประกาศค่าเริ่มต้นไว้ ขณะนี้ยังไม่มีแอปใดให้วิธีแทนที่ค่าอาร์กิวเมนต์ของโมดูล ค่าเริ่มต้นที่ประกาศไว้จึงเป็นค่าที่ถูกใช้เสมอ

บรรทัดที่ขึ้นต้นด้วย #!IOS-ONLY, #!MACOS-ONLY หรือ #!TVOS-ONLY จะมีผลเฉพาะบนแพลตฟอร์มนั้นและถูกตัดทิ้งบนแพลตฟอร์มอื่น ไม่ว่าจะอยู่ตรงไหน ทั้งในโมดูลและในไฟล์การกำหนดค่าเอง:

[Rule]
#!IOS-ONLY DOMAIN-SUFFIX,mobile-ads.example,REJECT
#!MACOS-ONLY PROCESS-NAME,Updater,REJECT

เมื่อแอปบันทึกการกำหนดค่า คำนำหน้าจะถูกเก็บไว้ตามที่เขียน บรรทัดที่ถูกยกเว้นบนแพลตฟอร์มนี้จะไม่หายไปจากไฟล์และไม่ถูกเปลี่ยนเป็นบรรทัดหมายเหตุ โปรไฟล์เดียวกันจึงยังใช้งานได้บนแพลตฟอร์มอื่น

ตัวอย่างโมดูล

#!name = Ad Block Module
#!desc = Block common ad domains
#!system = ios,macos

[Rule]
DOMAIN-SUFFIX,doubleclick.net,REJECT
DOMAIN-SUFFIX,googlesyndication.com,REJECT
DOMAIN-SUFFIX,googleadservices.com,REJECT

[Host]
localhost = 127.0.0.1

[MITM]
hostname = *.google-analytics.com

[URL Rewrite]
^https://example\.com/old-api https://example.com/new-api 302

คำสั่ง %APPEND% / %INSERT% ที่อยู่ในค่า hostname ของโมดูลจะถูกตัดออก และชื่อโฮสต์จะถูกรวมเข้ากับรายการ MitM ส่วนคำนำหน้า - สำหรับการยกเว้นชื่อโฮสต์จะยังคงอยู่

ส่วน [General] ของโมดูลสามารถขยายตัวเลือกแบบรายการห้าตัวของการกำหนดค่าที่กำลังทำงาน ได้แก่ skip-proxy, tun-excluded-routes, tun-included-routes, dns-server และ always-real-ip ด้วย %APPEND% (เพิ่มท้ายรายการ) หรือ %INSERT% (เพิ่มหน้ารายการ) การรวมเกิดขึ้นกับทั้งห้าตัว ส่วนทันเนลของแพลตฟอร์มใดอ่านรายการเส้นทางทั้งสองนั้น อธิบายไว้ในเส้นทางที่รวม และเส้นทางที่ยกเว้น ค่าจะถูกรวมเมื่อโมดูลถูกนำไปใช้ และถูกถอนออกเมื่อโมดูลถูกลบหรือปิดใช้งาน ค่าที่ไม่มีคำสั่งกำกับจะถูกเพิ่มท้ายรายการเช่นกันพร้อมข้อความแจ้ง เพราะไม่รองรับการแทนที่ทั้งรายการ ส่วนคีย์อื่นใน [General] จะถูกละเว้นพร้อมข้อความแจ้ง

[General]
skip-proxy = %APPEND% *.corp.example, 10.20.0.0/16

วงจรชีวิตโมดูล

  • โมดูลถูกโหลดหลังจากแยกวิเคราะห์การกำหนดค่าหลัก
  • กฎ สคริปต์ โฮสต์ MitM และโฮสต์ DNS จากโมดูลถูกเพิ่มไปยังตัวจัดการรันไทม์
  • บรรทัด [Rule] ของโมดูลจะทำงานหลังกฎอัตโนมัติของ Tailscale และก่อนกฎของการกำหนดค่าเอง ตามลำดับการโหลดโมดูล เหมือนใน Surge ดังนั้น REJECT ของโมดูลบล็อกโฆษณาจะไม่ถูกกฎก่อนหน้าในโปรไฟล์บดบัง
  • การรวม [Map Local], [Body Rewrite] และ [General] จากโมดูลจะถูกนำไปใช้อีกครั้งหลังโหลดการกำหนดค่าใหม่
  • เมื่อโมดูลถูกลบหรือปิดใช้งาน กฎ สคริปต์ และโฮสต์ทั้งหมดของมันจะถูกยกเลิกการลงทะเบียน
  • เนื้อหาโมดูลระยะไกลถูกดึงเมื่อทันเนลเริ่มต้น และถูกดึงใหม่เฉพาะเมื่อรายการ URL ใน [Module] เปลี่ยนแปลงในการโหลดการกำหนดค่าใหม่เท่านั้น
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

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

results matching ""

    No results matching ""