Chute Dashboard

Chute Dashboard เป็นแอป macOS ฟรีที่เชื่อมต่อกับ Chute ที่กำลังทำงาน — Chute iOS ผ่าน Wi-Fi หรือสาย USB, Chute Android ผ่านเครือข่ายหรือ adb หรือ Chute Mac บนเครื่องเดียวกัน — และแสดงว่าอินสแตนซ์นั้นกำลังทำอะไร: ทุกการเชื่อมต่อพร้อมกฎและนโยบายที่ตัดสินมัน คำขอและการตอบกลับที่ถอดรหัสแล้วสำหรับโฮสต์ที่อยู่ในขอบเขตการถอดรหัส HTTPS คำตอบ DNS และเซสชัน UDP นอกจากนี้ยังให้คุณปรับแต่งทราฟฟิกขณะดูได้: รายการโฮสต์ MitM และกฎเขียนใหม่กับการตอบกลับจำลองทุกตระกูลแก้ไขได้แบบสด

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

อินเทอร์เฟซของ Dashboard แปลเป็นภาษาเดียวกับคู่มือนี้ ยกเว้นภาษาอาหรับ บนระบบภาษาอาหรับจะแสดงเป็นภาษาอังกฤษ

อนุญาตให้ Dashboard เชื่อมต่อ

จะไม่มีอะไรรับฟังจนกว่าอุปกรณ์จะอนุญาต

Chute iOS — ในตัวแก้ไขการกำหนดค่า เปิด ตัวควบคุมภายนอก:

  1. เปิด การเข้าถึงตัวควบคุมภายนอก — สวิตช์ที่มีเชิงอรรถว่า อนุญาตให้ Chute Dashboard/Chute CLI เชื่อมต่อ
  2. ตั้ง พอร์ต และ รหัสผ่าน รหัสผ่านต้องไม่ว่าง และต้องเป็นของคุณเอง: ตัวรับฟังที่เข้าถึงได้จากเครือข่ายจะปฏิเสธการเริ่มทำงานหากรหัสผ่านว่างหรือเป็นค่าเริ่มต้น
  3. ปล่อย อนุญาตการเข้าถึงจาก Wi-Fi ไว้ปิดถ้าไม่จำเป็น ปิดเป็นค่าเริ่มต้น หมายความว่าตัวรับฟังอยู่บนโทรศัพท์เอง — สาย USB ยังเข้าถึงได้ แต่อุปกรณ์อื่นบน Wi-Fi เข้าไม่ถึง เปิดหมายความว่าใครก็ตามบนเครือข่ายที่รู้รหัสผ่านอ่านทุกอย่างที่รอบนี้เห็นได้
  4. บันทึก แล้วเริ่ม (หรือเริ่มใหม่) ทันเนล แผงควบคุมจะแสดง พอร์ตการเข้าถึงภายนอก: <พอร์ต> — บรรทัดนี้คือการยืนยันว่าตัวรับฟังทำงานแล้ว

Chute Mac — ค่าสามค่าเดียวกันอยู่ใน [General]:

[General]
external-controller-access = password@127.0.0.1:6170

127.0.0.1 จำกัดไว้เฉพาะ Mac ที่คุณใช้อยู่ ที่อยู่ LAN หรือ 0.0.0.0 จะเปิดให้เครื่องอื่นด้วย ส่วน General ของหน้าต่างการกำหนดค่ามีช่องสำหรับคีย์เดียวกันนี้ Dashboard ที่รันบน Mac เครื่องเดียวกันไม่ต้องใช้คีย์นี้เลย — ดู เชื่อมต่อกับเครื่องนี้ ด้านล่าง

