Chute Dashboard
Chute Dashboard เป็นแอป macOS ฟรีที่เชื่อมต่อกับ Chute ที่กำลังทำงาน — Chute iOS ผ่าน Wi-Fi หรือสาย USB หรือ Chute Mac บนเครื่องเดียวกัน — และแสดงว่าอินสแตนซ์นั้นกำลังทำอะไร: ทุกการเชื่อมต่อพร้อมกฎและนโยบายที่ตัดสินมัน คำขอและการตอบกลับที่ถอดรหัสแล้วสำหรับโฮสต์ที่อยู่ในขอบเขตการถอดรหัส HTTPS คำตอบ DNS และเซสชัน UDP นอกจากนี้ยังให้คุณปรับแต่งทราฟฟิกขณะดูได้: รายการโฮสต์ MitM และกฎเขียนใหม่กับ Mock ทุกตระกูลแก้ไขได้แบบสด
นี่ไม่ใช่คอนโซลเว็บ คอนโซลนั้นเคอร์เนลเป็นผู้ให้บริการเองและเปิดในเบราว์เซอร์ ส่วน Dashboard เป็นแอปแยกที่คุยกับเคอร์เนลผ่านช่องทางควบคุมแบบไบนารี จึงต้องใช้
external-controller-accessบนอุปกรณ์ ไม่ใช่external-http-controllerทั้งสองมีส่วนที่ทับซ้อนกัน และต่างก็มีสิ่งที่อีกฝ่ายไม่มี — ดูสิ่งที่ Dashboard เข้าไม่ถึง
อินเทอร์เฟซของ Dashboard แปลเป็นภาษาเดียวกับคู่มือนี้ ยกเว้นภาษาอาหรับ บนระบบภาษาอาหรับจะแสดงเป็นภาษาอังกฤษ
อนุญาตให้ Dashboard เชื่อมต่อ
จะไม่มีอะไรรับฟังจนกว่าอุปกรณ์จะอนุญาต
Chute iOS — ในตัวแก้ไขการกำหนดค่า เปิด ตัวควบคุมภายนอก → การเข้าถึงตัวควบคุมภายนอก:
- เปิด อนุญาตให้ Chute Dashboard/Chute CLI เชื่อมต่อ
- ตั้ง พอร์ต และ รหัสผ่าน รหัสผ่านต้องไม่ว่าง และต้องเป็นของคุณเอง: ตัวรับฟังที่เข้าถึงได้จากเครือข่ายจะปฏิเสธการเริ่มทำงานหากรหัสผ่านว่างหรือเป็นค่าเริ่มต้น
- ปล่อย อนุญาตการเข้าถึงจาก Wi-Fi ไว้ปิดถ้าไม่จำเป็น ปิดเป็นค่าเริ่มต้น หมายความว่าตัวรับฟังอยู่บนโทรศัพท์เอง — สาย USB ยังเข้าถึงได้ แต่อุปกรณ์อื่นบน Wi-Fi เข้าไม่ถึง เปิดหมายความว่าใครก็ตามบนเครือข่ายที่รู้รหัสผ่านอ่านทุกอย่างที่รอบนี้เห็นได้
- บันทึก แล้วเริ่ม (หรือเริ่มใหม่) อุโมงค์ แผงควบคุมจะแสดง พอร์ตการเข้าถึงภายนอก:
<พอร์ต>— บรรทัดนี้คือการยืนยันว่าตัวรับฟังทำงานแล้ว
Chute Mac — ค่าสามค่าเดียวกันอยู่ใน [General]:
[General]
external-controller-access = password@127.0.0.1:6170
127.0.0.1 จำกัดไว้เฉพาะ Mac ที่คุณใช้อยู่ ซึ่งคือสิ่งที่ Dashboard บน Mac เครื่องเดียวกันต้องการ ที่อยู่ LAN หรือ 0.0.0.0 จะเปิดให้เครื่องอื่นด้วย ส่วน General ของหน้าต่างการกำหนดค่ามีช่องสำหรับคีย์เดียวกันนี้
การเชื่อมต่อ
Dashboard เปิดด้วยหน้าต่าง Chute แดชบอร์ดใหม่ แต่ละการเชื่อมต่อมีหน้าต่างของตัวเอง จึงเปิดหลายอุปกรณ์พร้อมกันได้ มีสองทางเข้า:
| ช่อง | เมื่อใด | |
|---|---|---|
| ระยะไกล | โฮสต์, พอร์ต, รหัสผ่าน | ที่อยู่ Wi-Fi ของอุปกรณ์ (iPhone: การตั้งค่า → Wi-Fi → ⓘ) หรือ 127.0.0.1 สำหรับ Chute Mac บนเครื่องนี้ ต้องเปิด อนุญาตการเข้าถึงจาก Wi-Fi บนโทรศัพท์ |
| USB | พอร์ต, รหัสผ่าน | iPhone เสียบสายกับ Mac นี้และเชื่อถือเครื่องนี้แล้ว ใส่พอร์ตเดียวกับที่กำหนดค่าไว้ — Dashboard หาช่องทางสายเอง ใช้ได้แม้ อนุญาตการเข้าถึงจาก Wi-Fi ปิดอยู่ และเห็นทราฟฟิกเซลลูลาร์ด้วย เพราะโทรศัพท์ไม่จำเป็นต้องอยู่บน Wi-Fi เลย |
เครื่องที่คุณเคยเชื่อมต่อจะถูกจำไว้ใต้ เครื่อง: สำหรับครั้งถัดไป
ถ้ารหัสผ่านผิด หน้าต่างจะแจ้ง รหัสผ่านไม่ตรงกัน ถ้าอุปกรณ์หายไป — อุโมงค์หยุด สายถูกดึงออก โทรศัพท์เปลี่ยนเครือข่าย — หน้าต่าง Dashboard จะแจ้ง การเชื่อมต่อถูกปิด และเสนอ เชื่อมต่อใหม่ ไม่มีการเชื่อมต่อใหม่อัตโนมัติ
หน้าต่าง
แถบเครื่องมือสลับระหว่างห้ามุมมอง — ทำงาน, ล่าสุด, DNS, UDP และ MitM — และ ตัวกรอง แสดงหรือซ่อนแถบตัวกรอง แผงมุมล่างซ้ายคือความเร็วอัปโหลดและดาวน์โหลดแบบสด คลิกเพื่อขยายกราฟ
ในมุมมอง ทำงาน และ ล่าสุด แถบเครื่องมือยังมีสวิตช์สองตัวที่ทำงานกับเคอร์เนลที่กำลังทำงาน เหมือนสวิตช์ในแอปทุกประการ:
- บันทึกทราฟฟิก → ปิดการบันทึกทราฟฟิก: เปิดการจับเนื้อหาคำขอและการตอบกลับ (การตั้งค่า
replica) ถ้าไม่เปิด แถวยังคงปรากฏพร้อมข้อมูลเส้นทาง แต่แท็บข้อมูลจะว่างเปล่า - เปิด MitM (N กฎ) → ปิด MitM (N กฎ): เปิดการถอดรหัส HTTPS สำหรับโฮสต์ N รายการในรายการโฮสต์ MitM สวิตช์นี้ไม่ทำอะไรที่มีประโยชน์จนกว่าอุปกรณ์จะมี CA ที่เชื่อถือและโฮสต์อย่างน้อยหนึ่งรายการ — ดูหน้าการถอดรหัส HTTPS
สวิตช์ทั้งสองไม่แก้ไฟล์กำหนดค่า การเริ่มใหม่จะกลับไปเป็นตามที่ไฟล์ระบุ
แถบด้านข้างจัดกลุ่มการเชื่อมต่อตามไคลเอนต์: ไคลเอนต์ทั้งหมด จากนั้น ท้องถิ่น สำหรับไคลเอนต์บนอุปกรณ์เอง และ ระยะไกล สำหรับเครื่องอื่นที่ใช้ Chute นี้เป็นพร็อกซี การเลือกรายการใดจะจำกัดทุกรายการให้เหลือแค่นั้น เมื่ออุปกรณ์เป็น Chute Mac ไคลเอนต์ท้องถิ่นคือแอปพลิเคชันพร้อมชื่อและไอคอน และเมนูบริบทมี แสดงใน Finder
ทำงานและล่าสุด
ทำงาน คือสิ่งที่เปิดอยู่ตอนนี้ ล่าสุด คือประวัติของอุปกรณ์ ใหม่สุดก่อน อ่านกลับจากบันทึกของรอบนี้ ทั้งสองใช้คอลัมน์ชุดเดียวกัน:
| คอลัมน์ | |
|---|---|
| ID | หมายเลขการเชื่อมต่อของเคอร์เนล — หมายเลขเดียวกับที่คอนโซลและแอปแสดง |
| วันที่, ระยะเวลา | เริ่มเมื่อไร และดำเนินมาหรือใช้เวลานานเท่าใด |
| ไคลเอนต์ | โปรเซส (Chute Mac) หรือที่อยู่ท้องถิ่น |
| เมธอด, เซิร์ฟเวอร์, สถานะ | บรรทัดคำขอและคำตอบ แยกวิเคราะห์จากคำขอที่จับได้ |
| นโยบาย | นโยบายที่กฎเลือก |
| อัปโหลด, ดาวน์โหลด | จำนวนไบต์แต่ละทิศทาง |
| แฟล็ก | สิ่งที่ Chute ทำกับการเชื่อมต่อ — ดูคำอธิบายด้านล่าง |
คอลัมน์ แฟล็ก คือวิธีเร็วที่สุดในการรู้ว่ากฎที่คุณเขียนถูกใช้อยู่หรือไม่:
| แฟล็ก | ความหมาย |
|---|---|
M |
ถอดรหัสแล้ว (ดักจับด้วย MitM) |
H |
ส่วนหัวถูกแก้ไข |
B |
เนื้อหาถูกแก้ไข |
R |
กฎเขียนใหม่ทำงาน |
K |
ตอบโดย Mock ของ Map Local แทนเซิร์ฟเวอร์ |
ล่าสุดเก็บได้สูงสุด 5,000 แถว โหลดรายการเก่ากว่า ท้ายรายการจะดึงหน้าถัดไปจากอุปกรณ์ และรายการรีเฟรชเองทุกสองสามวินาที เมื่อรายการทำงานยาวเกินกว่าแพ็กเก็ตควบคุมหนึ่งชุดจะบรรจุได้ จะมีหมายเหตุใต้ตารางว่าเคอร์เนลตัดรายการ — แถวเหล่านั้นยังอยู่บนอุปกรณ์ และล่าสุดจะแสดงเมื่อปิดแล้ว
คลิกขวาที่แถวเพื่อ คัดลอกคำสั่ง curl, ส่งออกที่เลือกเป็น HAR… / CSV… และ ส่งออกทั้งหมดเป็น HAR… / CSV… แถวที่ทำงานอยู่มี ตัดการเชื่อมต่อ เพิ่มมาด้วย ซึ่งปิดการเชื่อมต่อนั้นบนอุปกรณ์
Notice: หนึ่งแถวคือหนึ่งการเชื่อมต่อ ไม่ใช่หนึ่งคำขอ การเชื่อมต่อ keep-alive ที่ส่งหลายคำขอยังคงเป็นแถวเดียว และข้อมูลที่จับได้บรรจุข้อความเหล่านั้นทั้งหมดต่อกัน ส่วนหัวที่แสดงเป็นของคำขอใดคำขอหนึ่ง ดังนั้นเบราว์เซอร์ที่เปิดหน้าหนึ่งจึงสร้างแถวน้อยกว่าจำนวนทรัพยากรของหน้านั้น
แถบตัวกรอง
แถบตัวกรองจำกัดสิ่งที่แสดง ไม่ได้เปลี่ยนสิ่งที่อุปกรณ์บันทึก — สำหรับเรื่องนั้นให้ใช้ [Replica] บนอุปกรณ์
| ตัวควบคุม | ตัวเลือก |
|---|---|
| กรองโฮสต์/URL… | ข้อความที่จับคู่กับโฮสต์และ URL |
| เมธอด | GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, CONNECT |
| สถานะ | 1xx – 5xx |
| ทราฟฟิก | ทำงาน, เสร็จสิ้นแล้ว, ถูกระงับ |
| ประเภท | JSON, HTML, XML, รูปภาพ, ข้อความ, ไบนารี — จากประเภทเนื้อหาของการตอบกลับ |
| ระยะเวลา | < 100ms, 100ms–1s, 1s–5s, > 5s |
| ขนาด | < 1 KB, 1–100 KB, 100 KB–1 MB, > 1 MB |
| เฉพาะ MitM | เฉพาะการเชื่อมต่อที่ถอดรหัสแล้ว |
| แก้ไขแล้ว | การเชื่อมต่อที่กฎเปลี่ยน — มี H, B, R, K อย่างใดอย่างหนึ่ง |
ล้างตัวกรอง กลับไปแสดงทุกอย่าง
รายละเอียดการเชื่อมต่อ
เปิดแถวเพื่อดูหน้าต่างรายละเอียด แท็บจากซ้ายไปขวา:
ทั่วไป — สิ่งที่รายการแสดง จัดวางอย่างมีพื้นที่: บรรทัดคำขอและรหัสสถานะ โหมดขาออก นโยบาย และกฎที่ตรงกัน ปริมาณข้อมูลและความเร็วสูงสุด ที่อยู่ท้องถิ่นและระยะไกล เวลาเริ่มต้น สถานะ SSL/MitM (ถูกดักจับ, ส่วนหัวถูกแก้ไข, เนื้อหาถูกแก้ไข, ถูกจำลอง) และ กฎที่ทำงาน — กฎเขียนใหม่หรือ Mock ทุกข้อที่เปลี่ยนการเชื่อมต่อนี้ อ้างด้วยข้อความของกฎเอง กฎที่ไม่ปรากฏที่นี่ไม่ได้แตะการเชื่อมต่อนี้
เวลา — เวลาในการตั้งค่าการเชื่อมต่อถูกใช้ไปอย่างไร ตามที่เคอร์เนลวัด:
| บรรทัด | นับจาก → ถึง |
|---|---|
| เวลาเตรียมพร็อกซี | การเชื่อมต่อของไคลเอนต์มาถึง → Chute พร้อมจัดการ |
| การแก้ไข DNS | → ชื่อถูกแก้ไขแล้ว (เป็นศูนย์เมื่อกฎไม่ต้องการที่อยู่) |
| เวลาจับคู่กฎ | → ตารางกฎตัดสินแล้ว |
| เวลาเตรียมปลายทาง | → ขาออกที่เลือกเชื่อมต่อและพร้อมแล้ว |
| ทำงาน | ทุกอย่างหลังจากนั้น จนกว่าการเชื่อมต่อจะปิด |
คำขอที่ช้ามักช้าในบรรทัดใดบรรทัดหนึ่งเท่านั้น และบรรทัดไหนบอกว่าควรดูที่ใด: DNS ในส่วน DNS เวลาเตรียมปลายทางในนโยบายหรือเซิร์ฟเวอร์เบื้องหลัง ทำงานในแอปพลิเคชันเอง
ส่วนหัวคำขอ / ส่วนหัวการตอบกลับ — ส่วนหัวเป็นตาราง โดยแยก พารามิเตอร์คิวรี และ คุกกี้ สำหรับคำขอ และ คุกกี้ สำหรับการตอบกลับ ส่วนหัวที่กฎแก้ไขจะถูกเน้น คัดลอกที่เลือก คัดลอกแถวที่เลือก
ข้อมูลคำขอ / ข้อมูลการตอบกลับ — เนื้อหาที่จับได้ ในรูป ฐานสิบหก, ข้อความ, JSON (ต้นไม้ที่กางได้ พร้อมค้นหา) หรือ รูปภาพ (พอดี / ขนาดจริง) เนื้อหา multipart จะถูกแยกเป็นส่วนๆ ส่งออกเป็น bin บันทึกไบต์ดิบ ข้อมูลจะมีก็ต่อเมื่อการบันทึกเปิดอยู่ตอนที่การเชื่อมต่อทำงาน และเฉพาะโฮสต์ที่ตัวกรอง [Replica] ปล่อยผ่าน
Notice: เนื้อหาแสดงตามที่จับได้ การตอบกลับที่ถูกบีบอัด —
Content-Encoding: gzip— จะไม่ถูกคลายที่นี่ มุมมองข้อความและ JSON ของมันจึงเป็นขยะ มุมมองฐานสิบหกและ ส่งออกเป็น bin ให้ไบต์แก่คุณเพื่อไปคลายที่อื่น อุปกรณ์ปฏิเสธที่จะส่งเนื้อหาที่ใหญ่กว่า 2 MiB และมุมมองฐานสิบหกแสดง 1 MiB แรก
DNS และ UDP
DNS คือแคชรีโซลเวอร์ของอุปกรณ์: แต่ละโดเมนพร้อมที่อยู่ที่แก้ไขได้ เซิร์ฟเวอร์ที่ตอบก่อน (Chute ถามทุกเซิร์ฟเวอร์ที่กำหนดค่าพร้อมกัน — ดู DNS) TTL และประเภทเรกคอร์ด คลิกขวาเพื่อ คัดลอกโดเมน, คัดลอก IP และ คัดลอกเซิร์ฟเวอร์ DNS
UDP แสดงเซสชัน UDP — โฮสต์ เซิร์ฟเวอร์ นโยบาย และสถานะ UDP ไม่มีเนื้อหา
เครื่องมือ MitM
มุมมอง MitM จัดการกฎห้าตระกูลบนอุปกรณ์ในห้าแผง: กฎ MitM, Header Rewrite, Body Rewrite, Map Local และ Map Remote สิ่งที่เป็นจริงสำหรับทุกแผง:
- รายการคือสำเนากฎของเคอร์เนลที่กำลังทำงาน ซึ่งเริ่มจากสิ่งที่ไฟล์กำหนดค่าประกาศไว้
- การเพิ่มกฎจะส่งไปยังอุปกรณ์ ซึ่งแยกวิเคราะห์เหมือนบรรทัดกำหนดค่า บรรทัดที่แยกวิเคราะห์ไม่ได้จะถูกปฏิเสธพร้อมข้อผิดพลาด ไม่ใช่ถูกเก็บไว้
- การเปลี่ยนแปลงอยู่ในเคอร์เนลที่กำลังทำงานเท่านั้น ไม่ถูกเขียนกลับไปที่ไฟล์กำหนดค่า และการโหลดใหม่หรือเริ่มใหม่จะกลับไปตามที่ไฟล์ระบุ ใช้แผงเหล่านี้หากฎที่ใช้ได้ แล้วเขียนลงในการกำหนดค่า
- กฎถูกใช้อยู่หรือไม่ ดูได้ที่คอลัมน์ แฟล็ก ของรายการ (
R,K) และ กฎที่ทำงาน ในหน้าต่างรายละเอียด
กฎ MitM — หนึ่งรูปแบบโฮสต์ต่อกฎ host[:port][/path] ใช้คำนำหน้า - เพื่อยกเว้น: *.google.com, api.example.com:8443, api.example.com/v2/*, -*.apple.com ไวยากรณ์เดียวกับคีย์ hostname ในหน้าการถอดรหัส HTTPS ตัวเลขบนสวิตช์ MitM ของแถบเครื่องมือคือความยาวของรายการนี้
Header Rewrite — แบบฟอร์ม: Regex ของ URL, คำขอ หรือ การตอบกลับ, เพิ่ม / แทนที่ / ลบ, ชื่อส่วนหัว, ค่าส่วนหัว Dashboard ประกอบบรรทัดกำหนดค่าให้คุณ ไวยากรณ์อยู่ในหน้า Header Rewrite
Body Rewrite — บรรทัดกำหนดค่าหนึ่งบรรทัด พิมพ์เหมือนที่คุณเขียนในไฟล์: url-regex type pattern replacement โดย type คือ response, request, jsonpath-response หรือ jsonpath-request ดู Body Rewrite
Map Local — Regex ของ URL, เส้นทางไฟล์ (เรียกดู…) และ ส่วนหัวการตอบกลับ ที่ไม่บังคับ บรรทัดละหนึ่ง Name: Value
Notice: เส้นทางไฟล์ถูกอ่านโดยอุปกรณ์ที่รัน Chute ณ เวลาที่มีคำขอ เส้นทางบน Mac ของคุณมีความหมายเมื่อ Dashboard เชื่อมต่อกับ Chute Mac บนเครื่องเดียวกัน และไม่มีความหมายเมื่อเชื่อมต่อกับ iPhone — โทรศัพท์ไม่มี
/Users/…สำหรับอุปกรณ์ระยะไกล ให้ใส่เนื้อหาแบบอินไลน์ด้วยรูปแบบbase64=ของกฎ (ดูการตอบกลับจำลอง) ผ่านตัวแก้ไขของอุปกรณ์เองหรือคอนโซลเว็บ หรือให้บริการไฟล์จาก URL แล้วใช้ Map Remote
Map Remote — Regex ของ URL, เป้าหมาย และ ประเภท: header เขียนคำขอใหม่ในที่ (Map Remote ของ Surge) 302 และ 307 เปลี่ยนเส้นทางไคลเอนต์ และ reject, reject-200, reject-img, reject-dict ตอบโดยไม่ติดต่อเซิร์ฟเวอร์ ดู URL Rewrite
การส่งออก
- HAR — คลิกขวาที่รายการ: แถวที่เลือกหรือทั้งหมด เป็นไฟล์ HAR 1.2 ที่เปิดได้ในเครื่องมือนักพัฒนาของเบราว์เซอร์ (Network → นำเข้า) Charles หรือ Proxyman หนึ่งรายการต่อแถว รวมเนื้อหาเมื่อการบันทึกเปิดอยู่
- CSV — คอลัมน์ของรายการ สำหรับสเปรดชีต
- คัดลอกคำสั่ง curl — คำสั่ง
curlที่ทำคำขอซ้ำจาก Mac ของคุณ พร้อมส่วนหัว - ส่งออกเป็น bin — เนื้อหาหนึ่งรายการ ตามที่จับได้
Dashboard สร้าง HAR จากสิ่งที่ดึงมาแล้ว เคอร์เนลก็สร้างเองได้ — พร้อมกฎที่ตรง นโยบาย และการเขียนใหม่ที่ทำงานในอ็อบเจกต์ _kl ต่อรายการ และเวลาส่ง/รับที่นำมาจากการจับ — ผ่าน Export HAR (ส่งออก HAR) ของคอนโซล หรือ GET /api/connections/export?format=har
สิ่งที่ Dashboard เข้าไม่ถึง
Dashboard คุยผ่านช่องทางควบคุมแบบไบนารีของเคอร์เนล และบางสิ่งที่เคอร์เนลทำได้มีอยู่เฉพาะบน HTTP control API สำหรับสิ่งเหล่านี้ ใช้คอนโซลเว็บหรือ API:
- ชุดข้อมูลวินิจฉัย สุขภาพ ตัวนับการปฏิเสธ และเหตุการณ์
- ยอดรวมการทำงานต่อกฎในหน้า Rules ของคอนโซล และคำตอบที่มันให้ว่า กฎนี้เคยทำงานหรือไม่
- HAR ของเคอร์เนลเอง ข้างต้น
- บันทึก
อีกสองเรื่องที่ควรรู้ก่อนพึ่งพามัน:
- Chute Android ไม่มีช่องทางไบนารี Dashboard จึงเชื่อมต่อไม่ได้ แดชบอร์ดระยะไกลของ Android เองและคอนโซลเว็บครอบคลุมสิ่งเดียวกัน
- บน iPhone และ Apple TV การถอดรหัส HTTPS และการจับเนื้อหาเป็นฟีเจอร์ที่ต้องมีใบอนุญาต หากไม่มีใบอนุญาต Dashboard ยังเชื่อมต่อได้และแสดงทุกการเชื่อมต่อพร้อมกฎและนโยบาย แต่แถว HTTPS ยังคงเป็นอุโมงค์
CONNECTทึบ แท็บข้อมูลว่างเปล่า และสวิตช์ MitM ไม่มีผล ดูใบอนุญาตและการเปิดใช้งาน
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก