كيفية منع بيانات التحليلات الخاصة بك من الحظر بواسطة أدوات منع الإعلانات

TL ؛ DR هناك خدمة dataunlocker.com قريبًا (اشترك!) ، جنبًا إلى جنب مع النموذج الأولي مفتوح المصدر الذي يمكنك استخدامه في Google Analytics أو Google Tag Manager (تحديث 2020).

تشرح المقالة من 2017s أدناه المبادئ المستخدمة وراء هذه الحلول ، كما تم وصفها في الملف التمهيدي للحل.

عندما يبدأ منتجك للتو ، يكون لكل مستخدم أهمية. وكذلك الحال بالنسبة للبيانات المتعلقة بكيفية تفاعلهم مع منتجك.

إذا حاولت استخدام حلول التحليلات مثل Google Analytics ، فربما تكون قد واجهت مشكلة حيث تم حظر مجموعة التحليلات الخاصة بك بواسطة أدوات منع الإعلانات.

وفقًا لـ PageFair ، يستخدم ما يصل إلى 30٪ من مستخدمي الإنترنت أدوات منع الإعلانات في عام 2017 ، وهذا العدد في تزايد مستمر.

تشرح هذه المقالة بعض الأساليب الفنية التي يمكنك اتباعها لمنع أدوات حظر الإعلانات من حظر تحليلاتك أيضًا. سنستخدم Google Analytics في هذه المقالة ، على الرغم من أنه يمكن تطبيق الكثير من هذا على أدوات التحليل الأخرى.

بعض الطرق التي يمكنك من خلالها تجاوز أدوات منع الإعلانات

تعمل جميع أدوات منع الإعلانات تقريبًا بنفس الطرق: فهي لا تسمح ببعض طلبات متصفح http (s) للمحتوى على عناوين URL التي تتطابق مع قناع معين من قاعدة التصفية الخاصة بهم.

تقوم معظم أدوات حظر الإعلانات بالقائمة السوداء www.google-analytics.com افتراضيًا ، وتمنع أي محاولات من قِبل مكتبة جافا سكريبت في Google Analytics لإرسال أو استرداد البيانات من خوادم التحليلات الخاصة بها.

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

في الواقع ، حتى بعد ظهور بعض عناوين URL في قاعدة تصفية المحتوى ، يمكنك البدء في اللعب باستخدام أدوات حظر الإعلانات من خلال اختراع أشياء مروعة ، مثل تغيير عناوين URL للتحليلات كل ساعة (على الرغم من أن هذا خارج نطاق هذه المقالة). يتم تطبيق بعض هذه الأساليب بواسطة خدمات مثل DataUnlocker.com و Adtoniq ، والتي توفر للمستخدمين تجربة خالية من مانع الإعلانات حتى عند تشغيل أدوات منع الإعلانات.

شرح عالي المستوى لما سنفعله

في هذه المقالة ، سنفترض أنه ليس لدينا قيود الأذونات من جانب الخادم. سنكتب الحل التجريبي (بضعة أسطر من التعليمات البرمجية) لمنصة Node.js. بمجرد فهم كيفية عمل ذلك ، يجب أن تكون قادرًا على نقل هذا الحل إلى أي لغة برمجة أو نظام أساسي.

الحل الذي سأصفه ضئيل للغاية ، وإذا كنت مطور ويب متمرسًا ، فقد يستغرق الأمر بضع دقائق فقط لوضعه في مكانه.

سنستخدم نهجًا وكيلاً بسيطًا دون الحاجة إلى الغوص في بروتوكول قياس Google Analytics. باختصار ، يبدو الحل كما يلي:

  1. أولاً ، قم بتنزيل مكتبة Google Analytics JavaScript نفسها واستضافتها على خادمك.
  2. بعد ذلك ، قم بتغيير الرمز في المكتبة التي تم تنزيلها لتغيير المضيف الهدف من www.google-analytics.com إلى اسم المجال الخاص بك باستخدام find-replace.
  3. استبدل الارتباط من النص الافتراضي لبرنامج Google Analytics في قاعدة التعليمات البرمجية الخاصة بك بالرابط المعدل.
  4. أنشئ نقطة نهاية وكيل لخوادم Google Analytics على الواجهة الخلفية. تتمثل إحدى الخطوات المهمة هنا في الكشف الإضافي عن عنوان IP للعميل وكتابته صراحة في الطلبات إلى خوادم Google Analytics للحفاظ على الكشف الصحيح عن الموقع.
  5. اختبر النتائج. انت انتهيت!

تجول التنفيذ الفني الكامل

تتوفر جميع التعليمات البرمجية والخطوات الموضحة أدناه على GitHub. يشرح الوصف أدناه أساسيات الطريقة ، وبالطبع يمكن تحسين النهج المقترح ليكون أكثر "مانعًا للحظر".

في Google Analytics ، تبدأ بالحصول على معرف تتبع فريد لموقعك (خدمة ويب). سوف نستخدم UA-98253329-1 ID تتبع في هذه المقالة للمظاهرة. لا تنس استبدال رمز التتبع برمزك.

تقترح Google إضافة هذا الرمز المصغر إلى خدمات الويب الخاصة بك لتمكين التحليلات:

 (function(i,s,o,g,r,a,m)function() (i[r].q=i[r].q,i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) )(window,document,'script', '//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-98253329-1', 'auto'); ga('send', 'pageview'); 

