بث مباشر 18.11 · الدفعة 318 نوفمبر، 19:00 بتوقيت موسكو — ورشة عملية مجانية لوكلاء الذكاء الاصطناعي · الدفعة 3 تبدأ 23.11ورشة 18 نوفمبر ←الدفعة 3 (23.11)
إصدارتحليل · على الرادارHabr AI→ المصدر

مسوّق يبني مراقب ذكاء اصطناعي للمنافسين: يرصد الميزات الهادئة ولا يزعجك مع كل عملية نشر

تتحول مراقبة مواقع المنافسين المعتادة إلى كاشف لعمليات نشر الواجهة الأمامية: يتغير صنف أو عنوان URL فيصل تنبيه إلى Slack. بنى محلل Garage Eight النظام بطريقة مختلفة: يدخل نموذج لغوي إلى المنتج بحساب مستخدم ويحوّل الواجهة إلى قائمة بالإمكانات، ثم تقارنها شيفرة Python عادية. ولا يصل إلى Slack إلا ما صار بوسع المستخدم فعله حديثًا.

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
مسوّق يبني مراقب ذكاء اصطناعي للمنافسين: يرصد الميزات الهادئة ولا يزعجك مع كل عملية نشر
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليHabr AI ↗
رئيس التحرير
حقيقة رئيسية #1قارنوا الـ capabilities («schedule_action») لا الـ DOM ولا أسماء الأزرار
حقيقة رئيسية #2أبقوا أسماء المستخدمين وكلمات المرور خارج MCP: تسجيل دخول تلقائي في عملية منفصلة
كوكي الجلسة يموت مع Chromeلا تغلقوا المتصفح، واتصلوا عبر CDP

أكثر التغييرات إثارة في منتجات المنافسين لا يعلن عنها أحد. يتم تفعيل أتمتة جديدة أو مساعد ذكاء اصطناعي للمستخدمين ببساطة، دون بيان صحفي ودون إشارة في المتجر. قرر فلاديمير ميخائيلوف، Marketing Analyst في Garage Eight، رصد أمور كهذه تلقائيًا. وتجربته مفيدة لكل من حاول بناء مراقبة باستخدام Playwright وغرق في الإنذارات الكاذبة.

لماذا لا تنجح مقارنة DOM

الفكرة الأولى بديهية: التقاط HTML اليوم، والتقاطه غدًا، ثم المقارنة. وفي تطبيقات SPA الحديثة يعطي هذا كاشفًا لعمليات نشر الواجهة الأمامية، لا للتغييرات في المنتج. يتغير صنف CSS، أو testid، أو عنوان القسم، أو ينتقل مكوّن، أو يُعاد تسمية زر، أو يُعرض للمستخدم متغير آخر من اختبار A/B. وهذا كله مئات التنبيهات يوميًا، ومعظمها عديم الفائدة.

غيّر المؤلف السؤال نفسه. ليس «ما الذي تغيّر في الصفحة»، بل «ما الذي صار بوسع المستخدم فعله ولم يكن بوسعه من قبل». ومن هنا ينبع القرار المعماري الأساسي: لا يتلقى النموذج اللغوي ملفَّي HTML مع طلب «جد الفرق». يعمل النموذج في مرحلة أبكر، عند المدخل: يستكشف الواجهة ويبني نموذجًا منظمًا للمنتج. أما مقارنة النموذجين فتتولاها شيفرة Python حتمية. والنتيجة مستقرة وقابلة للتكرار، ولا تتوقف على «مزاج» النموذج.

مثال من المقال. انتقلت وظيفة من /analytics إلى /insights/analytics، وأُعيدت كتابة DOM، ولم يلاحظ المستخدم شيئًا. سيصرخ الـ diff البنيوي: «MAJOR CHANGE!». أما إذا بقي العنوان والاسم كما هما وأُضيفت إلى الإجراء اليدوي جدولة للتشغيل التلقائي، فسيصمت الـ diff رغم أن هذا تغيير مهم. لذلك تحتفظ كل وظيفة بقائمة من capabilities: schedule_action وexport_report وcreate_custom_alert. ويُحسب لها تجزئة (hash) مستقلة، وهي التي تشير إلى التغيير الجوهري.

خط المعالجة وواجهتان

السلسلة كالتالي: متصفح بجلسة موثّقة، ثم AI Discovery، ثم نموذج الوظائف، ثم لقطة دلالية، ثم المقارنة، ثم مرشح الأهمية التجارية، ثم Slack. الموقع العام ليس سوى واجهة عرض. فـ Saved Views وCustom Alerts وAutomation Rules والتوصيات لا تظهر إلا بعد تسجيل الدخول، ولذلك يتجول النظام في المنتج كأي مستخدم مسجّل دخوله.

ويُضاف إلى ذلك طبقة تحليلية. فـ Claude متصل عبر MCP بسجل المراقبة بأدوات للقراءة فقط: الوظائف الحالية للمنافسين، وNEW/UPDATED/REMOVED خلال فترة، ومرشحات بحسب الفئات، وفحص التغطية. والنتيجة وضعان. يرسل Slack التغييرات من تلقاء نفسه. وعلى سؤال «ما الذي ظهر لدى المنافسين خلال شهر ولا يوجد لدى الآخرين؟» يحصل المحلل على إجابة بلغة عادية، دون SQL أو JSON. كما يُزامَن السجل مع Google Drive كقاعدة معرفة لمشروع Claude Project منفصل.

المصادقة: أين تنكسر الأتمتة