Chute Android — ในตัวแก้ไขการกำหนดค่า เปิด คอนโทรลเลอร์ภายนอก แล้วเขียนค่าเดียวกันลงใน การเข้าถึงภายนอก:

  • password@127.0.0.1:6170 เพียงพอสำหรับ เชื่อมต่อผ่าน USB: Dashboard รัน adb forward สำหรับพอร์ตนั้นและเชื่อมต่อผ่านสาย ตัวรับฟังจึงอยู่บนโทรศัพท์เองได้ วิธีนี้ต้องมี adb บน Mac — Dashboard มองหาใต้ ANDROID_HOME และ ANDROID_SDK_ROOT บน PATH ใน /usr/local/bin และ /opt/homebrew/bin และใน ~/Library/Android/sdk — และต้องเปิดการแก้ไขข้อบกพร่อง USB บนโทรศัพท์ โดยอนุญาต Mac เครื่องนี้ไว้แล้ว
  • password@0.0.0.0:6170 เปิดตัวรับฟังให้เครือข่ายเข้าถึงได้สำหรับ เชื่อมต่อกับเครื่องระยะไกล เช่นเดียวกับบน iOS ตัวรับฟังที่เข้าถึงได้จากเครือข่ายจะปฏิเสธการเริ่มทำงานหากรหัสผ่านว่างหรือเป็นค่าเริ่มต้น

บันทึก แล้วเริ่ม (หรือเริ่มใหม่) VPN จากนั้นสวิตช์ การเข้าถึงภายนอก ของแผงควบคุมจะแสดงที่อยู่ที่ตัวรับฟังเปิดรับอยู่ และใช้ปิดและเปิดตัวรับฟังได้ขณะที่ VPN ทำงาน

การเชื่อมต่อ

Dashboard เปิดด้วยหน้าต่าง Dashboard ใหม่ แต่ละการเชื่อมต่อมีหน้าต่างของตัวเอง จึงเปิดหลายอุปกรณ์พร้อมกันได้ มีสามทางเข้า:

ช่อง เมื่อใด
เชื่อมต่อกับเครื่องนี้ ไม่มี Chute Mac บน Mac เครื่องเดียวกันนี้ Dashboard คุยกับซ็อกเก็ตภายในเครื่องของเอนจินโดยตรง — ไม่มีโฮสต์ ไม่มีพอร์ต ไม่มีรหัสผ่าน และไม่ต้องมีบรรทัด external-controller-access
เชื่อมต่อกับเครื่องระยะไกล โฮสต์, พอร์ต, รหัสผ่าน ที่อยู่ Wi-Fi ของอุปกรณ์ (iPhone: การตั้งค่า → Wi-Fi → ⓘ) หรือที่อยู่ของ Mac อีกเครื่อง ต้องเปิด อนุญาตการเข้าถึงจาก Wi-Fi บนโทรศัพท์
เชื่อมต่อผ่าน USB อุปกรณ์, พอร์ต, รหัสผ่าน iPhone เสียบสายกับ Mac นี้และเชื่อถือเครื่องนี้แล้ว หรืออุปกรณ์ Android ที่ adb มองเห็น เลือกจาก อุปกรณ์: แล้วใส่พอร์ตเดียวกับที่กำหนดค่าไว้ — Dashboard หาช่องทางสายเอง และรัน forward พอร์ตด้วย adb ให้เองสำหรับ Android ใช้ได้แม้ อนุญาตการเข้าถึงจาก Wi-Fi ปิดอยู่ และเห็นทราฟฟิกเซลลูลาร์ด้วย เพราะอุปกรณ์ไม่จำเป็นต้องอยู่บน Wi-Fi เลย

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

