إصدارتحليل · على الرادارHabr AI→ المصدر

الزيارات تتزايد والطلبات غائبة: كيف تختبئ روبوتات headless ووكلاء الذكاء الاصطناعي في Metrika وGA4

عدد الزيارات يرتفع بينما الطلبات متوقفة: فجزء من «الزوار» متصفحات بلا إنسان. ثبّت الكاتب على صفحة اختبار عدّاده الخاص الشبيه بـ Metrika وGA4، وفتحها عبر curl وPython وPlaywright. الزواحف التي لا تنفّذ JavaScript لا تظهر في التقارير، بينما يسجّل أي متصفح Chromium زيارة كاملة بعمق وملف تعريف ارتباط.

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
الزيارات تتزايد والطلبات غائبة: كيف تختبئ روبوتات headless ووكلاء الذكاء الاصطناعي في Metrika وGA4
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليHabr AI ↗
رئيس التحرير
حقيقة رئيسية #1curl وrequests يظهران في سجل الخادم فقط، والعدّاد صامت
حقيقة رئيسية #2Playwright بعد سطرين من التمويه لا يمكن تمييزه عن الإنسان
ما يكشفهعنوان IP لمركز بيانات، وSwiftShader في WebGL، ونافذة بلا إطار

يرتفع منحنى الزيارات منذ ثلاثة أسابيع، والتسويق راضٍ، لكن الطلبات غائبة. يحلّل مدير المنتج قمع التحويل خطوة بخطوة دون أن يجد عطلاً. ربما لا يوجد ما يُصلَح: فجزء من «الزوار» ليسوا بشراً أصلاً. وفق بيانات Cloudflare بتاريخ 30 سبتمبر 2026، لم يعد أكثر من نصف حركة الإنترنت من صنع البشر، وارتفعت طلبات وكلاء الذكاء الاصطناعي بأكثر من 1700% خلال عام.

ماذا يسمع العدّاد؟

عدّاد التحليلات يعيش على شكل سكربت في الصفحة. بلا JavaScript منفَّذ لا يوجد hit. اختبر كاتب المادة ذلك عملياً: ثبّت على صفحة اختبار عدّاداً مصغّراً يفعل ما تفعله وسوم Metrika وGA4 (يجمع بيانات المتصفح، ويرسل ping بعد 3 ثوانٍ، ويضع ملف تعريف ارتباط first-party)، ثم فتح الصفحة بعملاء مختلفين. وفي الوقت نفسه كان nginx يكتب سجلّه الخاص.

النتيجة بسيطة. curl وPython requests وحتى curl بوكيل المستخدم GPTBot تبقى في السجل فقط. أما أي Chromium، بما فيه Playwright بأوضاع مختلفة وchrome --headless --dump-dom، فيترك أثراً في السجل وhit في العدّاد. زواحف الذكاء الاصطناعي الكبيرة لدى OpenAI وAnthropic تنزّل ملفات JS لكنها لا تشغّلها. أما Gemini (عبر بنية Googlebot) وAppleBot فينفّذان JavaScript. لم يعثر الكاتب على قياسات مستقلة حديثة.

ومن هنا قاعدة عملية: إذا ارتفعت الحركة على الخادم ولم ترتفع في Metrika، فالأرجح أنها زواحف، وهي غير ضارة بالتحليلات. الخطر في من يظهر في التحليلات.

كيف يتنكّر headless

يفضح Playwright غير المموَّه مع headless=True نفسه فوراً: HeadlessChrome في User-Agent وClient Hints، وغياب Accept-Language، وإضافات فارغة، وwebdriver=true. يكفي فحص سطر UA واحد. أما مع channel='chromium' (headless الجديد) فالصورة مختلفة: يبقى في Client Hints اسم Chromium العادي، والكاشف الذي انتقل إلى Client Hints سيمرّر هذا المتصفح.

بعد سطرين من التمويه (UA مخصص، شاشة 1536×864، لغة روسية، توقيت موسكو، علَم ضد webdriver، مرجع من Yandex، حركات فأرة) تختفي نصف العلامات. وتصل أحداث الفأرة بقيمة isTrusted=true، فلا يمكن تمييزها بهذا العلَم.

تبقى تناقضات لا يمكن إصلاحها داخل سياق المتصفح: UA يقول «Windows» بينما navigator.platform يقول «Linux»؛ لا توجد علامة Google Chrome لأن Playwright يستخدم Chrome for Testing؛ حجم النافذة الخارجي يساوي الداخلي؛ وWebGL يعتمد على SwiftShader البرمجي. وهذه العلامة الأخيرة ضعيفة بذاتها (فالإنسان في آلة افتراضية يبدو هكذا أيضاً)، وChrome 153 يحذّر بالفعل من أن الرجوع إلى WebGL البرمجي أصبح متقادماً. أما IP مركز البيانات فلا يمكن تعديله إطلاقاً.

ما العمل

