الموقع وPlayground بست لغات
اختر لغتك من رمز الكرة الأرضية في header. يتوفر الموقع وPlayground الآن باللغات البلغارية، والصينية، والألمانية، والبولندية، والفيتنامية، والإنجليزية، مع URLs تدعم الإعدادات المحلية يمكنك حفظها كعلامة مرجعية أو مشاركتها.
أحدث التحديثات والتحسينات على FourA
اختر لغتك من رمز الكرة الأرضية في header. يتوفر الموقع وPlayground الآن باللغات البلغارية، والصينية، والألمانية، والبولندية، والفيتنامية، والإنجليزية، مع URLs تدعم الإعدادات المحلية يمكنك حفظها كعلامة مرجعية أو مشاركتها.
لقد قمنا بتشديد قيود الوصول عبر نطاقات مختلفة (cross-origin) بحيث لا يمكن لغير foura.ai استدعاء الـ API باستخدام بيانات الاعتماد. كما قمنا بتعزيز فلتر المدخلات على endpoint المقاييس وحذف السر الاحتياطي المخصص للتطوير فقط. ولن تتغير عمليات التكامل الحالية.
إذا قمت بتعيين validate.status.accept على request، فإن المحرك يعامل استجابة non-200 المقبولة كنجاح تام. كانت Activity لا تزال تصنف تلك الاستجابات كإخفاقات، مما أدى إلى تشويه إحصاءات الاستخدام الخاصة بك. تتبع النتائج الآن قرار validate الخاص بك، لذا فإن رمز 403 الذي قبلته يظهر كنجاح، وليس App Fail.
كان Activity يعرض سلاسل النتائج الخام مثل Application_fail بينما كان Overview يستخدم تسميات مبسطة (App Fail) بالألوان المناسبة. يستخدم Activity الآن نفس التسميات والألوان، مما يجعل قراءة كلا العرضين متطابقة.
إذا كنت تكشط صفحات باللغة السيريلية، أو الصينية، أو اليابانية، أو غيرها من الصفحات غير المعتمدة على UTF-8 عبر Single، فقد كان الـ body يعود سابقاً على شكل mojibake. كنا نفرض فك ترميز كل response كترميز UTF-8 قبل أن ترى الـ raw bytes. الآن، نقرأ الـ charset من الـ response (من Content-Type، ثم <meta charset>، ثم UTF-8 كخيار احتياطي) ونفك ترميزه بشكل صحيح. شكراً لـ Alexandar Kanchev (Sensika) على الإبلاغ عن هذا.
بعض الـ proxies المنتشرة على الإنترنت لا تقوم بتمرير الـ request الخاص بك فعلياً. بل تعكسه على شكل تفريغ خادم بنص صريح وتحاول استخراج ما بداخله. أصبحنا الآن نكشف هذا النمط قبل أن يصل الـ response إلى الكود الخاص بك، لذا فإن Single و Browser و Proxy Finder تعيد جميعاً فشلاً صريحاً (أو تقوم بإعادة المحاولة) بدلاً من هذه البيانات عديمة الفائدة.
أصبح كل صف Activity يحتوي على payload مخزنة قابلاً للنقر الآن: يعرض مربع الحوار الـ request والـ response بالكامل (بتنسيق pretty-printed، مع أزرار نسخ ورسائل واضحة للـ requests التي واجهت خطأً قبل إنشاء body). انقر على "Open in Playground" لتحميل هذا الـ call بعينه مجدداً في النموذج مع عرض الـ response المؤرشف الخاص به بالفعل، لتتمكن من تعديل الـ parameters وإعادة التشغيل دون الحاجة إلى إعادة بنائه. تبقى الـ payloads المخزنة لمدة 24 ساعة، وتقتصر على آخر 200 لكل key.
ترد الاستدعاءات الموثقة الآن مع header الـ X-Foura-Request-Id. خزّنه في الـ logs الخاصة بك وسيكون بإمكانك مطابقة أي request بالصف الخاص به في Activity، أو تزويد الدعم به لنتمكن من التحقق مما حدث بالضبط من جانبنا.
اضغط على زر 'Cancel' الجديد أثناء تحميل playground request وسنقوم بإلغائه بسلاسة. تعود اللوحة فوراً إلى حالة idle مع رسالة 'Request canceled' بدلاً من خطأ شبكة مخيف.
يمكن إظهار المفاتيح التي تنشئها بدءًا من اليوم في أي وقت، سواء في صفحة API Keys أو داخل curl reproducer في playground. انقر على أيقونة العين، وأكد الإجراء، وسيظهر المفتاح الكامل لمدة 15 ثانية قبل أن يختفي تلقائيًا (تُسجّل كل عملية إظهار في audit-log). تظل المفاتيح الأقدم قابلة للعرض لمرة واحدة فقط؛ أعد إنشاء أي مفتاح قديم لجعله قابلاً للإظهار.
طابور إعادة الفحص يفرغ الآن في غضون أيام بدلاً من أسابيع. لقد اختصرنا الوقت المستغرق لاختيار كل proxy للاختبار من حوالي 2 ثانية إلى حوالي 10 ms، مما يبقي الـ pool أكثر تحديثاً تحت الضغط. عدد أقل من عناوين IP الميتة في التدوير، وكل طلب لـ Single و Proxy Finder يعمل مع مجموعة أكثر كفاءة.
تتوزع كل دفعة تحديث الآن عبر شبكات فرعية مختلفة، مما يتيح لكل عملية تشغيل استخدام ميزانية التزامن الكاملة. يتجدد تجمع Proxy Finder بمعدل أسرع من 5 إلى 10 مرات، وتتم إزالة الإدخالات القديمة خلال ساعات.
لقد قمنا بإصلاح بطء كان يتسبب في انتظار الـ proxies المكتشفة حديثًا قبل التحقق من صحتها. يقوم Proxy Finder الآن بفحصها على الفور، مما يحافظ على تحديث المجموعة باستمرار مع وجود المزيد من الـ proxies النشطة والصالحة للعمل قيد التدوير.
عندما يقل العرض عن 768px، ينقسم صف الـ URL إلى صفين، وتُمرر علامات تبويب الـ response أفقياً، ويتحول جدول الـ cookie إلى شبكة بطاقات. تفتح تلميحات الأدوات عند النقر بدلاً من الـ hover، ويحصل جهاز iPhone SE (تحت 374px) على تصغير إضافي. تم توسيط زر Send بشكل صحيح، ولم يعد الـ URL الطويل يتسبب في تمرير الصفحة أفقياً.
كانت ميزة التوسيع تقوم بتمديد بطاقة response داخل تدفق الصفحة، مما تسبب في إضافة شريط تمرير (body scroll) للألواح الطويلة وتغيير التخطيط. أصبحت الآن تراكباً ثابتاً بين الشريط الجانبي وحافة viewport، مع ألواح تتمدد لتملأ الـ viewport. يغلقها مفتاح Escape؛ وتقوم دالة helper واحدة بمعالجة مسارات النقر والضغط على المفاتيح.