دليل واجهة برمجة تطبيقات التحقق عبر الرسائل القصيرة 2026: Twilio, Vonage, MessageBird, Plivo
ما هي واجهة برمجة تطبيقات التحقق عبر الرسائل القصيرة؟
تقوم واجهة برمجة تطبيقات التحقق عبر الرسائل القصيرة بمهمة واحدة: إرسال كلمة مرور لمرة واحدة (OTP) إلى رقم هاتف وتأكيد ما إذا كان المستخدم قد أدخلها بشكل صحيح. هذا هو الوصف السطحي. الجزء المثير للاهتمام هو كل ما يكمن تحت السطح.
تتعامل واجهة برمجة تطبيقات التحقق الحقيقية مع خمسة أشياء لا تريد بناءها بنفسك:
- توجيه شركات الاتصالات. تقوم بلدان مختلفة بتوجيه الرسائل القصيرة عبر شركات اتصالات مختلفة، ولكل شركة اتصالات زمن وصول خاص بها للتسليم، ومعدل فشل، وتكلفة.
- التحديد والتحكم في الاحتيال. تمنع واجهة برمجة التطبيقات الجيدة أنماط الإساءة الواضحة (نفس عنوان IP يطلب 200 رمز، أرقام هواتف متسلسلة، شركات اتصالات معروفة يمكن التخلص منها) قبل أن تؤثر على فاتورتك.
- الامتثال القطري. تتطلب الهند تسجيل DLT. تمنع فرنسا معرفات المرسل الأبجدية الرقمية. لدى ألمانيا قواعدها الخاصة لمعرفات المرسل. تتعامل واجهة برمجة التطبيقات مع هذه الأمور نيابة عنك.
- إنشاء الرموز والتحقق منها. تسمح لك بعض واجهات برمجة التطبيقات بإحضار الرمز الخاص بك. يقوم البعض الآخر بإنشاء الرمز والتحقق منه على خوادمهم، مما يزيل فئة من هجمات التوقيت من قاعدة التعليمات البرمجية الخاصة بك.
- تسليم الويب هوك لتحديثات الحالة. عندما ترتد رسالة، تحتاج إلى معرفة ذلك في غضون ثوانٍ، وليس عندما يشتكي المستخدم.
الوظائف الثلاث الكبيرة هي تسليم كلمة المرور لمرة واحدة للتسجيل، والمصادقة الثنائية لتسجيل الدخول، وتأكيد المعاملات عالية المخاطر. تستخدم معظم الفرق واجهة برمجة تطبيقات واحدة لجميع الثلاثة. تقوم بعض الفرق الأكبر بتقسيمها عبر مزودين للتكرار، وهو ما سنغطيه لاحقًا.
لماذا تستخدم واجهة برمجة تطبيقات مخصصة للتحقق عبر الرسائل القصيرة؟
يمكنك بناء هذا بنفسك. لن ندعي خلاف ذلك. يمكنك توقيع عقد مباشر مع مجمع شركات الاتصالات، وإعداد بوابة SMPP الخاصة بك، وإنشاء مولد الرموز الخاص بك. لقد رأينا فرقًا تفعل ذلك. لقد رأينا أيضًا تلك الفرق تنتقل بهدوء إلى Twilio بعد ثمانية عشر شهرًا.
إليك سبب دفع معظم الفرق مقابل واجهة برمجة تطبيقات مدارة بدلاً من ذلك:
علاقات شركات الاتصالات أهم من التعليمات البرمجية. لدى Twilio علاقات مباشرة مع مئات شركات الاتصالات حول العالم. تقوم Vonage (المعروفة سابقًا باسم Nexmo) بذلك منذ عام 2010. تكلف هذه العلاقات أموالًا حقيقية وتستغرق سنوات لبنائها. لا يمكنك تكرارها في عطلة نهاية الأسبوع.
الاحتيال هدف متحرك. تكلف هجمات الاحتيال على المكالمات (المعروفة أيضًا باسم ضخ الرسائل القصيرة) الشركات الحقيقية مئات الآلاف من الدولارات كل ربع سنة. النمط: يستخدم المهاجم نموذج التسجيل الخاص بك لإرسال رموز التحقق إلى أرقام ذات معدل مميز في بلدان ذات حجم منخفض، وتقوم شركة الاتصالات بإعادة جزء من تكلفة الرسائل القصيرة إلى المهاجم. قضت واجهات برمجة التطبيقات الرئيسية سنوات في ضبط الكشف عن ذلك.
الامتثال هو ضريبة لا يمكنك تجاهلها. يتطلب تسجيل DLT في الهند وحده أسابيع ويتطلب كيانًا قانونيًا محليًا. تنطبق قواعد CNIL الفرنسية إذا كان لديك أي مستخدمين فرنسيين. يتعامل مزودو واجهة برمجة التطبيقات مع هذا نيابة عنك، حتى لو لم تدرك ذلك.
جودة التسليم تعتمد على المسارات الساخنة. "المسار الساخن" هو مسار شركة اتصالات عالي الأولوية يوصل الرسائل في أقل من خمس ثوانٍ. يمكن للمسارات الباردة أن تستغرق دقائق أو تفشل بصمت. شراء الوصول إلى المسارات الساخنة عبر واجهة برمجة تطبيقات أرخص بكثير من التفاوض عليها مباشرة.
لذلك، ما لم تكن تقوم بأكثر من مليون عملية تحقق شهريًا ولديك فريق بنية تحتية مخصص، فإن الرياضيات تقول: استخدم واجهة برمجة تطبيقات. السؤال هو أي منها.
أفضل 5 واجهات برمجة تطبيقات للتحقق عبر الرسائل القصيرة في عام 2026
اختبرنا كل مزود عبر نفس سير العمل: إرسال كلمة مرور لمرة واحدة إلى رقم أمريكي، ورقم هندي، ورقم ألماني، ورقم برازيلي، ثم التحقق من صحة الرمز على الواجهة الخلفية الخاصة بنا. أجرينا 100 عملية تحقق لكل مزود لكل بلد على مدى نافذة 30 يومًا في مارس 2026. إليك ما وجدناه.
1. Twilio Verify
Twilio هو الخيار الافتراضي لسبب وجيه. تم تصميم واجهة برمجة تطبيقات Verify الخاصة بهم خصيصًا لتدفقات كلمة المرور لمرة واحدة، منفصلة عن واجهة برمجة تطبيقات الرسائل القابلة للبرمجة العامة الخاصة بهم. هذا الفصل مهم لأنه يمنحك سعرًا ثابتًا لكل عملية تحقق بدلاً من الدفع لكل رسالة قصيرة صادرة بالإضافة إلى كل ويب هوك وارد.
التسعير لكل عملية تحقق: 0.05 دولار لكل عملية تحقق ناجحة (الولايات المتحدة)، 0.07 دولار - 0.20 دولار دوليًا، مع رسوم شركات الاتصالات إضافية في بعض البلدان. هذا هو السعر الذي يهتم به معظم المطورين.
ما أعجبنا: سهولة استخدام SDK لا مثيل لها. وثائقهم هي المعيار الذهبي. يعمل التراجع عن القناة (الرسائل القصيرة إلى الصوت إلى البريد الإلكتروني) فورًا. اكتشف الكشف عن الاحتيال الخاص بهم محاولتين لضخ الرسائل القصيرة خلال فترة الاختبار الخاصة بنا دون أن نقوم بتكوين أي شيء.
ما لم يعجبنا: زيادة الأسعار على المسارات الدولية. تكلف الهند وإندونيسيا والبرازيل أكثر بكثير مما يوحي به السعر الرئيسي. يمكن لرسوم شركات الاتصالات مضاعفة فاتورتك في بعض الأسواق.
الأفضل لـ: حركة المرور التي تركز على الولايات المتحدة، والفرق التي تقدر الوثائق، وأي شخص يحتاج إلى تراجع صوتي.
2. Vonage Verify (سابقًا Nexmo)
كانت Vonage في هذا المجال لفترة أطول من أي شخص آخر تقريبًا. واجهة برمجة تطبيقات Verify الخاصة بهم ناضجة، وموثقة جيدًا، وتتضمن فحص PIN مدمج على خوادمهم. لا تحتاج إلى تخزين كلمة المرور لمرة واحدة في قاعدة البيانات الخاصة بك، مما يزيل فئة من هجمات التخزين من نموذج الأمان الخاص بك.
التسعير لكل عملية تحقق: 0.062 دولار لكل عملية تحقق ناجحة (الولايات المتحدة)، مع تسعير متدرج مماثل دوليًا. تسعيرهم أقرب إلى الثابت من Twilio في معظم الأسواق التي اختبرناها.
ما أعجبنا: تدفق الخروج ثنائي العوامل نظيف. إنهم يدرجون ثلاث محاولات إعادة في نفس رسوم التحقق، وهو ما لا تفعله Twilio. يجيب فريق الدعم الخاص بهم بالفعل على الأسئلة الفنية.
ما لم يعجبنا: تبدو لوحة التحكم الخاصة بهم وكأنها أعيد تصميمها آخر مرة في عام 2018. يحتوي Node.js SDK على بعض الحواف الخشنة حول رفض الوعود. كان توقيع الويب هوك غير متسق في أوائل عام 2024 ولكنه يبدو ثابتًا الآن.
الأفضل لـ: الفرق التي تريد سعرًا دوليًا ثابتًا ولا تريد إدارة تخزين كلمة المرور لمرة واحدة بنفسها.
3. MessageBird (الآن Bird)
أعادت MessageBird تسميتها إلى Bird في عام 2023 وأعادت بناء منصة المطورين الخاصة بها. واجهة برمجة التطبيقات الجديدة أنظف، ولكنها أيضًا هدف متحرك. واجهنا تغييرين كاسرين خلال فترة الاختبار الخاصة بنا.
التسعير لكل عملية تحقق: 0.04 دولار - 0.08 دولار لكل عملية تحقق اعتمادًا على البلد. من بين الخيارات الأرخص على الورق.
ما أعجبنا: يتيح لهم Flow Builder للأعضاء غير التقنيين في الفريق تعديل تدفق التحقق دون إعادة النشر. مسارات شركات الاتصالات الأوروبية ممتازة (إنها شركة هولندية في الأصل). وضعية GDPR هي الأكثر شمولاً التي دققناها.
ما لم يعجبنا: كان استقرار واجهة برمجة التطبيقات صعبًا منذ إعادة التسمية. تتخلف الوثائق عن واجهة برمجة التطبيقات الفعلية في بعض الأماكن. تم إيقاف بعض نقاط النهاية القديمة دون مسارات ترحيل واضحة.
الأفضل لـ: حركة المرور التي تركز على الاتحاد الأوروبي، والفرق التي تحتاج إلى إعدادات افتراضية متوافقة مع GDPR فورًا.
4. Plivo
تضع Plivo نفسها كبديل اقتصادي لـ Twilio مع مجموعة ميزات مماثلة. في اختباراتنا، هذا دقيق تقريبًا، على الرغم من بعض المقايضات الحقيقية.
التسعير لكل عملية تحقق: 0.045 دولار لكل عملية تحقق (الولايات المتحدة)، مع أسعار متدرجة دوليًا. غالبًا ما يكون الخيار الأرخص للحجم الكبير.
ما أعجبنا: السعر أقل حقًا من Twilio لمعظم حركة المرور في الولايات المتحدة والاتحاد الأوروبي. نظام الرصيد الخاص بهم نظيف. يستجيب فريق الدعم الخاص بهم في غضون ساعة خلال ساعات العمل. تصميم واجهة برمجة التطبيقات هو نسخة طبق الأصل تقريبًا من Twilio، مما يجعل الترحيل شبه خالٍ من المتاعب.
ما لم يعجبنا: كانت معدلات التسليم في الهند والبرازيل أسوأ بشكل ملحوظ من Twilio في اختباراتنا. اكتشف الكشف عن الاحتيال الخاص بهم عددًا أقل من الهجمات الواضحة. واجهة برمجة تطبيقات التحقق أحدث من البقية، لذا لا تزال الحالات الطرفية تظهر.
الأفضل لـ: الفرق الحساسة للتكلفة مع حركة مرور في الولايات المتحدة أو الاتحاد الأوروبي في الغالب.
5. Sinch
Sinch هو الخيار المؤسسي. استحوذوا على Inteliquent و MessageMedia والعديد من شركات الاتصالات الأخرى، مما يمنحهم مسارات مباشرة في الأسواق التي يدفع فيها الجميع علاوة. يعكس تسعيرهم هذا التموضع.
التسعير لكل عملية تحقق: تسعير مؤسسي مخصص، عادةً 0.04 دولار - 0.10 دولار لكل عملية تحقق اعتمادًا على التزام الحجم. يصعب تقييمه بدون مكالمة مبيعات.
ما أعجبنا: علاقات شركات الاتصالات حقيقية. كانت معدلات التسليم في الهند هي الأفضل التي قسناها. جودة التراجع الصوتي لديهم أفضل من Twilio في اختباراتنا.
ما لم يعجبنا: لا يوجد تسعير شفاف. عملية الإعداد الذاتي أصعب من المنافسين. واجهة برمجة التطبيقات الخاصة بهم بها المزيد من العيوب القديمة مقارنة بالآخرين.
الأفضل لـ: الفرق المؤسسية ذات الحجم الكبير والصبر للتفاوض.
مقارنة أسعار واجهة برمجة تطبيقات التحقق عبر الرسائل القصيرة
هنا مقارنة جنبًا إلى جنب للأسعار النموذجية لعام 2026. جميع الأسعار لكل عملية تحقق ناجحة، مسار الولايات المتحدة، اعتبارًا من 1 أبريل 2026. تختلف الأسعار الدولية حسب البلد.
| مزود الخدمة | سعر الولايات المتحدة | متوسط الاتحاد الأوروبي | الهند | البرازيل | الحد الأدنى لإعادة الشحن |
|---|---|---|---|---|---|
| Twilio Verify | 0.05 دولار | 0.07 دولار | 0.18 دولار | 0.14 دولار | 20 دولارًا |
| Vonage Verify | 0.062 دولار | 0.075 دولار | 0.16 دولار | 0.13 دولار | 10 دولارات |
| Bird (MessageBird) | 0.04 دولار | 0.06 دولار | 0.20 دولار | 0.15 دولار | 20 دولارًا |
| Plivo | 0.045 دولار | 0.065 دولار | 0.22 دولار | 0.17 دولار | 25 دولارًا |
| Sinch | 0.04 دولار - 0.10 دولار | يختلف | 0.11 دولار | 0.12 دولار | مؤسسي |
شيئان يجب ملاحظتهما. أولاً، السعر الرئيسي للولايات المتحدة مضلل بمفرده. إذا كان لديك حركة مرور دولية ذات مغزى، فإن الأسعار الخاصة بالبلد أكثر أهمية من سعر الولايات المتحدة. ثانيًا، تختلف أسعار الهند والبرازيل بشكل كبير. إذا كنت تستهدف أيًا من السوقين، فقم بإجراء اختبارك الخاص قبل الالتزام.
بالنسبة لفريق ذي حجم كبير يقوم بـ 100,000 عملية تحقق شهريًا مقسمة بنسبة 60٪ الولايات المتحدة، و 30٪ الاتحاد الأوروبي، و 10٪ بقية العالم، فإن التكلفة الشهرية الواقعية تتراوح بين 5,200 دولار و 7,800 دولار اعتمادًا على المزود الذي تختاره. الخيار الأرخص ليس دائمًا التكلفة الإجمالية الأقل بمجرد تضمين معدلات الفشل.
أمثلة التعليمات البرمجية: إرسال كلمة مرور لمرة واحدة
إليك نفس سير العمل عبر ثلاثة مزودين بثلاث لغات. الشكل متشابه بما يكفي بحيث يمكنك عادةً نقل التعليمات البرمجية بينها عن طريق تغيير عناوين URL لنقاط النهاية وأسماء المعلمات.
Node.js مع Twilio Verify
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const verifyServiceSid = process.env.TWILIO_VERIFY_SERVICE_SID;
const client = require('twilio')(accountSid, authToken);
async function sendVerification(phoneNumber) {
try {
const verification = await client.verify.v2
.services(verifyServiceSid)
.verifications
.create({ to: phoneNumber, channel: 'sms' });
return { success: true, status: verification.status };
} catch (error) {
console.error('Twilio verification failed:', error.message);
return { success: false, error: error.message };
}
}
async function checkVerification(phoneNumber, code) {
const result = await client.verify.v2
.services(verifyServiceSid)
.verificationChecks
.create({ to: phoneNumber, code });
return result.status === 'approved';
}
بعض الملاحظات حول هذه التعليمات البرمجية. يتم إنشاء verifyServiceSid مرة واحدة في لوحة تحكم Twilio ويتم إعادة استخدامه لكل عملية تحقق. يأتي حقل الحالة على شكل pending، approved، canceled، أو failed. تعامل مع كل منها بشكل صريح. لا تفترض أن success تعني approved.
Python مع Vonage Verify
import os
import vonage
client = vonage.Client(
key=os.environ['VONAGE_API_KEY'],
secret=os.environ['VONAGE_API_SECRET']
)
verify = vonage.Verify(client)
def send_verification(phone_number, brand_name='YourApp'):
response = verify.start_verification(
number=phone_number,
brand=brand_name,
code_length=6,
pin_expiry=300
)
if response['status'] == '0':
return {'success': True, 'request_id': response['request_id']}
return {'success': False, 'error': response.get('error_text')}
def check_verification(request_id, code):
response = verify.check(request_id, code=code)
return response['status'] == '0'
تستخدم Vonage request_id كمقبض لعملية التحقق، وليس رقم الهاتف. قم بتخزين هذا في جلستك أو قاعدة البيانات الخاصة بك بجوار سجل المستخدم. pin_expiry بالثواني؛ نستخدم 300 (5 دقائق)، وهو ما يطابق ما تعرضه معظم التطبيقات للمستخدمين.
PHP cURL مع MessageBird (Bird)
<?php
$accessKey = getenv('BIRD_ACCESS_KEY');
$workspaceId = getenv('BIRD_WORKSPACE_ID');
function sendVerification($phoneNumber) {
global $accessKey, $workspaceId;
$url = "https://nest.messagebird.com/workspaces/{$workspaceId}/channels/sms/verify";
$payload = json_encode([
'recipient' => $phoneNumber,
'codeLength' => 6,
'expiry' => 300
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: AccessKey ' . $accessKey,
'Content-Type: application/json'
]
]);
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($statusCode === 201) {
return ['success' => true, 'data' => json_decode($response, true)];
}
return ['success' => false, 'error' => $response];
}
تتطلب واجهة برمجة تطبيقات Bird معرف مساحة عمل في مسار عنوان URL، وهو تغيير حديث عن نقاط نهاية MessageBird القديمة. إذا كنت تنتقل من واجهة برمجة التطبيقات القديمة، فهذه هي المشكلة الأكثر شيوعًا.
إعداد الويب هوك لحالة التسليم
إرسال كلمة مرور لمرة واحدة هو نصف المهمة. النصف الآخر هو معرفة ما إذا كانت قد وصلت بالفعل. تدعم كل واجهة برمجة تطبيقات رئيسية الويب هوك لحالة التسليم، ولكن تفاصيل التنفيذ تختلف.
إليك معالج ويب هوك عام لـ Express.js يعمل كنقطة انطلاق لأي مزود:
const express = require('express');
const crypto = require('crypto');
const app = express();
app.post('/webhooks/sms-status', express.json(), (req, res) => {
const signature = req.headers['x-provider-signature'];
const expectedSignature = crypto
.createHmac('sha256', process.env.WEBHOOK_SECRET)
.update(JSON.stringify(req.body))
.digest('hex');
if (signature !== expectedSignature) {
return res.status(401).send('Invalid signature');
}
const { messageId, status, errorCode, phoneNumber } = req.body;
switch (status) {
case 'delivered':
logSuccess(messageId);
break;
case 'failed':
handleFailure(messageId, errorCode, phoneNumber);
break;
case 'undelivered':
retryWithFallbackChannel(phoneNumber);
break;
default:
console.log(`Unhandled status: ${status}`);
}
res.status(200).send('OK');
});
بعض القواعد التي نتبعها مع الويب هوك في الإنتاج. تحقق دائمًا من التوقيع؛ نقطة نهاية ويب هوك غير مصادق عليها هي باب مفتوح. أعد دائمًا 200 بسرعة، حتى لو استغرق المعالجة وقتًا أطول؛ قم بوضع العمل الفعلي في قائمة انتظار في مهمة خلفية. التكرار مهم لأن المزودين سيعيدون المحاولة عند انتهاء المهلة.
استراتيجيات تحديد المعدل وإعادة المحاولة
تحديد المعدل هو المكان الذي تتعرض فيه معظم الفرق للأذى. إليك النمط الذي نستخدمه.
تحديد المعدل لكل رقم هاتف. لا يزيد عن 3 رموز OTP لنفس الهاتف في أي نافذة مدتها 10 دقائق. هذا يوقف حلقات الطلب العرضية ومعظم الإساءات العادية.
تحديد المعدل لكل عنوان IP. لا يزيد عن 10 طلبات OTP من نفس عنوان IP في أي نافذة مدتها 5 دقائق. فضفاضة بما يكفي لعدم كسر المكاتب المشتركة، ضيقة بما يكفي لإبطاء روبوتات التسجيل.
تحديد المعدل لكل حساب. إذا كان حساب المستخدم لديه أكثر من 5 عمليات تحقق فاشلة في 24 ساعة، فقم بقفل الحساب واطلب إعادة تعيين البريد الإلكتروني. هذا هو الإجراء الأكثر فعالية ضد الإساءة الذي قمنا بشحنه.
التراجع الأسي عند إعادة المحاولة. إذا أعادت واجهة برمجة التطبيقات خطأ 5xx، حاول مرة أخرى بعد ثانية واحدة، ثم مرة أخرى بعد 4 ثوانٍ، ثم استسلم. لا تحاول إعادة المحاولة على أخطاء 4xx؛ فهي دائمًا دائمة تقريبًا.
إليك كيف يبدو ذلك عمليًا:
async function sendWithRetry(phoneNumber, maxAttempts = 3) {
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
try {
const result = await sendVerification(phoneNumber);
if (result.success) return result;
if (result.statusCode >= 400 && result.statusCode < 500) {
return result;
}
} catch (error) {
if (attempt === maxAttempts) throw error;
const delay = Math.pow(2, attempt) * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
}
}
}
معالجة الأخطاء: فشل التسليم وحظر البلدان
تعيد كل واجهة برمجة تطبيقات للرسائل القصيرة أخطاء بتنسيقات مختلفة قليلاً، ولكن أوضاع الفشل الشائعة عالمية. إليك كيفية التعامل معها.
تنسيق رقم هاتف غير صالح. أعد الخطأ إلى المستخدم فورًا. لا تحاول إعادة المحاولة. لا تحرق أرصدة واجهة برمجة التطبيقات.
الرقم موجود في قائمة عدم الإزعاج. قامت شركة الاتصالات الخاصة بالمستخدم بتمييز الرقم على أنه تم إلغاء الاشتراك في رسائل التسويق القصيرة. تسمح لك بعض واجهات برمجة التطبيقات بتمييز الرسالة على أنها معاملة لتجاوز ذلك؛ يتطلب البعض الآخر تدخلًا يدويًا من شركة الاتصالات. من الناحية العملية، تراجع إلى قناة البريد الإلكتروني أو الصوت.
البلد مقيد. بعض البلدان (كوبا، إيران، كوريا الشمالية، أجزاء من القرم) مدرجة في قوائم العقوبات. سترفض واجهة برمجة التطبيقات الإرسال. اكتشف ذلك عند التسجيل ووجه المستخدم إلى التحقق عبر البريد الإلكتروني.
تصفية شركات الاتصالات. أسقطت شركة الاتصالات الرسالة بصمت. لن تحصل على إيصال تسليم. قم بتعيين مهلة 90 ثانية لمحاولة التحقق؛ إذا لم يصل الرمز، اطلب من المستخدم إعادة المحاولة أو التبديل بين القنوات.
رصيد غير كافٍ. وصل رصيدك المدفوع مسبقًا إلى الصفر. قم بإعداد تنبيه عند رصيد متبقٍ بنسبة 20٪، وليس عند الصفر. تعلمنا هذا بالطريقة الصعبة.
تكتيكات تحسين التكلفة
بمجرد أن تقوم بتشغيل حجم حقيقي، تصبح تكلفة كل عملية تحقق بندًا حقيقيًا في الميزانية. إليك التكتيكات التي نجحت معنا.
تخزين عمليات التحقق الناجحة مؤقتًا. إذا قام المستخدم بالتحقق من رقم هاتفه قبل 30 يومًا وكان يسجل الدخول مرة أخرى، فلن تحتاج إلى رمز OTP جديد. استخدم رمز مصادقة طويل الأمد وفقط أعد التحقق عند وجود نشاط مشبوه.
استخدم التراجع الصوتي للأسواق ذات التكلفة العالية. يمكن أن يكون التحقق الصوتي أرخص من الرسائل القصيرة في بعض المناطق (خاصة أجزاء من إفريقيا والشرق الأوسط). قم بتكوين تفضيل القناة حسب البلد.
قم بتشغيل فشل متعدد المزودين. مزود أساسي ومزود ثانوي. إذا أعادت الواجهة الأساسية خطأ أو لم تسلم في غضون 30 ثانية، حاول مرة أخرى مع المزود الثانوي. تكلفة الحمل الإضافي صغيرة، وارتفاع معدل النجاح حقيقي. قسنا ارتفاعًا بنسبة 4-6٪ عبر أسواق الاختبار الخاصة بنا.
تفاوض على تسعير الحجم مبكرًا مما تعتقد. تقدم معظم المزودين خصومات على الحجم تبدأ من حوالي 10,000 عملية تحقق شهريًا. الخصم نادرًا ما يتم الإعلان عنه. اطلب ذلك.
حظر بلدان ذات معدل مميز لا تخدمها. قم بتعيين قائمة سماح بالبلدان في نموذج التسجيل الخاص بك. إذا كنت منتجًا مخصصًا للولايات المتحدة فقط، فإن حظر أكثر من 200 دولة هو تقليل مجاني للاحتيال. هجمات ضخ الرسائل القصيرة تعيش على هذه الثغرة.
بدائل Twilio Verify الجديرة بالمعرفة
ركزنا على الخمسة الكبار أعلاه لأنهم الأكثر طلبًا. لكن سوق التحقق عبر الرسائل القصيرة لديه خيارات أكثر مما يدرك الناس، وعدد قليل منها يستحق نظرة ثانية اعتمادًا على حالة الاستخدام الخاصة بك.
للحصول على طبقات مجانية صديقة للمطورين، جرب Termii (ممتاز للأسواق الأفريقية) أو Telnyx (يركز على الولايات المتحدة مع توجيه على مستوى الناقل). للبساطة المطلقة لواجهة برمجة التطبيقات، لا يزال Authy (الآن جزء من Twilio) هو الخيار الأنظف للمصادقة الثنائية فقط. للاستضافة الذاتية، يحتوي Apache APISIX على مكون إضافي للتحقق يعمل مع معظم بوابات الرسائل القصيرة الرئيسية.
للأرقام الافتراضية الموجهة للمستهلكين، VerifySMS هو ما بنيناه. نحن لسنا واجهة برمجة تطبيقات؛ نحن تطبيق iOS للأشخاص الذين يحتاجون إلى رقم هاتف لتلقي رمز دون الكشف عن رقمهم الحقيقي. إذا كنت تبني تدفق مصادقة ويتواصل المستخدمون باستمرار بشأن مشاركة أرقامهم الشخصية، فأرسل لهم الرابط الخاص بنا.
هل يجب عليك بناء التحقق الخاص بك عبر الرسائل القصيرة؟
نتلقى هذا السؤال من المهندسين الكبار مرة واحدة كل ربع سنة تقريبًا. الإجابة دائمًا لا تقريبًا، ولكن إليك النسخة الصادقة.
يجب عليك بناء الخاص بك إذا: كان لديك فريق بنية تحتية مخصص، وكنت تقوم بأكثر من 5 ملايين عملية تحقق شهريًا، ولديك علاقات مباشرة مع شركات الاتصالات في ثلاثة أسواق مستهدفة على الأقل، ولديك الموارد القانونية للتعامل مع الامتثال في كل ولاية قضائية تعمل فيها. بخلاف ذلك، فإن الرياضيات لا تعمل.
التكلفة المخفية لبناء الخاص بك هي صيانة الامتثال، وضبط الكشف عن الاحتيال، وتصعيد شركات الاتصالات على مدار الساعة طوال أيام الأسبوع. هذا ثلاثة مهندسين على الأقل. بتكلفة محملة تبلغ 200 ألف دولار لكل مهندس، هذا 600 ألف دولار سنويًا في النفقات العامة البحتة قبل أن ترسل رسالة قصيرة واحدة. نقطة التعادل مقابل Twilio تقع في مكان ما حول 50 ألف دولار من الإنفاق الشهري لواجهة برمجة التطبيقات.
أسئلة متكررة
ما الفرق بين واجهة برمجة تطبيقات التحقق عبر الرسائل القصيرة وبوابة الرسائل القصيرة؟
ترسل بوابة الرسائل القصيرة رسائل قصيرة عامة إلى أرقام الهواتف. واجهة برمجة تطبيقات التحقق هي خدمة أعلى مستوى تتعامل مع إنشاء كلمة المرور لمرة واحدة، والتحقق من صحتها، ومنطق إعادة المحاولة، والكشف عن الاحتيال فوق بوابة الرسائل القصيرة. يمكنك استخدام بوابة للتحقق، ولكن ستحتاج إلى بناء طبقة كلمة المرور لمرة واحدة بنفسك.
هل يمكنني تبديل مزودي التحقق عبر الرسائل القصيرة دون كسر تدفق المستخدم الخاص بي؟
نعم، ولكن خطط لفترة انتقالية. النهج الأكثر نظافة هو تجريد المزود خلف واجهة برمجة التطبيقات الداخلية الخاصة بك، بحيث يعرف الكود المواجه للمستخدم فقط خدمة التحقق الخاصة بك، وليس المزود الأساسي. لقد قمنا بترحيل حركة مرور الإنتاج بين Twilio و Vonage دون أي وقت تعطل مرئي للمستخدم عن طريق القيام بذلك بالضبط.
كيف أمنع هجمات ضخ الرسائل القصيرة على نموذج التسجيل الخاص بي؟
ثلاثة أشياء: حظر عمليات التسجيل من البلدان التي لا تخدمها، وتحديد المعدل حسب عنوان IP ورقم الهاتف، وتنفيذ CAPTCHA على حقل إدخال رقم الهاتف للمستخدمين الجدد. يقطع المزيج معظم هجمات الضخ بأكثر من 95٪. إذا كنت تتعرض لهجوم بالفعل، فقم بالتصعيد إلى فريق الاحتيال الخاص بمزودك على الفور؛ يمكنهم إدراج شركة الاتصالات الوجهة في القائمة السوداء في غضون ساعات.
هل ما زلت بحاجة إلى واجهة برمجة تطبيقات للرسائل القصيرة إذا كان لدى المستخدمين تطبيقات المصادقة الخاصة بهم؟
بالنسبة لمعظم المنتجات، نعم. لا تزال الرسائل القصيرة هي العامل الثاني الأقل احتكاكًا للمستخدمين الجدد، والعديد من المستخدمين ليس لديهم تطبيقات المصادقة مثبتة. النمط الذي يعمل هو: تقديم التحقق عبر الرسائل القصيرة عند التسجيل لتقليل الاحتكاك، ثم مطالبة المستخدم بالترقية إلى تطبيق المصادقة أو مفتاح المرور خلال أسبوعه الأول. تصبح الرسائل القصيرة تراجعًا لاستعادة الحساب.
ماذا يحدث إذا وصل رمز التحقق بعد انتهاء صلاحية نافذة الانتهاء الخاصة بي؟
سترفض واجهة برمجة التطبيقات الرمز المتأخر عند التحقق. سيحتاج المستخدم إلى طلب رمز جديد. قمنا بتعيين انتهاء الصلاحية لدينا على 5 دقائق، وهو ما يكفي من الوقت لمعظم المستخدمين للعثور على هواتفهم وقصير بما يكفي للحد من هجمات إعادة التشغيل. إذا قمت بتعيينه لفترة طويلة جدًا (أكثر من 15 دقيقة)، فإنك تخلق خطرًا أمنيًا حقيقيًا؛ إذا قمت بتعيينه قصيرًا جدًا (أقل من 90 ثانية)، فستزداد تذاكر الدعم الخاصة بك.
كيف أختبر التحقق عبر الرسائل القصيرة في مسار CI الخاص بي دون إنفاق أموال على رموز حقيقية؟
كل واجهة برمجة تطبيقات رئيسية لديها وضع صندوق رمل أو وضع اختبار. لدى Twilio رقم هاتف اختبار سحري يعود دائمًا بالنجاح. لدى Vonage علامة وضع اختبار في مكالمة التحقق. لدى Bird مساحة عمل صندوق رمل. استخدم هذه في CI؛ لا تقم أبدًا بتشغيل عمليات تحقق حقيقية على أرقام الإنتاج في الاختبارات الآلية.
الخلاصة
اختر Twilio Verify إذا كنت تريد المسار الأقل مقاومة وحركة المرور الخاصة بك تركز على الولايات المتحدة. اختر Vonage إذا كنت تريد سعرًا دوليًا ثابتًا وتخزين كلمة المرور لمرة واحدة من جانب الخادم. اختر Bird إذا كنت تركز على الاتحاد الأوروبي وتهتم بالإعدادات الافتراضية المتوافقة مع GDPR. اختر Plivo إذا كنت حساسًا للسعر وحركة المرور الخاصة بك في الغالب في الولايات المتحدة أو الاتحاد الأوروبي. اختر Sinch إذا كان لديك حجم مؤسسي والصبر للتفاوض.
إذا كنت تبني مصادقة للمستهلكين وكان المستخدمون لديك يسألون باستمرار عن كيفية التحقق من الحسابات دون تقديم أرقام هواتفهم الشخصية، فهذه هي الفجوة التي تملأها VerifySMS. نحن لا نتنافس مع واجهات برمجة التطبيقات المذكورة أعلاه؛ نحن نجلس على الجانب الآخر من المعادلة، ونمنح المستخدمين رقم هاتف نظيفًا لتلقي رموزك.
أيًا كان المسار الذي تختاره، فإن أول شيء يجب عليك فعله هو تشغيل نافذة قياس مدتها 30 يومًا مقابل مزيج حركة المرور الفعلي الخاص بك. التسعير الرئيسي هو أسهل رقم للمقارنة وأسوأ مؤشر للتكلفة الإجمالية. المزود المناسب لك هو المزود الذي يتمتع بأعلى معدل نجاح في أسواقك الحقيقية، وليس أقل سعر على الملصق.
قم ببنائه مرة واحدة، وقم بقياسه شهريًا، وأعد النظر في الاختيار كل اثني عشر شهرًا. يتحول سوق الرسائل القصيرة بشكل أسرع مما يدركه معظم الناس.
هل تحتاج إلى رقم افتراضي للمستهلك؟
جرب VerifySMS على iOS →تفعيل فوري · 150+ دولة · لا KYC · استرداد تلقائي