ถ้ารหัสผ่านผิด หน้าต่างจะแจ้ง รหัสผ่านไม่ตรงกัน ทั้งผ่าน USB และผ่านเครือข่าย ถ้าเข้าถึงอุปกรณ์ไม่ได้ หน้าต่างก็ยังเปิดขึ้นและแสดง กำลังเชื่อมต่อ…: สำหรับ iPhone ที่ต่อผ่าน USB หน้าต่างจะค้างอยู่ที่นี่ขณะที่ Dashboard พยายามเชื่อมต่อซ้ำไปเรื่อย ๆ จนกว่าโทรศัพท์จะตอบหรือคุณคลิก ปิด ส่วนการเชื่อมต่อแบบอื่นทั้งหมดจะจบที่ การเชื่อมต่อถูกปิด ถ้าอุปกรณ์หายไปภายหลัง — ทันเนลหยุด สายถูกดึงออก โทรศัพท์เปลี่ยนเครือข่าย — หน้าต่าง Dashboard จะแจ้ง การเชื่อมต่อถูกปิด และเสนอ เชื่อมต่อใหม่

หน้าต่าง

แถบเครื่องมือสลับระหว่างห้ามุมมอง — ล่าสุด, ทำงาน, DNS, UDP และ MitM — และช่อง ตัวกรอง ทางขวาของแถบคือช่องค้นหารูปแบบโฮสต์ ซึ่งใช้ร่วมกับแถบตัวกรอง แถบนั้นจะแสดงขึ้นเองในมุมมองล่าสุดและทำงาน และถูกซ่อนใน DNS, UDP และ MitM แผงมุมล่างซ้ายคือความเร็วอัปโหลดและดาวน์โหลดแบบสด คลิกเพื่อขยายกราฟ

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

  • เปิดการดักจับทราฟฟิก → ปิดการดักจับทราฟฟิก: เปิดการดักจับเนื้อหาคำขอและการตอบกลับ (การตั้งค่า replica) ถ้าไม่เปิด แถวยังคงปรากฏพร้อมข้อมูลเส้นทาง แต่แท็บข้อมูลจะเลือกไม่ได้ ปุ่มจะอ่านว่า การดักจับทราฟฟิก จนกว่าอุปกรณ์จะรายงานว่าตั้งค่าไว้ทางใด
  • เปิด MitM (N กฎ) → ปิด MitM (N กฎ): เปิดการถอดรหัส HTTPS สำหรับโฮสต์ N รายการในรายการโฮสต์ MitM ถ้ารายการว่าง จำนวนจะถูกตัดออกไป สวิตช์นี้ไม่ทำอะไรที่มีประโยชน์จนกว่าอุปกรณ์จะมี CA ที่เชื่อถือและโฮสต์อย่างน้อยหนึ่งรายการ — ดูหน้าการถอดรหัส HTTPS

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

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

ทำงานและล่าสุด

ทำงาน คือสิ่งที่เปิดอยู่ตอนนี้ ล่าสุด คือประวัติของอุปกรณ์ อ่านกลับจากบันทึกของรอบนี้และเรียงตามหมายเลขการเชื่อมต่อ — ใหม่สุดอยู่ล่างสุด คลิกหัวคอลัมน์เพื่อเรียงตามคอลัมน์นั้นแทน ทั้งสองใช้คอลัมน์ชุดเดียวกัน:

คอลัมน์
ID หมายเลขการเชื่อมต่อของเอนจิน — หมายเลขเดียวกับที่คอนโซลและแอปแสดง
วันที่, ระยะเวลา เริ่มเมื่อไร และดำเนินมาหรือใช้เวลานานเท่าใด
ไคลเอนต์ กระบวนการ (Chute Mac) ชื่อแพ็กเกจของแอป (Chute Android) หรือที่อยู่ท้องถิ่น
เมธอด, เซิร์ฟเวอร์, สถานะ เมธอด คือประเภทการเชื่อมต่อ — HTTP, HTTPS, SOCK, TCP หรือ UDP ไม่ใช่เมธอด HTTP ของคำขอ เซิร์ฟเวอร์ คือ host:port ปลายทาง สถานะ คือสถานะของการเชื่อมต่อ: ทำงาน, เสร็จสิ้นแล้ว หรือถูกระงับ
นโยบาย นโยบายที่กฎเลือก
อัปโหลด, ดาวน์โหลด จำนวนไบต์แต่ละทิศทาง
แฟล็ก สิ่งที่ Chute ทำกับการเชื่อมต่อ — ดูคำอธิบายด้านล่าง

คอลัมน์ แฟล็ก คือวิธีเร็วที่สุดในการรู้ว่ากฎที่คุณเขียนถูกใช้อยู่หรือไม่:

แฟล็ก ความหมาย
M ถอดรหัสแล้ว (ดักจับด้วย MitM)
H ส่วนหัวถูกแก้ไข
B กฎ Body Rewrite หรือสคริปต์แก้ไขเนื้อหา
R กฎเขียนใหม่ทำงาน
K ตอบโดยกฎการตอบกลับจำลองแทนเซิร์ฟเวอร์

B ดูเพียงว่าเนื้อหาเปลี่ยนไปจริงหรือไม่: เนื้อหาที่ Chute พักไว้เพื่อตรวจกับกฎเท่านั้น หรือแบ่ง chunk ใหม่หรือบีบอัดใหม่โดยข้อความไม่เปลี่ยน จะไม่ถูกทำเครื่องหมาย

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

คลิกขวาที่แถวเพื่อ คัดลอกคำสั่ง curl, ส่งออกที่เลือกเป็น HAR… / CSV…, ส่งออกทั้งหมดเป็น HAR… / CSV… และ ตั้งตัวกรองเป็น <โฮสต์> แถวที่ทำงานอยู่มี ตัดการเชื่อมต่อ เพิ่มมาด้วย ซึ่งปิดการเชื่อมต่อนั้นบนอุปกรณ์ การคลิกขวาภายในส่วนที่เลือกไว้หลายแถวจะคงการเลือกนั้นไว้ ส่งออกที่เลือกเป็น HAR… / CSV… จึงนำทุกแถวที่เลือกไป ส่วนรายการที่ทำงานกับการเชื่อมต่อเดียวจะทำกับแถวที่คุณคลิก อีกสี่รายการทำงานกับกฎของอุปกรณ์สำหรับโฮสต์นั้น เป็นทางที่สั้นที่สุดจากการเชื่อมต่อที่คุณกำลังดูอยู่ไปยังกฎที่เปลี่ยนมัน: เพิ่มกฎ MitM สำหรับ, เปิด MitM สำหรับ, เพิ่ม Header Rewrite สำหรับ และ เพิ่ม Body Rewrite สำหรับ <โฮสต์>

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

แถบตัวกรอง

แถบตัวกรองจำกัดสิ่งที่แสดง ไม่ได้เปลี่ยนสิ่งที่อุปกรณ์บันทึก — สำหรับเรื่องนั้นให้ใช้ [Replica] บนอุปกรณ์

ตัวควบคุม ตัวเลือก
กรองโฮสต์/URL… ข้อความที่จับคู่กับโฮสต์ host:port กระบวนการหรือแอป นโยบาย กฎ และประเภทการเชื่อมต่อ — ไม่จับคู่กับพาธของ 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 (ถูกดักจับ, ส่วนหัวถูกแก้ไข, เนื้อหาถูกแก้ไข, ถูกจำลอง) และ กฎที่ทำงาน — กฎเขียนใหม่และกฎการตอบกลับจำลองที่เปลี่ยนการเชื่อมต่อนี้ อ้างด้วยข้อความของกฎเอง รายการนี้ถูกจำกัดทั้งสองด้าน: เอนจินเก็บไว้ไม่เกิน 16 ครั้งต่อการเชื่อมต่อ และ Dashboard แสดง 8 รายการแล้วต่อท้ายด้วย … อีก N รายการ กฎที่ทำงานกับทุกก้อนข้อมูลจึงเบียดกฎที่เหลือออกไป

เวลา — เวลาในการตั้งค่าการเชื่อมต่อถูกใช้ไปอย่างไร ตามที่เอนจินวัด:

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

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

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