يستبعد GA4 الروبوتات وفق قائمة مغلقة من Google وIAB، ولا يمكن تعطيل ذلك ولا معرفة حجم ما يُستبعد. وقناة «AI Assistant» في GA4 تحتسب الانتقالات من المساعدات ولا علاقة لها بالروبوتات. في Metrika تُستبعد فوراً الروبوتات التي تعرّف بنفسها في UA، أما التي تُكتشف بسلوكها فتُحتسب افتراضياً. ابدأ بالتبديل إلى «البيانات: بدون روبوتات» و«المقارنة مع بيانات الروبوتات». أما المقارنة الثانية فتتم خارج Metrika: النمو في التقرير مقابل النمو في سجل الخادم.

في البيانات المحاكاة (النسب حدّدها الكاتب بنفسه، لذا لا تثبت النسب المئوية شيئاً) المهم هو اجتماع العلامات. فكل علامة منفردة، كالدخول المباشر أو الارتداد أو اللغة الإنجليزية، يمكن تفسيرها بنشرة بريدية أو صفحة هبوط أو إعلانات. أما مع شبكة استضافة وتراجع حصة العائدين فيصعب تفسيرها. ارتباط «شبكة استضافة، دخول مباشر، وزيارة أقل من ثانيتين أو بلا تمرير» يكشف 86% من الروبوتات ويمسّ 0.43% من البشر، لكنه لا يجد من الوكلاء ذوي السلوك البشري سوى 215 من أصل 844. أما ارتباط «استضافة، زائر جديد، شاشة خادم» فقد التقط 745 من 844 مع 1.2% من البشر المتأثرين. ولهذا ينبغي أن تضيف بنفسك إلى تصدير Logs API وسماً لعناوين IP حسب ASN.

التوقيع والوكلاء داخل المتصفح

يوقّع ChatGPT agent طلباته وفق RFC 9421 (الترويسات Signature وSignature-Input وSignature-Agent)، ولا يراها إلا الخادم. أضف $http_signature_agent إلى صيغة سجل nginx واحسب هذه الزيارات هناك. بروتوكول Web Bot Auth ما زال مسودة لدى IETF بتاريخ 1 سبتمبر 2026، لكن OpenAI وGoogle وAWS توقّع به بالفعل.

والأسوأ حال الوكلاء داخل متصفح المستخدم نفسه: Comet وAtlas وClaude in Chrome. فبالنسبة إلى Metrika وGA4 هذا إنسان عادي على جهاز عادي، ولا تعمل أي علامة بيئية. كما لا تفيد الحركة الليلية: فالوكلاء يشغّلهم بشر، ولذلك يتبع نشاطهم الدورة الأسبوعية البشرية.

الخلاصة لمدير المنتج: لا تعالج القمع قبل مطابقة التقرير مع سجل الخادم. وستضطر إلى احتساب زيارات الوكلاء كنوع مستقل من الزوار بتحويل مختلف.

القصة

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

ماذا يسمع العدّاد؟

عدّاد التحليلات يعيش على شكل سكربت في الصفحة. بلا JavaScript منفَّذ لا يوجد hit. اختبر كاتب المادة ذلك عملياً: ثبّت على صفحة اختبار عدّاداً مصغّراً يفعل ما تفعله وسوم Metrika وGA4 (يجمع بيانات المتصفح، ويرسل ping بعد 3 ثوانٍ، ويضع ملف تعريف ارتباط first-party)، ثم فتح الصفحة بعملاء مختلفين. وفي الوقت نفسه كان nginx يكتب سجلّه الخاص. النتيجة بسيطة. curl وPython requests وحتى curl بوكيل المستخدم GPTBot تبقى في السجل فقط.

ما أبرز التفاصيل حول كيف يتنكّر headless؟

يفضح Playwright غير المموَّه مع headless=True نفسه فوراً: HeadlessChrome في User-Agent وClient Hints، وغياب Accept-Language، وإضافات فارغة، وwebdriver=true. يكفي فحص سطر UA واحد. أما مع channel='chromium' (headless الجديد) فالصورة مختلفة: يبقى في Client Hints اسم Chromium العادي، والكاشف الذي انتقل إلى Client Hints سيمرّر هذا المتصفح. بعد سطرين من التمويه (UA مخصص، شاشة 1536×864، لغة روسية، توقيت موسكو، علَم ضد webdriver، مرجع من Yandex، حركات فأرة) تختفي نصف العلامات.

ما أبرز التفاصيل حول ما العمل؟

يستبعد GA4 الروبوتات وفق قائمة مغلقة من Google وIAB، ولا يمكن تعطيل ذلك ولا معرفة حجم ما يُستبعد. وقناة «AI Assistant» في GA4 تحتسب الانتقالات من المساعدات ولا علاقة لها بالروبوتات. في Metrika تُستبعد فوراً الروبوتات التي تعرّف بنفسها في UA، أما التي تُكتشف بسلوكها فتُحتسب افتراضياً. ابدأ بالتبديل إلى «البيانات: بدون روبوتات» و«المقارنة مع بيانات الروبوتات». أما المقارنة الثانية فتتم خارج Metrika: النمو في التقرير مقابل النمو في سجل الخادم.

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

Ship AI Faster with Founders, Engineers & Weekly Architecture Reviews

Inside Vibe Club (hamidun.com/club) — weekly live masterminds with Zhemal Khamidun, Tech Radar, full LMS access, and 370+ production Claude Code skills.

Join Vibe Club →Explore Hamidun Academy
ما رأيك؟
جارٍ تحميل التعليقات…