คอนโซลเว็บ

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

นี่ไม่ใช่ Chute Dashboard Dashboard เป็นแอป macOS แยกต่างหากที่เชื่อมไปยังอินสแตนซ์ของ Chute ส่วนคอนโซลที่อธิบายในหน้านี้เคอร์เนลเป็นผู้ให้บริการเอง และเปิดด้วยเบราว์เซอร์

การเปิดใช้และการเข้า

คอนโซลต้องมี external-http-controller ในส่วน [General] โดยค่าเริ่มต้นจะปิดอยู่:

[General]
external-http-controller = 127.0.0.1:9090
external-http-ui = true

การเข้าถึงต้องยืนยันตัวตน หากคุณไม่ตั้ง external-http-secret Chute จะสร้างโทเคนและเก็บไว้ในไฟล์ control-token ทำให้โทเคนเดิมถูกใช้ต่อหลังรีสตาร์ต วิธีเข้าที่ใช้ได้จริงจึงเป็นการให้แอปส่งที่อยู่ที่พ่วงโทเคนมาแล้วให้คุณ หน้าเว็บจะดึงโทเคนจากที่อยู่นั้นตอนโหลดและเก็บไว้ใน localStorage ของเบราว์เซอร์ เบราว์เซอร์หนึ่งจึงลงชื่อเข้าใช้ครั้งเดียวพอ ทุกแพลตฟอร์มมีทางเข้าสำหรับเรื่องนี้ ดูการเปิดคอนโซลเว็บ

Overview (ภาพรวม)

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

Traffic (ทราฟฟิก)

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

Connections (การเชื่อมต่อ)

หน้าที่คุณจะใช้เวลามากที่สุด มีสองแท็บ:

  • Current (ปัจจุบัน) — การเชื่อมต่อที่เปิดอยู่ตอนนี้
  • History (ประวัติ) — การเชื่อมต่อที่ปิดแล้ว ใหม่สุดก่อน อ่านกลับจากบันทึกของรอบนี้

แต่ละแถวมีโฮสต์ พอร์ต ชนิด นโยบายที่เลือก กฎที่ตรง ระยะเวลา และจำนวนไบต์ ระยะเวลานับจากตอนที่แท็บเบราว์เซอร์นี้เห็นการเชื่อมต่อครั้งแรก ไม่ใช่ตอนที่การเชื่อมต่อถูกเปิด จึงมีความหมายเฉพาะบนแท็บ Current (ปัจจุบัน) เท่านั้น ปุ่ม Inspect (ตรวจดู) จะกางแถวออกตรงนั้นและตอบว่า ทำไมคำขอนี้จึงไปทางนั้น:

ฟิลด์ บอกอะไรคุณ
กฎที่ตรงกัน / ที่มาของกฎ บรรทัดกฎที่ตัดสินการเชื่อมต่อนี้ และมาจากส่วนใด
นโยบายที่เลือก / อะแดปเตอร์ นโยบายที่กฎเลือก และทางออกที่แบกมันจริง
ที่มาของ DNS รีโซลเวอร์ใดตอบ และเป็นการชนแคชหรือไม่
การเขียนใหม่ที่ใช้ กฎเขียนใหม่หรือ Mock ที่เปลี่ยนข้อความนี้ — ด้วยข้อความของกฎเอง เก็บไว้สูงสุด 16 รายการต่อการเชื่อมต่อ เกินจากนั้นแถวจะบอกว่าอีกกี่รายการไม่ได้แสดง
สาเหตุที่ปิด / หมายเหตุ ทำไมจึงจบ และเคอร์เนลอยากบอกอะไรเกี่ยวกับมัน

ใต้ตาราง แถวที่กางออกจะแสดงคำขอและการตอบกลับที่จับไว้ — ส่วนหัวและเนื้อหา ตามที่วิ่งผ่านสายจริง (ถอดรหัสแล้วสำหรับโฮสต์ที่อยู่ในขอบเขตการถอดรหัส HTTPS)

เนื้อหาต้องอาศัยการบันทึกทราฟฟิก

เนื้อหาจะมีก็ต่อเมื่อ Chute จับไว้ เปิดการบันทึกก่อนที่จะทำให้ปัญหาเกิดซ้ำ:

  • replica = true ใน [General] หรือ
  • Chute Mac: แถบเมนู → จับทราฟฟิก หรือ
  • ผ่าน API: PUT /api/features/record-traffic ด้วย {"enabled": true}

ถ้าไม่เปิด การเชื่อมต่อก็ยังปรากฏพร้อมการระบุที่มาของเส้นทางและเวลาครบถ้วน — ที่ขาดคือเพย์โหลดเท่านั้น ส่วน [Replica] ยังจำกัดสิ่งที่จับได้อีกชั้น — ตัวกรองทุกตัวในนั้น รวมถึง hide-crashlytics-request มีผลจริง — คำขอที่ถูกกรองออกตรงนั้นจึงไม่มีเนื้อหาเช่นกัน

ส่งออกเป็น HAR

ปุ่ม Export HAR (ส่งออก HAR) บนหน้า Connections จะดาวน์โหลดแท็บปัจจุบันเป็นไฟล์ HAR 1.2 — จำกัดที่ 100 รายการซึ่งเป็นค่าเริ่มต้นของเอนด์พอยต์ (limit บนเอนด์พอยต์เพิ่มได้สูงสุด 300) ขณะที่แท็บ History เองแสดงได้ถึง 200 รายการ HAR เป็นรูปแบบมาตรฐาน เปิดได้ในเครื่องมือนักพัฒนาของเบราว์เซอร์ (แผง Network → นำเข้า) หรือในเครื่องมืออย่าง Charles และ Proxyman

ไฟล์ที่ส่งออกมีสิ่งที่เครื่องมือเหล่านั้นคาดหวัง — ส่วนหัวของคำขอและการตอบกลับ ไทม์มิ่ง และเนื้อหาเมื่อเปิดการบันทึกไว้ — บวกกับอ็อบเจกต์ _kl ต่อรายการ ซึ่งบรรจุสิ่งที่ HAR ไม่มีฟิลด์รองรับ ได้แก่ นโยบายที่เลือก กฎที่ตรง และการเขียนใหม่ที่ทำงาน ส่วนเวลาส่งและรับมาจากไทม์สแตมป์ของการจับเอง ไม่ใช่การอนุมาน จึงมีความหมายจริง แอปเองก็มีทางออกของตัวเอง: Dashboard ของ Chute iOS มี ส่งออกเป็น HAR และ ส่งออกทั้งหมดเป็น HAR (เคอร์เนลสร้างให้ในรูปแบบเดียวกัน) และหน้าต่างรายละเอียดการเชื่อมต่อของ Chute Mac มีปุ่ม คำขอและประวัติ ที่เปิดคอนโซล — เปิดหน้าแรกของคอนโซล ไม่ใช่การเชื่อมต่อนั้นโดยเฉพาะ หนึ่งรายการคือหนึ่งการเชื่อมต่อ: บนการเชื่อมต่อ keep-alive ที่ส่งหลายคำขอ การส่งออกจะบรรยายข้อความแรกและระบุว่าละไว้กี่ไบต์ของข้อความถัดไป

DNS

แคชของรีโซลเวอร์พร้อมเซิร์ฟเวอร์ที่ตอบในแต่ละระเบียน ระเบียนที่มาจาก [Host] และไฟล์ hosts ของระบบ ปุ่ม Clear Cache (ล้างแคช) ล้างระเบียนไดนามิก ตรงนี้ไม่มีการลบทีละระเบียน — สิ่งนั้นมีเฉพาะใน API ผ่าน DELETE /api/dns/records/:domain

Policies (นโยบาย)

โหมดขาออก (Rule / Global / Direct — กฎ / ทั่วโลก / โดยตรง) และทุกกลุ่มนโยบายพร้อมตัวเลือกปัจจุบัน การเปลี่ยนตรงนี้มีผลกับเคอร์เนลที่กำลังทำงานทันที — เป็นการกระทำเดียวกับการสลับกลุ่มในแอป

Rules (กฎ)