ข้อมูลคำขอ / ข้อมูลการตอบกลับ — เนื้อหาที่จับได้ ในรูป ฐานสิบหก, ข้อความ, JSON (ต้นไม้ที่กางได้ พร้อมค้นหา) หรือ รูปภาพ (พอดี / ขนาดจริง) แท็บจะเปิดขึ้นเป็น ข้อความ เสมอ ไม่ว่าเนื้อหาจะเป็นอะไร และเนื้อหา multipart จะถูกแยกเป็นส่วน ๆ ส่งออกเป็น bin บันทึกไบต์ดิบ และมุมมองข้อความมี เปิดใน Sublime Text และ เปิดใน VSCode ให้เมื่อโปรแกรมใดโปรแกรมหนึ่งติดตั้งอยู่ แท็บทั้งสองจะเลือกได้ก็ต่อเมื่อมีข้อมูลที่จับได้: การบันทึกเปิดอยู่ตอนที่การเชื่อมต่อทำงาน และตัวกรอง [Replica] ปล่อยโฮสต์นั้นผ่าน

หมายเหตุ: เนื้อหาแสดงตามที่จับได้ การตอบกลับที่ถูกบีบอัด — Content-Encoding: gzip — จะไม่ถูกคลายที่นี่ มุมมองข้อความและ JSON ของมันจึงเป็นขยะ มุมมองฐานสิบหกและ ส่งออกเป็น bin ให้ไบต์แก่คุณเพื่อไปคลายที่อื่น อุปกรณ์ปฏิเสธที่จะส่งเนื้อหาที่ใหญ่กว่า 2 MiB — แท็บจะแสดงว่า ไม่สามารถโหลดเนื้อหานี้ได้ — และมุมมองฐานสิบหกแสดง 1 MiB แรก

DNS และ UDP

DNS คือแคชรีโซลเวอร์ของอุปกรณ์: แต่ละโดเมนพร้อมที่อยู่ที่แปลงได้ เซิร์ฟเวอร์ที่ตอบก่อน (Chute ถามทุกเซิร์ฟเวอร์ที่กำหนดค่าพร้อมกัน — ดู DNS) TTL และที่มาของระเบียน คอลัมน์สุดท้ายนั้นคือแหล่งที่มา — Config, System หรือ Dynamic — ไม่ใช่ประเภทระเบียน DNS ส่วน TTL รายงานเป็นอย่างน้อย 600 วินาที ค่าที่สั้นกว่านั้นจึงอ่านได้เป็น 600

คลิกขวาเพื่อ คัดลอกโดเมน, คัดลอก IP, คัดลอกเซิร์ฟเวอร์ DNS และ ตั้งตัวกรองเป็น <โดเมน> ระเบียนที่แปลงแบบไดนามิกยังมี ลบระเบียน DNS ของ <โดเมน> ให้ด้วย ส่วน ล้างแคช DNS ที่ด้านล่างเคลียร์แคชทิ้งทั้งหมด สองรายการหลังนี้ทำงานกับแคชของอุปกรณ์ ไม่ใช่กับมุมมองของ Dashboard

UDP แสดงเซสชัน UDP — โฮสต์ เซิร์ฟเวอร์ นโยบาย และสถานะ UDP ไม่มีเนื้อหา

เครื่องมือ MitM

มุมมอง MitM จัดการกฎห้าตระกูลบนอุปกรณ์ในห้าแผง: กฎ MitM, Header Rewrite, Body Rewrite, การตอบกลับจำลอง และ URL Rewrite สิ่งที่เป็นจริงสำหรับทุกแผง:

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

