← Tất cả công cụ
Ghi chú của chúng tôi

Chuyển tiếp webhook UnifyPort về localhost với smee.io

UnifyPort gửi sự kiện tới một URL HTTPS công khai. smee.io bắc cầu nó về laptop của bạn chỉ với một client Node — không cần binary tunnel, không cần tài khoản.

smee.io giải quyết điều gì

smee.io là một proxy do GitHub duy trì: mở một lần là có ngay một URL channel công khai. Mọi thứ POST tới channel đó được phát lại cho mọi client đang kết nối. Chạy smee-client nhỏ gọn trên máy bạn, nó sẽ replay từng request vào handler cục bộ — nhờ vậy webhook từ internet công khai đến được localhost mà không cần cài phần mềm tunnel.

Thiết lập handler UnifyPort trong năm phút

Giả sử handler của bạn lắng nghe ở cổng 3000:

  1. 1. Mở smee.io và nhấn Start a new channel. Sao chép URL channel.
  2. 2. Đăng ký nó qua POST /v1/webhook-endpoints — đặt url bằng channel và để subscribed_events["*"] trong lúc thử nghiệm.
  3. 3. Chạy client và trỏ nó vào route cục bộ của bạn:
  4. 4. Kích hoạt một sự kiện từ phía nhà cung cấp — một tin nhắn Telegram, một tin nhắn WhatsApp — và xem nó đến localhost:3000.
npx smee-client -u https://smee.io/<channel> -t http://localhost:3000/events

Xác minh chữ ký vẫn hoạt động

smee chuyển tiếp raw body nguyên vẹn, nên các byte handler của bạn nhận được đúng là những gì UnifyPort đã ký. Việc xác minh giống hệt production — tính lại và so với X-Device-Signature:

X-Device-Signature = hex( HMAC-SHA256( secret, timestamp + "." + raw_body ) )

Để kiểm chứng thủ công trước khi viết code, hãy chạy cùng thuật toán trong hướng dẫn CyberChef hoặc offline với DevToys.

Khi nào smee.io không phải lựa chọn đúng

  • Bất cứ thứ gì giống production. Channel là công khai và dễ đoán — hãy coi như ai cũng có thể đọc hoặc chèn lưu lượng. Chỉ dùng secret dùng một lần.
  • Test tần suất cao hoặc nhạy với độ trễ. Relay công khai thêm một chặng; một tunnel cục bộ như ngrok với inspector ở 4040 ổn định hơn.
  • Bạn còn cần xem lưu lượng HTTP khác. smee chỉ relay channel của nó; ngrok hoặc Pipedream RequestBin cho bạn cái nhìn đầy đủ hơn.

Câu hỏi thường gặp

smee.io có sửa đổi body của request không?
Không. Nó relay các byte raw, nên việc xác minh X-Device-Signature hoạt động đúng như production — tính lại hex(HMAC-SHA256(secret, timestamp + "." + body)) rồi so sánh.
Tôi có cần cài gì không?
Chỉ Node — chạy client bằng npx smee-client, không cần cài toàn cục và không cần binary tunnel.
smee.io có an toàn cho webhook production không?
Không. Channel công khai và dễ đoán. Hãy dùng nó cho phát triển cục bộ với signing secret dùng một lần; với staging hay production thì ưu tiên tunnel riêng tư hoặc endpoint thật của bạn.

Vòng lặp phát triển cục bộ UnifyPort được khuyến nghị

Một tài khoản riêng cho phát triển cục bộ, client smee chạy thường trực trong một pane terminal, và handler tự nạp lại khi lưu. Khi một delivery có vẻ sai, kích hoạt lại từ phía nhà cung cấp hoặc replay từ log handler — và nếu chữ ký không khớp nữa, hãy xác minh bằng CyberChef.