🚦Rate Limit ببساطة! – احمي السيستم وامسك البوتات 😎
تخيل نفسك في مطعم، وكل 10 دقايق
فجأة الجارسون قالك: “مسموح بـ 4 طلبات في الساعة بس”،.
🔹تخيل انك في مطعم، وكل ١٠ دقايق تطلب تعديل جديد على الطلب (والناس زهقت منك يعني😂)، ف جه ال waiter قالك لو سمحت احنا ضفنا قانون جديد بيقولك مسموح لك ٤ طلبات فقط في الساعه🤗 علشان نلحق نخدم باقي الزباين
ده بالضبط Rate Limit 👨🍳
🔹طب تخيل كدا عندنا website بتعمل عليها login برقم سري مكون من ٤ أرقام، و جه hacker مبتدأ حبتين قالك انا هعرف الرقم السري بتاعك.
بدأ يفكر يعمل Brute force attack وقال انا ممكن اجرب بقا الارقام من اول 0000 لحد ما اوصل ل 9999 (راجل شاطر في الرياضه وهيقعد يعمل تباديل و توافيق🤷😂)، بس جه بعد المحاوله ٢٠ ال website قاله آسف محتاجينك تقعد جمبنا ساعه وبعدين كمل تجربه🤗.
المشترك بين القصتين دول هو ال Rate limit
ف ايه هو بقا دا؟!!
🔹ببساطة هو الحد الأقصي للعدد المرات الي تقدر تبعت فيها API request في وقت معين وده علشان نحافظ على الأداء، الأمان، ونمنع إساءة الاستخدام
🤔طب لو عديت الرقم دا هيحصل ايه؟!
ال API هيرجعلك status code 429 مثلا ومعاه error message بتقولك Too many requests.
📌أنواع ال rate limit:
📍Per time
عدد محدد من الـ requests في الدقيقة / الساعة
بيحددلك عدد طلبات في وقت معين (مسموحلك ٢٠ طلب في الدقيقه).
📍Per user
كل يوزر ليه حد يومي أو ساعي مستقل
انت ك user ليك عدد محدد في اليوم مثلا.
📍Per IP
لكل جهاز (IP Address) ليه Limit خاص
يعني كل جهاز له عدد معين (لو انت وصاحبك بتستخدموا نفس ال request بس علي أجزه مختلفه، فكل جهاز ليه عدد محدد مش معتمد علي التاني).
📍API-key based
حسب الاشتراك أو نوع المستخدم (Free vs Premium)
هنا العدد بيتحدد بناءً علي ال API-key (مثلا لو انت مشترك علي website في اشتراك مجاني و مدفوع، هنا ال rate limit بيختلف حسب نوع الاشتراك).
📍Per Endpoint (resource based)
ممكن يكون عندي endpoint بترجعلي بيانات مهمه وحساسه، فهنا هيكون ليها rate limit مختلف عن غيرها.
🤔طب انا ك Tester ممكن اعرف ال rate limit دا منين؟!
🔹اول حاجه طبعا تروح لل API Doc وتتأكد انه متحدد ولا لا🤷
🤔طب انا بتدرب مع نفسي ومش معايا doc؟!
حط عينك علي ال header أكيد هتكون موجوده فيها كالآتي:
🔹X-RateLimit-Limit: 100
ودا بيعرفك ال limit كام.
🔹X-RateLimit-Remaining: 10
ودا بيعرفك باقيلك اد إيه و توصل لل limit.
🔹X-RateLimit-Reset: 1264
ودا بيعرفك تقدر تستخدم ال request تاني بعد وقت اد ايه.
🤔طب انا ممكن اعمل test للجزء دا ازاي؟!
🔹جرب توصل لل rate limit بإنك تبعت requests كتير بسرعه جدا (stress test).
🔹شوف لما تعديه، ال request هيترفض ولا لا؟!
🔹طب لو اترفض، ايه ال response الي هيرجعلي؟!
🔹بعد ما وقت ال reset يخلص، ابعت request وشوف هيتقبل ولا لا؟!
🤔ممكن أستعين بأدوات إيه طيب؟!
تقدر تستخدم أدوات زي:
🔹Postman.
🔹Jmeter.