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