การดีบักบน Mac
บน Mac นั้น Chute กับทราฟฟิกที่คุณอยากดูอยู่บนเครื่องเดียวกัน สิ่งที่คู่มือ iPhoneต้องใช้หลายขั้นตอน — สาย ตัวรับฟัง รหัสผ่าน — จึงไม่จำเป็น สิ่งที่มาแทนคือคำถามอีกข้อ: ทราฟฟิกไปถึง Chute จริงหรือเปล่า เพราะบน macOS แอปพลิเคชันเลือกที่จะไม่สนใจพร็อกซีได้
1. ทำให้ทราฟฟิกวิ่งผ่าน Chute
สองกลไก แยกจากกันโดยสิ้นเชิง และเมนูแสดงทั้งคู่:
- พร็อกซีระบบ — สวิตช์บนสุดของเมนู ลงทะเบียน Chute เป็นพร็อกซี HTTP/SOCKS ของระบบ แอปพลิเคชันที่อ่านการตั้งค่าพร็อกซีระบบ (เบราว์เซอร์ แอป GUI ส่วนใหญ่) จะวิ่งผ่าน Chute ส่วนที่ไม่อ่านก็ไม่ได้รับผลกระทบ
- โหมดขั้นสูง (⌘E) — ดักทราฟฟิกที่เลเยอร์เครือข่าย ความเห็นของแอปพลิเคชันเรื่องพร็อกซีจึงไม่สำคัญอีกต่อไป นี่คือสิ่งที่คุณต้องการเมื่อแอปไม่รองรับพร็อกซีเลย ดูขั้นตอนการอนุมัติและการติดตั้งสองแบบได้ที่โหมดขั้นสูง
เครื่องมือในเทอร์มินัลคือเรื่องที่คนมักคาดไม่ถึง: curl, git, npm และเครื่องมือทำนองเดียวกันอ่าน HTTP_PROXY/HTTPS_PROXY จากสภาพแวดล้อม ไม่ใช่จากการตั้งค่าระบบ คัดลอกคำสั่ง export สำหรับ Shell (⌘C) ในเมนูจะวางบรรทัดที่ถูกต้องลงในคลิปบอร์ด —
export HTTPS_PROXY=http://127.0.0.1:8118;export HTTP_PROXY=http://127.0.0.1:8118;export NO_PROXY=127.0.0.1,localhost,.example.com
— ด้วยพอร์ตตัวรับฟัง HTTP จริงของคุณ และ NO_PROXY ที่สร้างจากรายการ skip-proxy เครื่องมือบรรทัดคำสั่งจึงข้ามสิ่งเดียวกันกับที่พร็อกซีระบบข้าม วางลงในเชลล์ที่คุณกำลังทดสอบ มันมีผลเฉพาะกับเชลล์นั้น
คุณควรเห็น: แท็บ ทราฟฟิก ในหน้าต่างหลักค่อย ๆ เต็มไปด้วยแถวขณะที่คุณใช้แอป (หน้าต่างหลักคือ เปิดแดชบอร์ด... (⌘,) ในเมนู บน Mac ที่มีการกำหนดค่าอยู่แล้วตั้งแต่ก่อนมีอินเทอร์เฟซปัจจุบัน ให้เปิด ใช้ UI หลักแบบใหม่ ในเมนูเดียวกันก่อน) ถ้าไม่มีแถวเลย แปลว่าทราฟฟิกไม่เคยไปถึง Chute — กลับมาที่ขั้นตอนนี้ แทนที่จะไปหาปัญหาการถอดรหัส
2. อ่านแท็บทราฟฟิก
ทราฟฟิก แสดงรายการการเชื่อมต่อที่กำลังทำงานพร้อมช่องค้นหาและตัวนับ (N active) แสดงคอลัมน์ ▾ สลับเลย์เอาต์:
- สองแถว (ค่าเริ่มต้น) — สองบรรทัดต่อการเชื่อมต่อ เหมาะกับการไล่ดู
- ตารางแบบกว้าง — หนึ่งแถวต่อการเชื่อมต่อ กางทุกคอลัมน์: โฮสต์, กระบวนการ, กฎ, นโยบาย, โปรโตคอล, อัปโหลด, ดาวน์โหลด, รวม, สถานะ คลิกหัวคอลัมน์เพื่อเรียงลำดับ
- จัดกลุ่มตามแอป — รวมการเชื่อมต่อไว้ใต้แอปพลิเคชันที่เปิดมัน พร้อมชื่อและไอคอน เป็นทางที่เร็วที่สุดในการตอบว่า "กระบวนการนี้กำลังคุยกับใคร"
คลิกขวาที่แถวจะได้ แสดงรายละเอียด, คัดลอกโฮสต์, คัดลอกรายละเอียด, กรองบันทึก (กระโดดไปแท็บ บันทึก โดยกรองเฉพาะการเชื่อมต่อนี้แล้ว) และ ปิดการเชื่อมต่อ
แสดงรายละเอียด เปิดหน้าต่างที่มีโฮสต์, กระบวนการ, โปรโตคอล, ระยะไกล, กฎ, นโยบาย, การเขียนใหม่, อัปโหลด, ดาวน์โหลด และสถานะของการเชื่อมต่อ — ทุกอย่างเกี่ยวกับเส้นทางที่มันถูกกำหนดอยู่ที่นี่
แท็บทราฟฟิกไม่แสดงเนื้อหาคำขอและการตอบกลับ นั่นคือหน้าที่ของปุ่ม คำขอและประวัติ ในหน้าต่างรายละเอียด ซึ่งเปิดคอนโซลเว็บที่แสดงเนื้อหาได้ สิ่งที่เปิดคือหน้าแรกของคอนโซล ไม่ใช่การเชื่อมต่อนั้น
3. ทดสอบกฎโดยไม่ต้องส่งคำขอ
แท็บ กฎ มีปุ่ม ทดสอบกฎ... พิมพ์ URL หรือแค่ชื่อโดเมน กด ทดสอบ แล้ว Chute จะตอบด้วยโฮสต์และพอร์ตที่มันแยกได้ ผลลัพธ์ DNS กฎที่ตรง นโยบายที่กฎนั้นเลือก และหมายเหตุ
ใช้มันเมื่อคำถามคือ "ทำไมอันนี้ไปตรง" หรือ "กฎสองข้อของฉันอันไหนชนะ" — มันดูจากชุดกฎที่กำลังทำงาน จึงบอกด้วยว่าการกำหนดค่าที่คุณเพิ่งแก้คือชุดที่โหลดอยู่จริงหรือไม่ ถ้าคำตอบดูเก่า ให้โหลดการกำหนดค่าใหม่ (⌘R) คำถามเดียวกันผ่าน API คือ POST /api/rules/match
4. เปิดการบันทึกและการถอดรหัส
ทั้งคู่อยู่ในเมนู และทั้งคู่มีผลกับเอนจินที่กำลังทำงาน:
- การดักจับทราฟฟิก (⌘B) — เก็บเนื้อหาคำขอและการตอบกลับ หรือก็คือการตั้งค่า
replicaค่าเริ่มต้นคือปิด และไม่มีอะไรมีเนื้อหาจนกว่าจะเปิด - เปิดใช้งาน MitM (⌘M) — เปิดการถอดรหัสสำหรับโฮสต์ในรายการ
hostnameของ[MITM]
ทั้งคู่ถูกเขียนกลับลงไฟล์การกำหนดค่า — replica และ enable ใต้ [MITM] — จึงคงอยู่ทั้งหลังการโหลดใหม่และหลังการรีสตาร์ต การกำหนดค่าระยะไกลไม่มีไฟล์ในเครื่องให้เขียน: สวิตช์ยังคงเปลี่ยนเอนจินที่กำลังทำงาน และแอปจะรายงาน บันทึกการกำหนดค่าไม่สำเร็จ ส่วนคอนโซล Dashboard และ API สลับการตั้งค่าสองตัวเดียวกันนี้โดยไม่เขียนไฟล์ หลังการสลับแบบนั้น โหลดการกำหนดค่าใหม่ (⌘R) จะคงสิ่งที่คุณตั้งไว้ เว้นแต่ไฟล์จะถูกเปลี่ยนไปในระหว่างนั้น — replica จะถูกนำมาใช้อีกครั้งเมื่อค่าของมันเองในไฟล์เปลี่ยน ส่วน [MITM] enable เมื่อคีย์ใดก็ตามในส่วน [MITM] เปลี่ยน หรือเมื่อรายการโฮสต์ถูกแก้จากคอนโซลหรือ API — และการรีสตาร์ตจะเริ่มจากไฟล์
CA บน macOS เป็นขั้นตอนเดียว ในหน้าต่างการกำหนดค่า เปิด MitM:
- สร้างใบรับรองใหม่ (หรือ นำเข้าใบรับรองจากไฟล์ PKCS#12)
- ติดตั้งใบรับรองลงในระบบ — macOS จะขอรหัสผ่านผู้ดูแลระบบแล้วเพิ่มลง System keychain เป็น root ที่เชื่อถือ ไม่มีขั้นตอน "เชื่อถือ" แยกต่างหากแบบบน iOS
- ส่งออกใบรับรอง เขียนสำเนา
.pemซึ่งเป็นวิธีนำ CA เดียวกันไปใส่โทรศัพท์ Apple TV หรือคอนเทนเนอร์
5. จำกัดให้เหลือกระบวนการเดียว
ในบรรดาแพลตฟอร์มของ Apple macOS คือแพลตฟอร์มที่ Chute รู้ว่าแอปพลิเคชันใดเปิดการเชื่อมต่อ และกฎก็ใช้ข้อมูลนั้นได้ (Chute Android ก็รู้เช่นกัน จากชื่อแพ็กเกจ):
[Rule]
PROCESS-NAME,curl,DIRECT
PROCESS-NAME,MyApp,MyProxy
ดู PROCESS-NAME, PROCESS-PATH และ PROCESS-NAME-REGEX ได้ที่กฎกระบวนการ เมื่อใช้ร่วมกับ จัดกลุ่มตามแอป ในแท็บทราฟฟิก คุณจะส่งแอปพลิเคชันเดียวผ่านพร็อกซี — หรือผ่านการจำลอง — ขณะที่ทุกอย่างที่เหลือบนเครื่องทำงานตามปกติ
6. สิ่งที่ทำได้เฉพาะบน Mac
- พาธไฟล์
data=ในกฎการตอบกลับจำลอง ไฟล์ถูกอ่านโดยอุปกรณ์ที่รัน Chute ณ เวลาที่มีคำขอ บน Mac อุปกรณ์นั้นคือเครื่องที่คุณกำลังแก้ไขอยู่ พาธจริงจึงใช้ได้ และการแก้ไฟล์เปลี่ยนการตอบกลับครั้งถัดไปโดยไม่ต้องโหลดใหม่ บนโทรศัพท์พาธเดียวกันไม่มีความหมาย — นั่นคือเหตุผลที่คู่มือ iPhone ใช้base64=แทน - ไฟล์บนดิสก์ ชิ้นส่วนบันทึกและฐานข้อมูลการเชื่อมต่ออยู่ใต้
~/Chute/Share/<run id>/ส่วนเครื่องหมายรอบการทำงานอยู่ข้าง ๆ กันใน~/Chute/Share/ดูตำแหน่งไฟล์ (macOS) คุณแนบมันไปกับรายงานข้อบกพร่องได้ตรง ๆ โดยไม่ต้องผ่านแผงแชร์ เนื้อหาที่จับได้ก็อยู่ที่นั่นด้วย ใต้DUMP/แต่เฉพาะขณะที่เอนจินทำงานเท่านั้น: การหยุดเอนจินจะลบมันทิ้ง ดังนั้นให้ส่งออกสิ่งที่ต้องการไว้ก่อน — ส่งออก HAR ในคอนโซล หรือ ส่งออกเป็น bin ใน Dashboard - ให้บริการอุปกรณ์อื่น เมื่อเปิด
allow-wifi-accessเครื่องอื่นในเครือข่ายจะชี้การตั้งค่าพร็อกซีมาที่ Mac เครื่องนี้ได้ ทราฟฟิกของพวกมันจะปรากฏในมุมมองเดียวกัน และอยู่ใต้ ระยะไกล ในแถบข้างไคลเอนต์ของ Dashboard — นี่คือวิธีตรวจสอบอุปกรณ์ที่ไม่ได้รัน Chute เลย ทั้งโน้ตบุ๊ก Windows และสมาร์ททีวี
7. เมื่อแท็บทราฟฟิกไม่พอ
- คอนโซลเว็บ — แถบเมนู → เปิดคอนโซลเว็บ มีเนื้อหา การส่งออก HAR หน้ากฎที่บอกว่าการเขียนใหม่ใดทำงานจริง และการตรวจสอบในหน้าการวินิจฉัย ต้องมี
external-http-controllerใน[General] - Chute Dashboard — แอปฟรีอีกตัวหนึ่ง บน Mac เครื่องนี้มันไม่ต้องกำหนดค่าอะไรเลย: เปิด Chute Dashboard... (⌘D) ในเมนูจะเปิดมันขึ้นมาโดยเชื่อมต่อกับ Mac เครื่องนี้ไว้แล้ว และ เชื่อมต่อกับเครื่องนี้ ในหน้าต่าง Dashboard ใหม่ ของมันก็ให้ผลเดียวกัน เส้นทางนั้นเข้าถึงเอนจินผ่านซ็อกเก็ตภายในเครื่องที่ทันเนลเปิดไว้เสมอ จึงไม่มีพอร์ตและไม่มีรหัสผ่านให้ตั้ง เฉพาะเมื่อ Dashboard รันอยู่บน Mac อีกเครื่อง เท่านั้นที่คุณต้องใช้เส้นทางระยะไกล — ใส่
external-controller-access = <password>@0.0.0.0:6170ใน[General]แล้วใช้ เชื่อมต่อกับเครื่องระยะไกล ด้วยที่อยู่ของ Mac เครื่องนี้ พอร์ตและรหัสผ่านนั้น ไม่ว่าทางไหนก็คุ้มค่าเพราะมีแผงเครื่องมือ MitM และการส่งออก HAR / curl จากการคลิกขวา - แท็บบันทึก — ยกระดับด้วย
loglevel = verboseก่อน แล้วอย่าลืมเปลี่ยนกลับ กรองบันทึก บนแถวการเชื่อมต่อจะจำกัดแท็บให้เหลือการเชื่อมต่อนั้นเพียงอันเดียว
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก