أبرز النقاط
كانت المنظمة سابقًا مجرد صف لا يمكنه استيعاب أكثر من شخص واحد. أصبحت الآن صفحة تديرها بنفسك: ادعُ زميلًا، وامنحه دورًا، ودعه ينشئ مفاتيح تدفع الشركة تكلفتها. كما توقف Proxy Finder عن الرد برسالة "out of tries" وبدأ بتحديد العائق الذي واجهه، بينما قضى Browser الأسبوع في التأكد من أنه يروي للصفحة نفس القصة مرتين.
ما الجديد
منظمات يمكنك إدارتها فعليًا
كانت إضافة زميل تعني مراسلتنا عبر البريد الإلكتروني، مما دفع الفرق إلى شراء اشتراكين منفصلين.
تمتلك منظمتك الآن صفحتها الخاصة في Dashboard، مع ثلاثة أدوار محددة. يتحمل المالك الاشتراك الذي تُفوتر المفاتيح بناءً عليه، لذا يوجد مالك واحد فقط وتُنقل الملكية عبر التحويل. يتولى المسؤولون إدارة الاستخدام والفوترة والأعضاء. ويستخدم الأعضاء الخدمة. تُرسل الدعوات عبر البريد الإلكتروني وتعمل حتى لمن لم يسبق له التسجيل.
يمكن لأي شخص في المنظمة إنشاء مفاتيح تابعة لها ونقل مفتاح شخصي إليها، فلا يحتاج المطور إلى مفتاح شخصي يفرض عليه رسومًا مقابل أعمال الشركة. يُحتسب استخدام مفتاح المنظمة على خطة المالك، وتوضح كل رسالة تأكيد الخطة التي تدفع التكلفة. يمكن لأي عضو إعادة تسمية المفتاح، بينما تظل صلاحيات إعادة التوليد والتعطيل والحذف محصورة بالمالكين والمسؤولين، لأن هذه الإجراءات توقف استخدام جميع الزملاء له فور حدوثها.
يعمل عامل تصفية Owner واحد عبر Overview و Detailed Metrics و Recent Activity وقائمة المفاتيح الخاصة بك. وتظل Usage & Limits و Billing شخصية، إذ ليس للعضو شأن بالاطلاع على حصة المالك.
Proxy Finder يتوقف عن التخمين
كانت عبارة "Download maxTry limit reached" تظهر بالصيغة ذاتها سواء كانت جميع منافذ الخروج محظورة، أو متوقفة تمامًا، أو نجحنا في جلب الصفحة الحقيقية لكن قاعدتك الخاصة رفضتها. تتطلب هذه الحالات الثلاث حلولًا متعارضة تمامًا.
تحمل المهمة الفاشلة الآن attemptReport: عدد المنافذ التي لم تستجب نهائيًا، وعدد المنافذ التي رفضها نظام دفاعي معروف مع تحديد مزودي هذه الأنظمة، وعدد المنافذ التي رفضتها validate.status الخاصة بك، وعدد المنافذ التي أعادت كود HTTP 200 دون أي نظام دفاعي مرئي وفشلت فقط أمام validate.data الخاصة بك. وتأتي معها جملة ملخصة واضحة.
لكن هذا العدد الأخير هو الأهم. فقاعدة المحتوى التي لا يمكن مطابقتها تبدو مطابقة تمامًا لعملية حظر من كل الزوايا التي كنا نقيسها سابقًا، ولن تنجح أي إعادة محاولة في إصلاحها مطلقًا. (المزيد حول كيفية تحديد قواعد validate للنجاح.)
لذا فإن النصف الآخر يتعلق بملف التعريف profile. كان Proxy Finder يبدل منافذ الخروج دون تغيير بصمة العميل نهائيًا، وبالتالي فإن الموقع الذي يرفض ملف تعريف متصفح معين يرفضه عند كل منفذ في المجموعة. أما الآن، فإن الرفض يؤدي إلى تغيير profile أثناء إعادة محاولة كانت ستتم بالفعل، لذا لا تتغير أعداد requests و credits لكل مهمة. قم بتثبيت profile بنفسك ولن يتغير أي شيء. مع ذلك، تذكر أنه في أصعب الأهداف، يظل لمنفذ الخروج الذي تستقر عليه أهمية تفوق profile الذي ترسله.
Browser يتوقف عن مناقضة نفسه
كان طلب User-Agent من Browser سابقًا أسوأ من عدم طلبه على الإطلاق. كانت هناك ثلاث طبقات، لكل منها تصورها الخاص لهوية الـ request، مما جعل الـ request الواحد يدّعي أنه يعمل على Windows وMac وإصدار لا يشغّله الأسطول، كل ذلك في وقت واحد. الآن أصبحت قيمة واحدة، تُحدد لمرة واحدة، وتُطبّق في كل مكان: عند التشغيل، وفي الصفحة، وفي الـ workers التي تبدأها الصفحة.
تُشتق تلميحات العميل (Client hints) من تلك السلسلة، وبالتالي تتوافق معها sec-ch-ua والمنصة وnavigator.platform. يعيد الـ response السلسلة التي أرسلناها بالفعل، وهو أمر مهم لأن ملفات تعريف الارتباط الخاصة بتجاوز الحظر (clearance cookies) ترتبط بنقطة الخروج (exit) وUser-Agent معًا. كما يجيب استعلام الـ renderer بنفس الطريقة داخل المستند وداخل الـ worker الآن، وهو واحد آخر من الإشارات الضعيفة المتراكمة.
تم إطلاق ثلاثة تحديثات إضافية معها:
- تتبع الساعة نقطة الخروج. يعمل Browser في المنطقة الزمنية للدولة التي تقع فيها نقطة الخروج الخاصة بك، لذا تعرض الصفحة التي تعرض الأوقات المحلية ما يراه زائر من هناك تمامًا. وعندما تكون الدولة غير معروفة، تُترك الساعة دون تغيير.
- يبقى WebRTC على نفس المسار مثل كل شيء آخر. يغطي إعداد الـ proxy ما يرسله المتصفح عبر TCP. لا يقع WebRTC على هذا المسار، لذا فإن الصفحة التي تطلب منه مرشحي ICE تحصل على إجابة منفصلة. يقوم Browser بتعطيل ذلك كلما تضمن الـ request نقطة خروج.
- تكلفة عناوين URL ذات علامات الإرساء أصبحت كما ينبغي. كان عنوان URL المنتهي بـ
#reviewsيستنفد الوقت بالكامل في كل مرة. لقد عاد الآن إلى السرعة الطبيعية.
مسارات أقل تكلفة، ولوحة تحكم تحسب بدقة
تحقن Imperva سكربتها داخل الصفحات السليمة، وليس فقط في صفحات الحظر الخاصة بها، ولم يكن بإمكان Auto التمييز بين الحالتين، مما جعل الصفحات السليمة تُحوّل دون داعٍ إلى متصفح. في أحد مواقع تأجير السيارات، كلف ذلك 75 رصيدًا و27.5 ثانية عبر ست محاولات؛ أما الآن فتتم في محاولة واحدة، و10 أرصدة، ونحو ست ثوانٍ ونصف. تمنحك بعض المواقع جلسة داخل الرفض الذي ترد به على request بدون جلسة، وتقوم المحركات الأربعة الآن بإعادتها مباشرة قبل التصعيد.
كانت بطاقة الأرصدة في صفحة Overview تعرض كل ما تم إنفاقه وتصنفه على أنه مفوتر. في ظل نموذج الدفع مقابل النجاح يختلف هذان الرقمان، وهذا الفارق يمثل أموالًا فعلية، لذا يعرض كلاهما على البطاقة: المفوتر كرقم أساسي، والمنفق تحته، لكل منتج وإجمالًا. كما تنقسم بطاقة Requests بنفس الطريقة. أصبحت عناصر التحكم في الفترة الزمنية ومستوى التفاصيل منفصلة أيضًا، من 30 دقيقة إلى عام كامل بالإضافة إلى نطاق مخصص، مما يلغي الزر الذي كان يقرأ "1D" ويفتح ثلاثين يومًا.
في Playground، يقدم زر النقل الآن الملف التعريفي (profile) من آخر response، وبالتالي فإن الـ request الذي أُرسل باستخدام profile لم تكتبه يعيد تشغيل الإصدار الذي نجح. تتوفر جميع المعلمات في مرجع API.
التفاصيل التقنية
يحتفظ Proxy Finder بسجل تاريخي أكبر لكل مضيف: 32 نقطة خروج بدلا من اثنتي عشرة نقطة. في اختبار A/B مباشر، كان الأداء متماثلا على الأهداف السهلة وأفضل على الأهداف الصعبة، حيث انخفض متوسط وقت الوصول إلى الصفحة من 5.5 ثوان إلى 3.8 ثوان دون أي تغيير في زمن الاستجابة على مستوى الأسطول بالكامل. اتخذ هدف واحد مسارا عكسيا ولا نعرف السبب بعد، لذا خصصنا له قياسا منفصلا.
المهمة المحكوم عليها بالفشل ستفشل في كلتا الحالتين. الفارق هو ما إذا كنت ستغلق التذكرة في دقيقة واحدة، أو تقضي فترة ما بعد الظهيرة في قياس الشيء الخاطئ.