httptap เป็นเครื่องมือที่ช่วยให้ดูคำขอ HTTP และ HTTPS ที่โปรแกรมบน Linux ส่งออกไปได้อย่างง่ายดาย
- สามารถติดตามคำขอเครือข่ายของคำสั่งที่ต้องการได้ด้วย
httptap --
- ตัวอย่างเช่น เมื่อใช้คำสั่ง
curl เพื่อส่งคำขอไปยัง URL หนึ่ง httptap จะแสดงทั้งคำขอและคำตอบกลับ
httptap ไม่ต้องใช้สิทธิ์ root และไม่ส่งผลกระทบต่อทั้งระบบ
- ปัจจุบันทำงานได้เฉพาะบน Linux เท่านั้น และพอร์ตไปยังระบบปฏิบัติการอื่นได้ยาก
- วิธีติดตั้ง
- เริ่มต้นใช้งานอย่างรวดเร็ว
- สามารถใช้คำสั่ง
curl เพื่อส่งคำขอ HTTP และตรวจสอบคำขอรวมถึงคำตอบกลับด้วย httptap
- หากใช้ตัวเลือก
-L เพื่อตามการ redirect จะมีคำขอ HTTP เพิ่มเติมเกิดขึ้น
- ตัวอย่างการใช้งานกับ Google Cloud และ
kubectl
- สามารถติดตามคำขอ HTTP ที่เกิดขึ้นเมื่อใช้คำสั่ง
gcloud compute instances list เพื่อแสดงรายการ compute instance บน Google Cloud
- สามารถติดตามคำขอ HTTP ที่เกิดขึ้นเมื่อใช้คำสั่ง
kubectl get all เพื่อแสดงรายการทรัพยากรในคลัสเตอร์ Kubernetes
- DNS-over-HTTP
- สามารถใช้ตัวเลือก
--doh-url ของ curl เพื่อส่งคำขอ DNS-over-HTTP ได้
- สามารถใช้
httptap เพื่อตรวจสอบคำขอและคำตอบกลับของ DNS ได้
- เอาต์พุต HAR
- สามารถดัมพ์คำขอและคำตอบกลับ HTTP เป็นไฟล์ HAR ได้
- ไฟล์ HAR สามารถนำไปแสดงผลแบบภาพผ่าน viewer หลากหลายแบบได้
- หลักการทำงาน
httptap ใช้ network namespace เพื่อรันคำสั่งในสภาพแวดล้อมที่แยกออกจากกัน
- สร้างอุปกรณ์ TUN เพื่อติดตามทราฟฟิกเครือข่าย และสร้าง certificate authority ชั่วคราวเพื่อถอดรหัสทราฟฟิก HTTPS
- ข้อควรระวัง
- โปรเซสจะไม่สามารถรับการเชื่อมต่อเครือข่ายขาเข้าได้
- ต้องมีสิทธิ์เข้าถึง
/dev/net/tun
- คำขอ ICMP echo ทั้งหมดจะถูก echo กลับโดยไม่ส่งแพ็กเก็ต ICMP ไปยังเครือข่ายจริง
2 ความคิดเห็น
มันถูกพัฒนาขึ้นที่ Monastic Academy ในรัฐเวอร์มอนต์ สหรัฐอเมริกา เราเชื่อว่าตารางชีวิตแบบนักบวช และการปฏิบัติตามเส้นทางจิตวิญญาณของพุทธศาสนาโดยทั่วไป เป็นเงื่อนไขที่เหมาะอย่างยิ่งสำหรับการพัฒนาเทคโนโลยี
ความคิดเห็นบน Hacker News
ส่วน "How it was made" ใน README น่าสนใจพอๆ กับตัวเครื่องมือเอง
http_proxyและโปรแกรมอาจเพิกเฉยต่อตัวแปรนั้นได้/etc/resolv.confและสงสัยว่าจะช่วยได้ไหมหากเมานต์ไดเรกทอรี/etc/ca-certificatesโดยใช้ CA bundle ชั่วคราวhttptap เป็นตัวติดตาม HTTP ระดับโปรเซสที่รันได้โดยไม่ต้องใช้สิทธิ์รูท
httptap <command>เพื่อดูการติดตามคำขอและการตอบกลับ HTTP/HTTPS ผ่าน standard output ได้อีกเครื่องมือหนึ่งที่ใช้วิเคราะห์ทราฟฟิกเครือข่ายได้โดยไม่ต้องใช้สิทธิ์รูทคือ rootless Podman และ Pasta
--network=pasta:--pcap,myfile.pcapเพื่อบันทึกทราฟฟิกเครือข่ายเป็นไฟล์ PCAPการใช้ TUN device เป็นไอเดียที่ยอดเยี่ยม และส่วน "How it was made" ก็เป็นหนึ่งใน README บน GitHub ที่ดีที่สุด
น่าจะนำไปใช้ดีบักการตั้งค่า nginx ได้ทันที
เพิ่งสร้างความสามารถคล้ายกันใน mitmproxy เมื่อไม่นานมานี้ แต่มี trade-off คนละแบบ
วิธีอื่นที่ใช้ LD_PRELOAD อาจล้มเหลวกับ ELF ที่ลิงก์แบบตายตัว เช่น golang binary
เป็นการนำ TCP/IP stack ใน user space ของ gVisor มาใช้ได้อย่างยอดเยี่ยม
Mitmproxy v11.1 ก็สามารถทำสิ่งที่คล้ายกันได้