กฎ MitM — หนึ่งรูปแบบโฮสต์ต่อกฎ host[:port][/path] ใช้คำนำหน้า - เพื่อยกเว้น: *.google.com, api.example.com:8443, api.example.com/v2/*, -*.apple.com ไวยากรณ์เดียวกับคีย์ hostname ในหน้าการถอดรหัส HTTPS ตัวเลขบนสวิตช์ MitM ของแถบเครื่องมือคือความยาวของรายการนี้

Header Rewrite — แบบฟอร์ม: URL Regex, คำขอ หรือ การตอบกลับ, เพิ่ม / แทนที่ / ลบ / แทนที่ (regex), ชื่อส่วนหัว, ค่าส่วนหัว เมื่อเลือก แทนที่ (regex) จะมี Regex ของค่า เพิ่มขึ้น ส่วนของค่าส่วนหัวที่ตรงกับ regex นี้จะถูกแทนด้วย ค่าที่ใช้แทน Dashboard ประกอบบรรทัดการกำหนดค่าให้คุณ ไวยากรณ์อยู่ในหน้า Header Rewrite

Body Rewrite — บรรทัดการกำหนดค่าหนึ่งบรรทัด พิมพ์เหมือนที่คุณเขียนในไฟล์ โดยใช้รูปแบบใดก็ได้ที่เอนจินอ่านได้: แบบ Surge ทั้ง http-response url-regex pattern replacement (หรือ http-request) และ http-response-jq url-regex jq-program (หรือ http-request-jq), url-regex response regex pattern replacement (หรือ request) และ url-regex jsonpath-response jsonpath $.path value (หรือ jsonpath-request) ดู Body Rewrite

การตอบกลับจำลอง — URL Regex, ประเภทของ เนื้อหาการตอบกลับ: file (เส้นทางไฟล์ ใช้ เรียกดู… ได้), text, base64 หรือ tiny-gif (GIF โปร่งใสขนาด 1×1 ในตัว ไม่ต้องใส่เนื้อหา), รหัสสถานะ ที่ไม่บังคับ และ ส่วนหัวการตอบกลับ ที่ไม่บังคับ เขียนเป็น Name: Value คั่นด้วย |

หมายเหตุ: เส้นทาง file ถูกอ่านโดยอุปกรณ์ที่รัน Chute ณ เวลาที่มีคำขอ เส้นทางบน Mac ของคุณมีความหมายเมื่อ Dashboard เชื่อมต่อกับ Chute Mac บนเครื่องเดียวกัน และไม่มีความหมายเมื่อเชื่อมต่อกับ iPhone — โทรศัพท์ไม่มี /Users/… สำหรับอุปกรณ์ระยะไกล ให้เลือก text หรือ base64 เพื่อให้เนื้อหาไปพร้อมกับกฎ (ดูการตอบกลับจำลอง) หรือวางไฟล์ไว้ที่ URL แล้วใช้ URL Rewrite

URL Rewrite — URL Regex, เป้าหมาย และ ประเภท: header เขียนคำขอใหม่ในที่ (Map Remote ของ Surge) 302 และ 307 เปลี่ยนเส้นทางไคลเอนต์ และ reject, reject-200, reject-img, reject-dict, reject-array, reject-tinygif ตอบโดยไม่ติดต่อเซิร์ฟเวอร์ ดู URL Rewrite

การส่งออก

  • HAR — คลิกขวาที่รายการ: แถวที่เลือกหรือทั้งหมด เป็นไฟล์ HAR 1.2 ที่เปิดได้ในเครื่องมือนักพัฒนาของเบราว์เซอร์ (Network → นำเข้า) Charles หรือ Proxyman หนึ่งรายการต่อแถวที่มีคำขอ HTTP ที่จับไว้ แถวอื่น — เช่น TCP ล้วน — จะไม่ถูกรวม และฟิลด์ comment ของไฟล์จะบอกว่าตัดไปกี่แถว รวมเนื้อหาเมื่อการบันทึกเปิดอยู่: Dashboard จะดึงเนื้อหาจากอุปกรณ์ก่อน ระหว่างนั้นจะแสดงแผ่นที่เขียนว่า กำลังส่งออกเป็น HAR… — กำลังดึงเนื้อหาที่ดักจับไว้จากอุปกรณ์ — พร้อมแถบความคืบหน้าและ ยกเลิก ซึ่งจะล้มเลิกการส่งออก เนื้อหาที่เกิน 512 KiB จะบันทึกเพียงขนาด และการส่งออกหนึ่งครั้งมีเนื้อหาได้สูงสุด 64 MiB
  • CSV — ชุดคอลัมน์ตายตัวสำหรับสเปรดชีต: ID,Method,URL,Status Code,Status,Duration,Upload,Download,Process,Start Time ไม่ใช่คอลัมน์ของรายการเอง ในนั้นไม่มีคอลัมน์ Date, Client, Server, Policy หรือ Flags Method คือเมธอดของคำขอ และ URL คือ URL เต็ม เหมือนในการส่งออก HAR โดย HTTPS ที่ผ่านพร็อกซี HTTP โดยไม่ได้ถอดรหัสจะได้ CONNECT และ https://host ส่วนแถวที่ไม่มีคำขอ HTTP — TCP ธรรมดา หรือ HTTPS ที่ TUN ส่งต่อโดยไม่ได้ถอดรหัส — จะใส่ประเภทการเชื่อมต่อและโฮสต์แทน
  • คัดลอกคำสั่ง curl — คำสั่ง curl ที่ทำคำขอซ้ำจาก Mac ของคุณ พร้อมเมธอด ส่วนหัว และเนื้อหา โดยดึงเนื้อหาจากอุปกรณ์ก่อน Content-Length ปล่อยให้ curl คำนวณเอง แถวที่เป็นเพียงทันเนล — CONNECT ที่ไม่ได้ถอดรหัส หรือ TCP ล้วน — จะได้แค่ curl กับ URL
  • ส่งออกเป็น bin — เนื้อหาหนึ่งรายการ ตามที่จับได้

Dashboard สร้าง HAR จากรายการและเนื้อหาที่ดึงมาจากอุปกรณ์ เอนจินก็สร้างเองได้ — พร้อมกฎที่ตรง นโยบาย และการเขียนใหม่ที่ทำงานในอ็อบเจกต์ _kl ต่อรายการ และเวลาส่ง/รับที่นำมาจากการจับ — ผ่าน ส่งออก HAR ของคอนโซล หรือ GET /api/connections/export?format=har

สิ่งที่ Dashboard เข้าไม่ถึง

Dashboard คุยผ่านช่องทางควบคุมแบบไบนารีของเอนจิน และบางสิ่งที่เอนจินทำได้มีอยู่เฉพาะบน HTTP control API สำหรับสิ่งเหล่านี้ ใช้คอนโซลเว็บหรือ API:

  • ชุดข้อมูลวินิจฉัย สุขภาพ ตัวนับการปฏิเสธ และเหตุการณ์
  • ยอดรวมการทำงานต่อกฎในหน้ากฎของคอนโซล และคำตอบที่มันให้ว่า กฎนี้เคยทำงานหรือไม่
  • HAR ของเอนจินเอง ข้างต้น
  • บันทึก

อีกหนึ่งเรื่องที่ควรรู้ก่อนพึ่งพามัน:

  • บน iPhone, Apple TV และ Android การถอดรหัส HTTPS และการดักจับเนื้อหาเป็นคุณสมบัติที่ต้องมีใบอนุญาต หากไม่มีใบอนุญาต Dashboard ยังเชื่อมต่อได้และแสดงทุกการเชื่อมต่อพร้อมกฎและนโยบาย แต่แถว HTTPS จะไม่ถูกถอดรหัสเลย — ไม่มีแฟล็ก M — และแท็บข้อมูลจะเลือกไม่ได้ บน iPhone และ Android สวิตช์ MitM ของแอปจะไม่ค้างอยู่ที่เปิด และจะมีหน้าต่างให้ซื้อปรากฏขึ้นแทน ส่วน Apple TV ไม่มีแถว MitM บนหน้าจอแผงควบคุมเลย ดูใบอนุญาตและการเปิดใช้งาน
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

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

results matching ""

    No results matching ""