หน้านี้มีของสองอย่างอยู่ร่วมกัน และทั้งสองทำงานไม่เหมือนกัน

กฎการกำหนดเส้นทาง — ส่วน [Rule] เรียงตามลำดับการประเมิน อ่านอย่างเดียว เพราะมาจากไฟล์กำหนดค่า

กฎเขียนใหม่และ Mock — การเขียน URL ใหม่ ส่วนหัว เนื้อหา และ Mock รวมถึงรายการโฮสต์ MitM ทั้งหมดนี้เพิ่มและลบได้จากที่นี่:

  • วางกฎให้เหมือนกับที่คุณจะเขียนในไฟล์กำหนดค่าทุกประการ แล้วกด Add (เพิ่ม) บรรทัดที่แจงไม่ได้จะถูกปฏิเสธพร้อมข้อทักท้วงของตัวแจง แทนที่จะถูกเก็บไว้ — กฎที่ไม่มีวันตรงนั้นไม่มีอาการใด ๆ รู้ตอนนี้ย่อมดีกว่า
  • Remove (ลบ) ลบกฎหนึ่งข้อ ส่วน Clear (ล้าง) ล้างทั้งตระกูล
  • การเปลี่ยนแปลงอยู่ในเคอร์เนลที่กำลังทำงานเท่านั้น จะไม่ถูกเขียนกลับลงไฟล์กำหนดค่า และการโหลดซ้ำหรือเริ่มใหม่จะได้ตามที่ไฟล์เขียนไว้ ใช้ที่นี่ทดลองกฎ แล้วค่อยเขียนบรรทัดที่ได้ผลลงไฟล์

การตรงกันของกฎเขียนใหม่และ Mock — ทุกกฎเขียนใหม่หรือ Mock ที่ทำงานในรอบนี้ พร้อมจำนวนครั้งและเวลาที่ตรงล่าสุด ตารางนี้ติดตามกฎที่ต่างกันได้สูงสุด 512 กฎ และจะบอกว่ามีอีกกี่กฎที่ทำงานเกินจากนั้นโดยไม่ได้ติดตาม ตารางนี้คือคำตอบของ «การเขียนใหม่ของฉันไม่ทำอะไรเลย»: กฎที่ไม่เคยปรากฏตรงนี้คือกฎที่ไม่เคยตรงเลย ซึ่งเป็นคนละปัญหากับกฎที่ตรงแล้วแต่ไม่เห็นผล วิธีแยกแยะดูที่ ทำไมการเขียนใหม่ของฉันไม่ทำอะไรเลย?

Diagnostics (การวินิจฉัย)

