← เครื่องมือทั้งหมด
บันทึกของเรา

ส่งต่อ webhook ของ UnifyPort ไป localhost ด้วย smee.io

UnifyPort ส่งอีเวนต์ไปยัง URL HTTPS สาธารณะ smee.io เชื่อมมันเข้ากับโน้ตบุ๊กของคุณด้วยแค่ client ของ Node — ไม่ต้องมี binary ของ tunnel และไม่ต้องมีบัญชี

smee.io แก้ปัญหาอะไร

smee.io เป็น proxy ที่ดูแลโดย GitHub: เปิดครั้งเดียวก็ได้ URL ของ channel สาธารณะ ทุกอย่างที่ POST เข้าไปยัง channel นั้นจะถูกกระจายซ้ำไปยังทุก client ที่เชื่อมต่ออยู่ รัน smee-client ตัวเล็ก ๆ บนเครื่องของคุณ แล้วมันจะ replay แต่ละ request เข้าไปยัง handler ในเครื่อง — webhook จากอินเทอร์เน็ตสาธารณะจึงถึง localhost ได้โดยไม่ต้องติดตั้งซอฟต์แวร์ tunnel

ตั้งค่า handler ของ UnifyPort ใน 5 นาที

สมมติว่า handler ของคุณฟังอยู่ที่พอร์ต 3000:

  1. 1. เปิด smee.io แล้วกด Start a new channel คัดลอก URL ของ channel
  2. 2. ลงทะเบียนผ่าน POST /v1/webhook-endpoints — ตั้ง url เป็น channel นี้ และระหว่างทดลองให้ subscribed_events เป็น ["*"]
  3. 3. รัน client แล้วชี้ไปที่ route ในเครื่องของคุณ:
  4. 4. กระตุ้นอีเวนต์จากฝั่งผู้ให้บริการ — ข้อความ Telegram, ข้อความ WhatsApp — แล้วดูมันมาถึง localhost:3000
npx smee-client -u https://smee.io/<channel> -t http://localhost:3000/events

การตรวจลายเซ็นยังทำงานได้

smee ส่งต่อ raw body แบบไม่แตะต้อง ดังนั้นไบต์ที่ handler ของคุณเห็นคือสิ่งที่ UnifyPort เซ็นพอดี การตรวจสอบเหมือนกับโปรดักชันทุกประการ — คำนวณใหม่แล้วเทียบกับ X-Device-Signature:

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

ถ้าอยากยืนยันด้วยมือก่อนเขียนโค้ด ลองรันอัลกอริทึมเดียวกันใน คู่มือ CyberChef ของเรา หรือแบบออฟไลน์ด้วย DevToys

เมื่อ smee.io ไม่ใช่คำตอบที่ใช่

  • อะไรก็ตามที่ใกล้เคียงโปรดักชัน channel เป็นสาธารณะและเดาได้ — ให้ถือว่าใครก็อ่านหรือยัดทราฟฟิกเข้ามาได้ ใช้แต่ secret แบบใช้แล้วทิ้งเท่านั้น
  • การทดสอบความถี่สูงหรือไวต่อ latency relay สาธารณะเพิ่มอีกหนึ่ง hop; tunnel ในเครื่องอย่าง ngrok ที่มี inspector ที่ 4040 จะนิ่งกว่า
  • คุณยังต้องดูทราฟฟิก HTTP อื่นด้วย smee relay เฉพาะ channel ของมันเอง; ngrok หรือ Pipedream RequestBin ให้ภาพที่ครบกว่า

คำถามที่พบบ่อย

smee.io แก้ไข body ของ request ไหม?
ไม่ มัน relay ไบต์ raw ดังนั้นการตรวจ X-Device-Signature ทำงานเหมือนโปรดักชันทุกประการ — คำนวณ hex(HMAC-SHA256(secret, timestamp + "." + body)) ใหม่แล้วเทียบ
ต้องติดตั้งอะไรไหม?
แค่ Node — รัน client ด้วย npx smee-client ก็พอ ไม่ต้องติดตั้งแบบ global และไม่ต้องมี binary ของ tunnel
smee.io ปลอดภัยสำหรับ webhook โปรดักชันไหม?
ไม่ channel เป็นสาธารณะและเดาได้ ใช้สำหรับการพัฒนาในเครื่องด้วย signing secret แบบใช้แล้วทิ้ง; สำหรับ staging หรือโปรดักชันให้เลือก tunnel ส่วนตัวหรือ endpoint จริงของคุณ

ลูปการพัฒนาในเครื่องของ UnifyPort ที่แนะนำ

มีบัญชีหนึ่งไว้สำหรับการพัฒนาในเครื่องโดยเฉพาะ, ให้ client ของ smee รันค้างไว้ใน pane ของเทอร์มินัล, และ handler รีโหลดเมื่อบันทึก เมื่อ delivery ดูผิดปกติ ให้กระตุ้นใหม่จากฝั่งผู้ให้บริการ หรือ replay จาก log ของ handler — และถ้าลายเซ็นไม่ตรงอีกต่อไป ให้ตรวจด้วย CyberChef