يخصص جزء كبير من المقال لكيفية عدم الفشل عند تسجيل الدخول. والاكتشافات العملية:

  • حالات بدلًا من فحص URL. شرط «لا يوجد /login في العنوان» غير موثوق: فقد تعرض SPA صفحة لثانية ثم تحوّل فورًا إلى أخرى. يستخدم المؤلف آلة حالات (AUTH_OK وAUTH_EXPIRED وAUTH_2FA_REQUIRED وAUTH_CAPTCHA_REQUIRED وAUTH_UNKNOWN) ويعدّ المستخدم موثّقًا إذا وُجد مؤشران مستقلان على الأقل من ثلاثة، مثل قائمة المستخدم وزر الخروج.
  • خطأ التنقل ليس فشلًا في تسجيل الدخول. قد يتسبب الاستثناء «Execution context was destroyed» عند دخول ناجح في إعادة إرسال النموذج. لذا تُفحص الحالة بسلسلة من القياسات، وتُتجاهل الأخطاء المؤقتة.
  • الأسرار لا تصل إلى النموذج. يُخزَّن اسم المستخدم وكلمة المرور في مخزن النظام، ويدخلهما عملية Playwright مستقلة (standalone). ولا يتلقى الذكاء الاصطناعي سوى إشارة بأن الجلسة صارت حيّة مجددًا، وسجل الطلبات إلى النموذج خالٍ من الأسرار.
  • لا يُلتفّ على 2FA. إذا وصلت رسالة SMS يتوقف النظام وينتظر الإنسان. وبعد إدخال الرمز تُحفظ الجلسة وتجري عمليات التشغيل اللاحقة تلقائيًا.
  • ليست كل الكابتشا سواء. شارة reCAPTCHA غير المرئية على الصفحة لا تعني أنه يُطلب منك الآن اجتياز التحقق. يجب التمييز بين «الكابتشا موجودة» و«الكابتشا تمنع الدخول».
  • الملف الشخصي الدائم لا يعني جلسة دائمة. أصدرت إحدى الخدمات كوكي مصادقة بقيمة expires: -1، فكان يموت مع عملية Chrome. ولم يحارب المؤلف ذلك: بعد تسجيل الدخول التلقائي يبقى المتصفح مفتوحًا، ويتصل به Playwright MCP عبر CDP (connectOverCDP).

ما الذي تأخذه معك وما الذي تتذكره

ثلاث أفكار قابلة للنقل. الأولى: استخدموا النموذج اللغوي لتحويل الفوضى إلى بنية، وقارنوا بشيفرة حتمية. الثانية: صِفوا المنتج عبر أفعال المستخدم لا عبر الترميز. الثالثة: اعتبروا الأسرار منطقة لا يدخلها النموذج أصلًا.

وهناك قيود أيضًا. ففي الجزء المتاح من المادة لا توجد أرقام: كم تكلفة التشغيل الواحد، وكم مرة يفوّت النموذج وظائف أو يختلقها، وكيف يميّز مرشح الأهمية المهم من التافه. وقد يخالف الدخول إلى منتجات الآخرين بحساب شروط استخدام الخدمة، وينبغي التحقق من ذلك مع المحامين قبل الإطلاق. أما البنية نفسها فتبدو عملية وتصلح للاستطلاع المنتجي في أي فريق.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول لماذا لا تنجح مقارنة DOM؟

الفكرة الأولى بديهية: التقاط HTML اليوم، والتقاطه غدًا، ثم المقارنة. وفي تطبيقات SPA الحديثة يعطي هذا كاشفًا لعمليات نشر الواجهة الأمامية، لا للتغييرات في المنتج. يتغير صنف CSS، أو testid، أو عنوان القسم، أو ينتقل مكوّن، أو يُعاد تسمية زر، أو يُعرض للمستخدم متغير آخر من اختبار A/B. وهذا كله مئات التنبيهات يوميًا، ومعظمها عديم الفائدة. غيّر المؤلف السؤال نفسه. ليس «ما الذي تغيّر في الصفحة»، بل «ما الذي صار بوسع المستخدم فعله ولم يكن بوسعه من قبل».

ما أبرز التفاصيل حول خط المعالجة وواجهتان؟

السلسلة كالتالي: متصفح بجلسة موثّقة، ثم AI Discovery، ثم نموذج الوظائف، ثم لقطة دلالية، ثم المقارنة، ثم مرشح الأهمية التجارية، ثم Slack. الموقع العام ليس سوى واجهة عرض. فـ Saved Views وCustom Alerts وAutomation Rules والتوصيات لا تظهر إلا بعد تسجيل الدخول، ولذلك يتجول النظام في المنتج كأي مستخدم مسجّل دخوله. ويُضاف إلى ذلك طبقة تحليلية. فـ Claude متصل عبر MCP بسجل المراقبة بأدوات للقراءة فقط: الوظائف الحالية للمنافسين، وNEW/UPDATED/REMOVED خلال فترة، ومرشحات بحسب الفئات، وفحص التغطية. والنتيجة وضعان.

ما أبرز التفاصيل حول المصادقة: أين تنكسر الأتمتة؟

يخصص جزء كبير من المقال لكيفية عدم الفشل عند تسجيل الدخول. والاكتشافات العملية: حالات بدلًا من فحص URL. شرط «لا يوجد /login في العنوان» غير موثوق: فقد تعرض SPA صفحة لثانية ثم تحوّل فورًا إلى أخرى. يستخدم المؤلف آلة حالات (AUTH_OK وAUTH_EXPIRED وAUTH_2FA_REQUIRED وAUTH_CAPTCHA_REQUIRED وAUTH_UNKNOWN) ويعدّ المستخدم موثّقًا إذا وُجد مؤشران مستقلان على الأقل من ثلاثة، مثل قائمة المستخدم وزر الخروج. خطأ التنقل ليس فشلًا في تسجيل الدخول.

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
ما رأيك؟
جارٍ تحميل التعليقات…