باختصار ، تُحمِّل هذه الشفرة مكتبة Google Analytics JavaScript إذا لم يتم تحميلها من قبل عن طريق إدراج علامة البرنامج النصي في المستند. تتضمن هذه المكتبة كل منطق جمع التحليلات ، وهي الشيء الوحيد الذي نحتاجه للمتابعة.

الخطوة 1: تنزيل مكتبة تحليلات Google وتصحيحها

قم بتنزيل النص البرمجي مباشرةً من //www.google-analytics.com/analytics.js ، وافتحه بأي محرر نصوص واستبدل كل تكرارات:

www.google-analytics.com

بهذه السلسلة بالضبط:

"+location.host+"/analytics

من خلال تصحيح مكتبة التحليلات بهذه الطريقة ، ستبدأ في تقديم طلبات إلى نقاط نهاية المضيف المحلي ( my.domain.com/analytics) بدلاً من www.google-analytics.com . ضع ملف analytics.js المصحح هذا على خادمك بعد الاستبدال.

الخطوة 2: استبدل نص التحليلات بالنص المصحح

دعنا نعدل شفرة تضمين Google Analytics بهذه الطريقة بحيث تستخدم مكتبتنا المصححة بدلاً من المكتبة الافتراضية:

 (function(i,s,o,r)function()[]).push(arguments),i[r].l=1*new Date())(window,document,'script','ga'); ga('create', 'UA-98253329-1', 'auto'); ga('send', 'pageview');  

لاحظ أن المتصفح هنا سيبحث عن نص التحليلات المصحح في جذر المستند لخادمك ، في هذه الحالة ، my.domain.com/analytics.js. تحقق مما إذا كنت قد وضعت البرنامج النصي في جذر المستند أو غيرت المسار في علامة البرنامج النصي أعلاه. يمكنك أيضًا التحقق من النتائج عن طريق إجراء اختبار على خادمك المحلي (راجع الملف التمهيدي لمعرفة كيفية تشغيل مثال GitHub).

يجب أن ترى شيئًا كهذا في أدوات مطور المتصفح:

في النهاية ، نريد أن يؤدي تنزيل ملف analytics.js المصحح إلى رد ناجح - 200 (موافق) أو 304 (غير معدل). ولكن في هذه المرحلة ، يجب أن يستجيب الطلب الموجه إلى my.domain.com/analytics/collect بحالة 404 ، نظرًا لأننا لم ننفذ الخادم الوكيل حتى الآن.

الخطوة 3: تنفيذ أبسط خادم وكيل

الآن سنقوم بترميز بعض الشيء. هدفنا هو تنفيذ الخادم الوكيل ، والذي سينقل طلبات التحليلات الخاصة بنا من خادمنا إلى خادم Google Analytics الحقيقي. يمكننا القيام بذلك بعدة طرق ، ولكن على سبيل المثال ، دعنا نستخدم Node.js و Express.js مع حزمة البروكسي السريع http.

عند جمع كل الملفات الموجودة في المثال معًا (انظر GitHub) ، يجب أن ينتهي بنا الأمر برمز خادم JavaScript التالي:

var express = require("express"), proxy = require("express-http-proxy"), app = express(); app.use(express.static(__dirname)); // serve static files from cwd function getIpFromReq (req)  // get the client's IP address var bareIP = ":" + ((req.connection.socket && req.connection.socket.remoteAddress)  // proxying requests from /analytics to www.google-analytics.com. app.use("/analytics", proxy("www.google-analytics.com", { proxyReqPathResolver: function (req) { return req.url + (req.url.indexOf("?") === -1 ? "?" : "&") + "uip=" + encodeURIComponent(getIpFromReq(req)); } })); app.listen(1280); console.log("Web application ready on //localhost:1280");

بضعة سطور أخيرة هنا تفعل الوكلاء. الحيلة الوحيدة التي نقوم بها هنا هي بدلاً من مجرد إنشاء وكيل ، نكتشف ونلحق عنوان IP الخاص بالعميل بشكل صريح في شكل معلمة عنوان URL لبروتوكول القياس. هذا مطلوب لجمع بيانات الموقع الدقيقة ، لأن جميع الطلبات إلى Google Analytic تأتي في الأصل من عنوان IP لخادمنا ، والذي يظل ثابتًا.

After setting up our server proxy, we can check whether the request to our /collect endpoint now successfully returns a 200 OK HTTP status:

We can use, for example, an anonymous connection to verify that location is also picked up correctly.

This “proxy server” approach is a fast workaround for analytics that enables your services to avoid ad blockers. But this method relies on the browser side, and if the browser script for some reason does not send analytics information to our servers, we get nothing.

تتمثل الخطوة الأخيرة الممكنة إذا كنت ترغب في تنفيذ حل قوي في إرسال التحليلات مباشرة من الخادم باستخدام مكتبات من جانب الخادم متوفرة للغات مختلفة (NodeJS و Python و Ruby و PHP). سيؤدي هذا النهج بالتأكيد إلى تجنب أي أدوات حظر محتوى ، حيث يأتي كل طلب لخوادم التحليلات مباشرة من خوادمنا.

مرة أخرى ، يتوفر التطبيق التجريبي على GitHub ، فلا تتردد في اختباره! اسمحوا لي أن أعرف إذا كان لديك أي ملاحظات أو تجارب مثيرة للاهتمام باستخدام هذا النهج.

شكرا للقراءة!