كيف يمكنني معرفة ما إذا كان عميل الويب يحظر الإعلانات؟

StackOverflow https://stackoverflow.com/questions/2472

  •  08-06-2019
  •  | 
  •  

سؤال

ما هي أفضل طريقة لتسجيل إحصائيات عدد الزوار الذين يزورون موقعي والذين قاموا بضبط متصفحهم على منع الإعلانات؟

هل كانت مفيدة؟

المحلول

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

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

أفضل طريقة لمنع المستخدمين من حظر الإعلانات هي الحصول على إعلانات نصية مضمنة يتم إنشاؤها بواسطة الخادم ونشرها داخل ملف HTML الخاص بك.

نصائح أخرى

أضف معرف المستخدم لطلب الإعلان:

<img src="./ads/viagra.jpg?{user.id}"/>

وبهذه الطريقة يمكنك التحقق من الإعلانات التي يشاهدها كل مستخدم.

عليك أن تفكر في الطرق المختلفة التي يتم بها حظر الإعلانات.أول شيء يجب النظر إليه هو ما إذا كانوا يقومون بتشغيل noscript، لذا يمكنك إضافة برنامج نصي للتحقق من ذلك.

والشيء التالي هو معرفة ما إذا كانوا يحظرون الفلاش، فيجب أن يقوم فيلم صغير بذلك.

إذا نظرت إلى موقع Adblock، هناك بعض المؤشرات حول كيفية قيامه بالحظر:
كيف يعمل إخفاء العناصر؟

إذا نظرت إلى أسفل تلك الصفحة، فسترى أن فحص الكروم التقليدي لن يعمل، لذلك تحتاج إلى محاولة تحليل DOM المعدل.

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

setTimeout("detect_abp()", 10000);
var isFF = (navigator.userAgent.indexOf("Firefox") > -1) ? true : false,
    hasABP = false;

function detect_abp() {
  if(isFF) {
    if(Components.interfaces.nsIAdblockPlus != undefined) {
      hasABP = true;
    } else {
      var AbpImage = document.createElement("img");
      AbpImage.id = "abp_detector";
      AbpImage.src = "/textlink-ads.jpg";
      AbpImage.style.width = "0";
      AbpImage.style.height = "0";
      AbpImage.style.top = "-1000px";
      AbpImage.style.left = "-1000px";
      document.body.appendChild(AbpImage);
      hasABP = (document.getElementById("abp_detector").style.display == "none");

      var e = document.getElementsByTagName("iframe");
      for (var i = 0; i < e.length; i++) {
        if(e[i].clientHeight == 0) {
          hasABP = true;
        }
      }
      if(hasABP == true) {
        history.go(1);
        location = "http://www.tweaktown.com/supportus.html";
        window.location(location);
      }
    }
  }
}

أفترض أنه يمكنك مقارنة الإعلانات المطبوعة مع مشاهدات الصفحة على موقع الويب الخاص بك (والتي يمكنك الحصول عليها من برنامج التحليلات الخاص بك).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top