เอนจินกำลังถืออะไรอยู่ รอบก่อนหน้าจบลงอย่างไร และชุดการตรวจที่คุณยิงใส่มันได้

  • Footprint / CPU / Uptime / Live flows / Superseded flows / Engine generation (หน่วยความจำที่ใช้ / CPU / เวลาทำงาน / โฟลว์ที่ใช้งานอยู่ / โฟลว์จากรุ่นก่อน / รุ่นของเอนจิน) — รูปร่างปัจจุบันของรอบนี้ หน่วยความจำที่ไต่ขึ้นขณะจำนวนโฟลว์คงที่คุ้มที่จะตามดู และบน iOS กับ tvOS นี่ก็คือค่าที่ระบบจับตาก่อนจะเรียกคืนส่วนขยาย
  • Previous exit (การออกครั้งก่อน)Clean (ปกติ), Terminated unexpectedly (หยุดทำงานโดยไม่คาดคิด) หรือ Killed for memory (ถูกปิดเพราะหน่วยความจำ) พร้อม id ระยะเวลาทำงาน และหน่วยความจำสูงสุดของรอบก่อน อ่านบรรทัดนี้ก่อนเมื่อ Chute «แครช»: Killed for memory (ถูกปิดเพราะหน่วยความจำ) หมายถึงระบบเรียกคืน Chute ไม่ใช่ Chute ทำงานผิดพลาด และนั่นเปลี่ยนสิ่งที่ต้องตามหา
  • Refusals (การปฏิเสธ) — ตารางว่าเอนจินปฏิเสธอะไรและเพราะอะไร นับตามทรัพยากรและเหตุผล เมื่อการเชื่อมต่อถูกตัดทิ้งและไม่มีอะไรอื่นอธิบายได้ เหตุผลมักอยู่ตรงนี้
  • Run a probe (รันการตรวจสอบ) — การเข้าถึงได้ (ICMP หรือ TCP เมื่อระบุพอร์ต) การสอบถาม DNS ผ่านรีโซลเวอร์ที่กำลังทำงาน การตรวจ IP ขาออก และการทดสอบความหน่วงของนโยบาย แต่ละอย่างมีขีดจำกัดและตอบเพียงครั้งเดียว ชื่อนโยบายที่ไม่มีอยู่จะถูกปฏิเสธแทนที่จะถูกวัด พิมพ์ผิดจึงกลับมาเป็นพิมพ์ผิด
  • Events (เหตุการณ์) — ช่วงเวลาสำคัญของรอบนี้ เช่น ความล้มเหลวเป็นกลุ่ม การเปลี่ยนทางออก และอื่น ๆ
  • Tailscale — สถานะปัจจุบันของเอนจินเมื่อมีการกำหนดส่วน [Tailscale] และเป็น idle เมื่อไม่มี ซึ่งเป็นคำตอบปกติ
  • Download diagnostic bundle (ดาวน์โหลดชุดข้อมูลวินิจฉัย) — ไฟล์เก็บถาวรที่ลบข้อมูลอ่อนไหวแล้วหนึ่งไฟล์ สำหรับแนบไปกับข้อความถึงฝ่ายสนับสนุน เนื้อหาข้างในดูที่การส่งชุดข้อมูลวินิจฉัย

Config (การกำหนดค่า)

การกำหนดค่าที่กำลังทำงาน แสดงในกล่องที่แก้ไขได้ พร้อมปุ่ม Reload (โหลดใหม่) เพื่อนำสิ่งที่อยู่ในกล่องไปใช้

การกำหนดค่าที่แสดงตรงนี้ถูกลบความลับออกแล้ว รหัสผ่าน ซีเคร็ตของส่วนควบคุม วลีรหัสผ่านของ CA คีย์ WireGuard และอื่น ๆ จะปรากฏเป็น <redacted> แต่ Reload (โหลดใหม่) จะนำสิ่งที่อยู่ในกล่องไปใช้ตามตัวอักษร การโหลดซ้ำข้อความตามที่เห็นจึงเท่ากับเขียนคำว่า <redacted> ทับความลับเหล่านั้นลงในเคอร์เนลที่กำลังทำงาน และนโยบายที่ต้องใช้มันจะเริ่มล้มเหลว ส่วนไฟล์กำหนดค่าไม่ถูกแตะต้อง เลือกการกำหนดค่านั้นใหม่ก็กลับมาเหมือนเดิม

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

Logs (บันทึก)

การตามบันทึกของเคอร์เนลแบบสด ใส่สีตามระดับ พร้อมปุ่ม Pause (หยุดชั่วคราว) ระหว่างที่คุณอ่าน ระดับความละเอียดกำหนดโดย loglevel ไม่ใช่หน้านี้ — ถ้าบรรทัดที่คุณต้องการไม่อยู่ตรงนี้ ให้เพิ่มระดับแล้วทำซ้ำ

คอนโซลส่งมอบอะไรได้บ้าง

ให้ถือว่าการเข้าถึงคอนโซลคือการเข้าถึงทุกอย่างที่รอบการทำงานนี้เห็น มันสามารถให้บันทึกการเชื่อมต่อที่มี URL ส่วนหัว และชื่อโปรเซส เนื้อหาคำขอและการตอบกลับที่จับไว้ การกำหนดค่า และบันทึก นี่คือเหตุผลที่ส่วนควบคุมแบบไม่ยืนยันตัวตนไม่ใช่ค่าเริ่มต้น และเหตุผลที่การผูกไว้นอกลูปแบ็กต้องมีซีเคร็ตที่คุณตั้งเอง — ดู external-http-secret

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-01 13:16:36

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

results matching ""

    No results matching ""