การดีบักเครือข่าย
Chute เป็นพร็อกซี แต่เหตุผลที่รันพร็อกซีบนอุปกรณ์ของตัวเองมักไม่ใช่เรื่องเส้นทาง เหตุผลคือทุกคำขอต้องผ่านจุดที่คุณควบคุมได้ คุณจึงเฝ้าดูได้ว่าแอปส่งอะไรออกไปจริง ๆ เก็บเนื้อหาไว้อ่านทีหลัง แก้คำขอหรือการตอบกลับระหว่างทาง และทำให้แบ็กเอนด์ที่ปกติดีดูเหมือนพังเพื่อดูว่าแอปของคุณจะทำอย่างไร
หน้าอ้างอิงของแต่ละกลไกอยู่ที่อื่นในคู่มือนี้: การถอดรหัส HTTPS, การตอบกลับจำลอง, URL Rewrite, การเขียนสคริปต์ JS ส่วนนี้จัดเรียงสิ่งเหล่านั้นตามลำดับที่คุณใช้งานจริง และบอกว่าอะไรเปลี่ยนไปในแต่ละแพลตฟอร์ม
สี่หน้าต่างที่มองเอนจินเดียวกัน
Chute ที่กำลังทำงานมีตัวเดียว แต่มองได้สี่ทาง การเลือกหน้าต่างผิดคือสาเหตุที่พบบ่อยของ "มันไม่อยู่ตรงนั้น"
| ทำงานบน | เนื้อหาคำขอและการตอบกลับ | เปลี่ยนเอนจินที่กำลังทำงาน | ต้องมี | |
|---|---|---|---|---|
| ตัวแอปเอง | อุปกรณ์ | iOS และ Android มี; macOS และ tvOS ไม่มี | เฉพาะสวิตช์ — Chute Mac บันทึกสวิตช์เหล่านี้ลงไฟล์การกำหนดค่าด้วย | ไม่ต้อง |
| คอนโซลเว็บ | เบราว์เซอร์บนอุปกรณ์ใดก็ได้ | มี | โฮสต์ MitM, กฎเขียนใหม่ทุกตระกูล, นโยบาย, การกำหนดค่า | external-http-controller |
| Chute Dashboard | Mac | มี | โฮสต์ MitM, กฎเขียนใหม่ทุกตระกูล, สวิตช์สองตัว | ไม่ต้อง สำหรับ Chute Mac บน Mac เครื่องเดียวกันนั้น; external-controller-access สำหรับอุปกรณ์อื่น |
| HTTP Control API | อะไรก็ได้ที่พูด HTTP | มี แบบ base64 | ทุกอย่างที่คอนโซลทำได้ | external-http-controller |
คอนโซลกับ Dashboard ทับซ้อนกันมากแต่เข้าถึงคนละทาง — คอนโซลเสิร์ฟโดยเอนจินเองและเปิดในเบราว์เซอร์ ส่วน Dashboard เป็นแอป Mac ที่คุยผ่านช่องทางไบนารี ไม่มีฝ่ายใดครอบคลุมอีกฝ่ายทั้งหมด ดูความต่างได้ที่ สิ่งที่ Dashboard เข้าไม่ถึง
ตั้งสวิตช์สี่ตัวให้ถูกก่อน
เกือบทุกกรณีของ "เห็นการเชื่อมต่อแต่ไม่เห็นคำขอ" จบลงที่หนึ่งในสี่ข้อนี้ ตามลำดับนี้:
- ทราฟฟิกไปถึง Chute จริง ๆ แถวหนึ่งในมุมมองทราฟฟิกคือหลักฐาน ถ้าไม่มีอะไรเลย นั่นคือปัญหาการเข้าควบคุม ไม่ใช่ปัญหาการดีบัก — ดูการแก้ไขปัญหา
- ติดตั้ง CA แล้วและเชื่อถือแล้ว บน iOS เป็นสองขั้นตอน บน macOS เป็นหนึ่ง และบน tvOS ไม่มีขั้นตอนใดอยู่ในแอปเลย — ดูการติดตั้งและเชื่อถือใบรับรอง CA
- โฮสต์อยู่ในรายการ MitM Chute ถอดรหัสเฉพาะโฮสต์ที่ประกาศไว้ ใน Dashboard แถวที่ไม่มีแฟล็ก
Mคือแถวที่ไม่เคยถูกถอดรหัส - เปิดการบันทึกอยู่
replica = trueหรือสวิตช์ (การดักจับทราฟฟิก ในแอป) บน iPhone, Apple TV และ Android เอนจินยังต้องมีใบอนุญาตด้วย ลำพังคีย์นี้จึงจับอะไรไม่ได้เลยบนแพลตฟอร์มเหล่านั้น ถ้าไม่เปิดการบันทึก ทุกแถวยังคงมีกฎ นโยบาย และเวลาของมัน ขาดแค่เนื้อหา จากนั้น[Replica]จะจำกัดต่อว่าจะเก็บอะไรไว้ และสิ่งที่เก็บไว้ก็อยู่ได้เพียงตลอดการรันครั้งนั้น: Chute จะลบเนื้อหาที่บันทึกไว้เมื่อหยุดทำงาน
ข้อ 3 และ 4 สลับได้ตอนรันไทม์จากคอนโซล จาก Dashboard และผ่าน API ด้วย และไม่มีอันไหนเขียนกลับลงไฟล์การกำหนดค่า หลังรีสตาร์ต ค่าในไฟล์จะมีผลแทน
แต่ละแพลตฟอร์มให้อะไรได้บ้าง
| Chute iOS | Chute Mac | Chute tvOS | Chute Android | |
|---|---|---|---|---|
| ตรวจสอบในแอป | หน้าแดชบอร์ด — ภาพรวม คำขอ การตอบกลับ พร้อมเนื้อหา | แท็บ ทราฟฟิก — เฉพาะข้อมูลเส้นทาง ไม่มีเนื้อหา | การวินิจฉัย → แดชบอร์ด — เฉพาะข้อมูลเส้นทาง ไม่มีเนื้อหา | แดชบอร์ด — ทันเนล พร้อมเนื้อหา |
| สลับ MitM ในแอป | สวิตช์ในแผงควบคุม (ต้องมีใบอนุญาต) | แถบเมนู → เปิดใช้งาน MitM (⌘M) | แพลตฟอร์มนี้ไม่มีสวิตช์ | แผงควบคุม → MitM (ต้องมีใบอนุญาต) |
| สลับการบันทึกในแอป | แผงควบคุม → การดักจับทราฟฟิก (ต้องมีใบอนุญาต) | แถบเมนู → การดักจับทราฟฟิก (⌘B) | แผงควบคุม → การดักจับทราฟฟิก (ต้องมีใบอนุญาต) | แผงควบคุม → การดักจับทราฟฟิก (ต้องมีใบอนุญาต) |
| ติดตั้ง CA | ในแอป แล้วไปเชื่อถือในการตั้งค่า | ในแอป ขั้นตอนเดียว | MDM หรือ Apple Configurator เท่านั้น | นำเข้า P12 ในแอป แล้ว ติดตั้ง CA จะเปิดตัวติดตั้งของ Android |
| Chute Dashboard เข้าถึงอย่างไร | สาย USB หรือ Wi-Fi | เชื่อมต่อกับเครื่องนี้ บน Mac เครื่องนั้น | Wi-Fi | สาย USB (adb) หรือเครือข่าย |
| เอาไฟล์ออกจากอุปกรณ์ | แผงแชร์ | ระบบไฟล์ | คอนโซล ผ่าน QR Code | แผงแชร์ |
ไปต่อที่ไหน
- การดีบัก iPhone จาก Mac — เส้นทางทั้งหมด ตั้งแต่โทรศัพท์เครื่องใหม่จนถึงเนื้อหาที่ถอดรหัสแล้วบนจอ Mac
- การดีบักบน Mac — ทราฟฟิกของ Mac เอง รวมถึงเครื่องมือในเทอร์มินัลและการแยกตามกระบวนการ
- การดีบัก Apple TV — อุปกรณ์ที่ไม่มีเบราว์เซอร์ ไม่มีแผงแชร์ และติดตั้งใบรับรองด้วยตัวเองไม่ได้
- Replica — การเชื่อมต่อไหนที่เก็บเนื้อหาไว้ และจะเลิกดักจับทุกอย่างได้อย่างไร
- การจำลองและการแทรกความผิดพลาด — การตอบกลับสำเร็จรูป รหัสสถานะข้อผิดพลาด การแทรกความหน่วง และสิ่งที่ Chute ทำไม่ได้จริง ๆ
ถ้าคำถามคือ "มันไม่ทำงาน" แทนที่จะเป็น "มันกำลังทำอะไร" ให้เริ่มที่การแก้ไขปัญหา แทน โดยเฉพาะทำไมการเขียนใหม่ของฉันไม่ทำอะไรเลย? ซึ่งเป็นคำถามที่ส่วนนี้ก่อให้เกิดบ่อยที่สุด
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก