פיתוח מקומי מול אירועים אמיתיים
קובץ אחד, בלי מנהרה: אירועים אמיתיים וחתומים מגיעים ל-localhost, וה-handler שלכם עובד בדיוק כמו בפרודקשן.
בקצרה
- מורידים קובץ אחד, מריצים אותו עם מפתח ה-API, ואירועים חדשים מגיעים ל-localhost, חתומים.
- זו לא מנהרה: הכלי מושך ומעביר, כך ששום דבר במחשב שלכם לא נחשף לאינטרנט.
- ה-handler המקומי מאמת את אותן כותרות Standard Webhooks שפרודקשן ישלח אליו.
למה זה חשוב
ה-handler של וובהוקים הוא קוד שקשה לבדוק מקומית. האירועים נוצרים אצל מישהו אחר, החתימה תלויה בסוד שנמצא בשרת, והדרך הקלה היא לזייף גוף JSON ולשלוח אותו ביד. הבעיה היא שכך בודקים handler שלא מאמת כלום, ומגלים את זה רק בפרודקשן. המטרה כאן היא שהאירועים שמגיעים למחשב שלכם יהיו האירועים האמיתיים של הפרויקט, חתומים באותה צורה, כדי שקוד האימות ירוץ גם בפיתוח.
הרצה
curl -sO https://hookget.com/cli/hookget-listen.mjs
node hookget-listen.mjs --key $HOOKGET_KEY --port 3000 --path /webhooks
מאותו רגע, כל אירוע חדש בפרויקט נשלח ב-POST אל http://127.0.0.1:3000/webhooks עם הכותרות
webhook-id, webhook-timestamp ו-webhook-signature. אפשר להעביר
--secret whsec_… כדי לחתום בסוד חתימה שה-handler כבר מכיר, או לתת לכלי ליצור סוד חד פעמי
ולהדפיס אותו.
מה הוא מדפיס
› forwarding new events → http://127.0.0.1:3000/webhooks (poll 2000ms)
✓ order.created msg_01M0… → 200
✗ order.refunded msg_01M0… → 500
כל שורה היא מסירה אחת: סוג האירוע, מזהה ההודעה, והסטטוס שה-handler המקומי החזיר. כך רואים מיד איזה אירוע עבר ואיזה נכשל, בלי לפתוח לוגים.
האפשרויות
| דגל | מה הוא עושה |
|---|---|
--types a.b,c.d | מעביר רק את סוגי האירועים האלה |
--path /hooks | הנתיב המקומי שאליו נשלח ה-POST (ברירת מחדל /webhooks) |
--secret whsec_… | חותם בסוד ידוע במקום בסוד חד פעמי |
--once | מעביר את כל מה שחדש ויוצא, בשביל סקריפטים ו-CI |
--api https://… | מפנה לכתובת API אחרת |
למה זו לא מנהרה, בכוונה. מנהרה מעבירה את התעבורה שלכם דרך שם מארח של צד שלישי ופותחת נתיב מהאינטרנט אל המחשב הנייד שלכם. בגלל זה גם סקירות אבטחה לא אוהבות מנהרות. משיכה מעבירה את אותם אירועים בלי שום משטח חשיפה כזה. המחיר: עד שתי שניות של השהיה, ובפיתוח לא מרגישים אותן.
שאלות
איך מקבלים וובהוקים ב-localhost בלי מנהרה?
מורידים את hookget-listen.mjs ומריצים אותו עם מפתח ה-API, הפורט והנתיב המקומי. הכלי
מושך אירועים חדשים מהפרויקט ושולח כל אחד ב-POST לכתובת המקומית, כך ששום דבר במחשב לא נפתח לאינטרנט.
האם האירועים שמגיעים ל-localhost חתומים?
כן. הם מגיעים עם webhook-id, webhook-timestamp ו-webhook-signature,
אותן כותרות שפרודקשן שולח. עם --secret החתימה נעשית בסוד שה-handler כבר מכיר, ובלעדיו הכלי
יוצר סוד חד פעמי ומדפיס אותו.
כמה השהיה יש בהעברה?
עד שתי שניות. הכלי מושך כל 2000 מילישניות, וזה המחיר של לוותר על מנהרה. בפיתוח זה כמעט לא מורגש.
אפשר להשתמש בזה ב-CI?
כן. הדגל --once מעביר את מה שחדש ויוצא, כך שאפשר להריץ אותו כשלב בסקריפט או בצינור
CI במקום להשאיר תהליך פתוח.
למה לא להשתמש במנהרה כמו רוב הכלים?
כי מנהרה מעבירה את התעבורה דרך שם מארח של צד שלישי ופותחת נתיב מהאינטרנט אל המחשב שלכם. משיכה מעבירה את אותם אירועים בלי משטח החשיפה הזה, ולכן גם לא מעוררת התנגדות בסקירת אבטחה.
להתחיל למסור וובהוקים היום
מפנים את הוובהוקים ל-HookGet ורואים את המסירה הראשונה מגיעה, חתומה, תוך פחות מדקה.
פתיחת חשבון חינם לנסות את בודק הוובהוקים החינמי
10,000 מסירות בחודש בחינם, בלי כרטיס אשראי. המסלול החינמי חוסם ולא מחייב, כך שניסיון לא יכול להסתיים בחשבונית.