OTP و تحقق رقم الجوال عبر SMS لمطوّري الذكاء الاصطناعي
أضِف التحقق برمز SMS إلى أي مشروع، سواء من Claude Code أو Cursor أو Windsurf أو من خلال HTTP العادي. الرموز تخرج من هاتفك Android، والمقارنة تحدث بزمن ثابت، وسقف صارم 5 رموز لكل رقم في اليوم يقفل الباب أمام الإساءة.
نقطتان فقط، دورة طلب واحدة
نفس المنطق سواء كان الطلب من مساعد ذكي عبر MCP، أو من عميل خارجي عبر HTTPS، أو من خلفية تطبيقك.
send_otp
يولّد رمزًا، يخزّن قيمته المُجزّأة مع وقت الصلاحية وعدّاد المحاولات، ثم يرسل الرسالة عبر هاتفك Android.
المستخدم يستلم الرمز
يصل الرمز للعميل على جواله ويكتبه في نموذج التحقق داخل تطبيقك.
verify_otp
مقارنة بزمن ثابت مع آخر رمز صادر. تُعيد القبول مع عدد المحاولات المتبقية عند الخطأ.
POST فقط، توثيق Bearer
طلبات GET تُرجع 405، والكوكيز تُتجاهل. مفتاح الـ API لا يظهر أبدًا في رابط أو في سجل المتصفح.
نقطة الإرسال
POST https://app.sms8.io/ajax/otp-send.php
- phone — مطلوب، بصيغة E.164
- length — من 4 إلى 8 خانات، الافتراضي 6
- expires_in — من 60 إلى 900 ثانية، الافتراضي 300
- max_attempts — من 1 إلى 10، الافتراضي 5
- template — نص الرسالة مع العنصر النائب
{code} - option / devices / useRandomDevice — اختيار الجهاز المُرسل
نقطة التحقق
POST https://app.sms8.io/ajax/otp-verify.php
- phone — مطلوب، بصيغة E.164
- code — الرمز الذي كتبه المستخدم
الردود:
{verified: true}عند النجاح{verified: false, reason: "code_mismatch", attempts_left: 4}- أسباب أخرى:
expiredوnot_foundوmax_attempts
طلبات جاهزة للتشغيل
إرسال OTP
curl -X POST https://app.sms8.io/ajax/otp-send.php \ -H "Authorization: Bearer YOUR_SMS8_API_KEY" \ -d "phone=+966501234567" # لتخصيص القيم الافتراضية: # -d "length=6" -d "expires_in=300" # -d "max_attempts=5" # -d "template=رمزك هو {code}، صالح لدقائق." # لاختيار الجهاز أو الشريحة المرسلة: # -d "option=0" --data-urlencode 'devices=["DEVICE_ID"]' # -d "option=1" # توزيع على كل الأجهزة # -d "option=2" # توزيع على كل الشرائح # -d "useRandomDevice=1" # جهاز عشوائي واحد
التحقق من الرمز
curl -X POST https://app.sms8.io/ajax/otp-verify.php \ -H "Authorization: Bearer YOUR_SMS8_API_KEY" \ -d "phone=+966501234567" \ -d "code=123456" # نجاح: {"verified": true} # فشل: {"verified": false, "reason": "code_mismatch", "attempts_left": 4}
من مساعد ذكاء اصطناعي (MCP)
إذا كان Claude Code أو Cursor أو Windsurf متصلًا بـ mcp.sms8.io، فقل ببساطة: "أضِف التحقق برقم الجوال إلى صفحة التسجيل عبر sms8 MCP". المساعد سيستدعي send_otp و verify_otp بإعداداتك الافتراضية ويُغلّف نقاط التسجيل والدخول الموجودة.
اضبط القيم مرة واحدة من لوحة التحكم
حدّد القيم الاحتياطية، وستُطبَّق تلقائيًا متى ترك المستدعي الحقل فارغًا. الحدود الصارمة تبقى كما هي مهما تغيّرت الإعدادات.
طول الرمز
من 4 إلى 8 خانات. الافتراضي 6. اختر بين سهولة التذكّر ومقاومة التخمين.
الصلاحية
من 60 إلى 900 ثانية. الافتراضي 300 (5 دقائق). قصيرة بما يكفي ضد إعادة الاستخدام، طويلة بما يكفي لكتابة الرمز براحة.
عدد محاولات التحقق
من 1 إلى 10 محاولات خاطئة قبل قفل الرمز. الافتراضي 5.
فترة التهدئة
من 30 إلى 600 ثانية بين كل إرسالين للرقم نفسه. الافتراضي 60.
قالب الرسالة
صِغ نص الرسالة كما يناسب علامتك التجارية. شرط واحد: وجود {code} داخل النص.
حرّر إعداداتك
المعاينة الحية تعكس كل تغيير. أرسل OTP حقيقيًا إلى رقمك ثم تحقّق من الدورة كاملة.
حدود صارمة تحمي عملاءك
5 OTP للرقم خلال 24 ساعة
أقوى الحدود وأصرمها. لا يمكن تجاوزها من الإعدادات. حتى لو تسرّب مفتاحك، لن يصل أي رقم لأكثر من 5 رموز في 24 ساعة.
فحوصات داخل معاملات مقفولة
التهدئة والسقف اليومي يجريان داخل SELECT ... FOR UPDATE. لن يتجاوز أي طلبَين متوازيَين الحد.
تحقق بزمن ثابت
verify_otp يعتمد hash_equals في المقارنة. لا تسرّب من ناحية التوقيت.
POST فقط، بلا كوكيز
أي GET على النقطتين يُرجع 405. الكوكيز تُتجاهل في عملية التحقق. هجوم CSRF بالصور غير ممكن.
حد المحاولات لكل رمز
افتراضيًا 5 محاولات خاطئة لكل رمز. بعدها يُقفَل الرمز ويلزم send_otp جديد.
رسائل خطأ مختصرة
الاستثناءات الداخلية تُرجع Internal error. لا يُكشف عن أي تتبّع للعميل.
أسئلة عن OTP
كيف أرسل OTP عبر SMS8؟
أرسل POST إلى https://app.sms8.io/ajax/otp-send.php مع رقم الجوال. النقطة تقبل ترويسة Authorization: Bearer. حقول اختيارية: length (من 4 إلى 8)، expires_in (من 60 إلى 900 ثانية)، max_attempts (من 1 إلى 10)، template، إضافة لمحدّد جهاز.
كيف يعمل verify_otp؟
أرسل الرقم والرمز الذي كتبه المستخدم إلى https://app.sms8.io/ajax/otp-verify.php. الخادم يقارن بزمن ثابت مع آخر OTP ويُرجع verified: true أو verified: false. عند الفشل يُرجع reason و attempts_left.
ما هو سقف الإساءة على OTP؟
الرقم الواحد يستقبل 5 رموز كحد أقصى خلال 24 ساعة. هذا الحد ثابت غير قابل للتعديل، ويحمي المستلم حتى لو تسرّب مفتاحك.
هل أحتاج A2P 10DLC لإرسال OTP عبر SMS8؟
لا. SMS8 يرسل الرموز من هاتفك Android وشريحتك، فلا يلزم تسجيل A2P 10DLC.
هل يستطيع المساعد الذكي إضافة التحقق تلقائيًا؟
نعم. Skill المرفقة مع Claude Code تعلّم المساعد متى يستدعي send_otp و verify_otp. أمر بسيط مثل أضِف التحقق برقم الجوال إلى /signup يكفي.