8 điểm bởi GN⁺ 2025-02-04 | 2 bình luận | Chia sẻ qua WhatsApp
  • httptap là một công cụ giúp bạn dễ dàng xem các yêu cầu HTTP và HTTPS do chương trình Linux thực hiện
    • Có thể dùng httptap -- để theo dõi các yêu cầu mạng của một lệnh cụ thể
  • Ví dụ, khi gửi yêu cầu tới một URL cụ thể bằng lệnh curl, httptap sẽ in ra yêu cầu và phản hồi tương ứng
    • httptap không cần quyền root và không ảnh hưởng đến toàn bộ hệ thống
    • Hiện chỉ hoạt động trên Linux, và việc port sang hệ điều hành khác là khó khăn
  • Cách cài đặt
  • Bắt đầu nhanh
    • Có thể gửi yêu cầu HTTP bằng lệnh curl và kiểm tra yêu cầu cũng như phản hồi bằng httptap
    • Khi dùng tùy chọn -L để theo dõi chuyển hướng, sẽ phát sinh thêm các yêu cầu HTTP
  • Ví dụ sử dụng với Google Cloud và kubectl
    • Có thể theo dõi các yêu cầu HTTP phát sinh khi dùng lệnh gcloud compute instances list để liệt kê các compute instance trên Google Cloud
    • Có thể theo dõi các yêu cầu HTTP phát sinh khi dùng lệnh kubectl get all để liệt kê tài nguyên trong cụm Kubernetes
  • DNS-over-HTTP
    • Có thể thực hiện yêu cầu DNS-over-HTTP bằng tùy chọn --doh-url của curl.
    • Có thể dùng httptap để kiểm tra yêu cầu và phản hồi DNS.
  • Xuất HAR
    • Có thể dump các yêu cầu và phản hồi HTTP thành tệp HAR.
    • Tệp HAR có thể được trực quan hóa bằng nhiều trình xem khác nhau.
  • Cơ chế hoạt động
    • httptap dùng network namespace để chạy lệnh trong môi trường cách ly
    • Tạo thiết bị TUN để theo dõi lưu lượng mạng, và tạo một cơ quan chứng thực tạm thời để giải mã lưu lượng HTTPS
  • Lưu ý
    • Tiến trình không thể lắng nghe các kết nối mạng đi vào.
    • Cần quyền truy cập vào /dev/net/tun.
    • Mọi yêu cầu ICMP echo đều chỉ được echo lại mà không gửi gói ICMP ra mạng thực tế

2 bình luận

 
halfenif 2025-02-06

nó được phát triển tại Monastic Academy ở Vermont, Mỹ. Chúng tôi tin rằng thời khóa biểu tu viện, và rộng hơn là việc thực hành con đường tâm linh Phật giáo, tạo ra những điều kiện lý tưởng cho phát triển công nghệ.

Trong lúc thử nghiệm và xem GitHub thì thấy vậy. Có khi đây là sản phẩm do những người đang tu tập ở tu viện làm ra như một phần của quá trình thành tựu tinh thần cũng nên.

 
GN⁺ 2025-02-04
Ý kiến trên Hacker News
  • Phần "How it was made" trong README thú vị không kém gì bản thân công cụ

    • Việc phát triển phần mềm được thực hiện thông qua đời sống cộng đồng và thực hành thiền định
    • Ý tưởng chạy tiến trình trong một network namespace bị cô lập là rất thiên tài
    • Tôi quan tâm đến phần HTTPS, nơi nó thiết lập các biến môi trường để hướng chương trình dùng CA bundle trong thư mục tạm thời
    • Có thể phát sinh vấn đề tương tự http_proxy, và chương trình có thể bỏ qua biến đó
    • Nó mount một overlay filesystem lên /etc/resolv.conf, và tôi tự hỏi liệu có hữu ích không nếu mount thư mục /etc/ca-certificates bằng CA bundle tạm thời
  • httptap là một trình truy vết HTTP theo phạm vi tiến trình có thể chạy mà không cần quyền root

    • Chạy bằng httptap <command> để theo dõi các request và response HTTP/HTTPS ra standard output
    • Nó chạy lệnh trong một network namespace bị cô lập và dùng TCP/IP stack riêng
    • Đây không phải HTTP proxy, nên không cần cấu hình lệnh để dùng HTTP proxy
    • Nó giải mã lưu lượng TLS bằng cách tạo CA theo thời gian thực
    • Nó không cài đặt quy tắc iptables hay thực hiện thay đổi trên toàn hệ thống
  • Một công cụ khác có thể phân tích lưu lượng mạng mà không cần quyền root là rootless Podman và Pasta

    • Thêm tùy chọn --network=pasta:--pcap,myfile.pcap để ghi lưu lượng mạng vào tệp PCAP
    • Tôi đã viết một ví dụ đơn giản để phân tích tệp PCAP đã ghi bằng tshark
  • Dùng thiết bị TUN là một ý tưởng rất hay, và phần "How it was made" là một trong những README hay nhất trên GitHub

    • Tôi đang phát triển một công cụ tên là Subtrace, có thể tự động chặn các request đi vào và đi ra
    • Nó dùng Seccomp BPF để chặn các system call như socket, connect, recv, accept, v.v., rồi proxy mọi kết nối TCP qua Subtrace
    • Nó phân tích các request HTTP từ luồng TCP và hiển thị cho người dùng trong tab Network của Chrome DevTools
  • Tôi sẽ dùng ngay nó để debug cấu hình nginx

    • Hiện tại tôi dùng curl -v để kiểm tra đầu ra thủ công, nhưng công cụ này giúp phát hiện ngay các vòng lặp chuyển hướng và những vấn đề tương tự
  • Gần đây tôi đã xây dựng tính năng tương tự trong mitmproxy, nhưng có những trade-off khác

    • Nó cần quyền root, và vẫn chưa có cài đặt chứng chỉ tự động
    • Bù lại không cần chạy ứng dụng trong namespace riêng, nên có thể bắt được các tiến trình đang chạy sẵn
  • Cách tiếp cận khác dùng LD_PRELOAD có thể thất bại với ELF liên kết tĩnh, ví dụ như binary golang

  • Đây là một cách tận dụng rất hay TCP/IP stack không gian người dùng của gVisor

  • Mitmproxy v11.1 cũng có thể thực hiện tính năng tương tự