Обнаружение программного обеспечения AdBlocking?

Недавно я посетил сайт и заметил, что на странице есть раздел, в котором говорится, что он заметил, что я использую программное обеспечение AdBlocking, и я мог бы отключить его, чтобы помочь поддерживать такой небольшой сайт. Мне просто интересно, как вы это сделаете? Будет ли это лучше всего на стороне клиента или на стороне сервера?

  • Заполнение поля выбора с помощью JQUERY, AJAX и PHP
  • JavaScript-эквивалент preg_replace PHP
  • Выделите строку, когда флажок установлен
  • Сделать изменение текста div на клике на основе данных PHP с помощью Ajax
  • Все серии на данной оси должны иметь один и тот же тип данных
  • Как присвоить значение переменной PHP переменной Javascript?
  • 8 responses to “Обнаружение программного обеспечения AdBlocking?”

      Egon_Freeman said:

      Это то, чего просто не может быть сделано на стороне сервера – есть причина, по которой человек может постучать в вашу дверь и сказать «Посмотри на меня, у меня есть AdblockPlus!». Когда на стороне клиента adblock активно пытается повлиять на содержимое страницы, это то, что вы видите, и видите, что они используют рекламный блок.

      В любом случае, мне довелось узнать, что это делает newgrounds.com. (их новый макет был прикручен для adblock плюс пользователей – в ответ они сделали конкурс на лучшее «если вы не собираетесь нам помогать в наших объявлениях, идите и купите что-нибудь в магазине».

      Быстрый взгляд в источник новостроек сказал мне, что они делают это с помощью простого javascript. Сначала в документе:

      var user_is_leecher = true;

      Затем есть внешний тег скрипта: src=checkabp?thisistotrickabp=***adress of ad affilliate***

      Теперь шутка: они просто доверяют adblock и фильтруют этот скрипт, так как все, что там есть: user_is_leecher = false;

      Оттуда они могут сделать что угодно.

      fdnieves said:

      Все описанные здесь методы полагаются на блокировщики рекламы, чтобы вырезать код. Это не работает для некоторых рекламных блоков (например, NetBarrier на Mac). Вы также должны продолжать обновлять свой код, когда блокируют рекламные блоки.

      Чтобы определить, блокирует ли пользователь рекламу, вам нужно найти функцию в javascript и попробовать протестировать ее. Неважно, какой метод они используют для блокировки объявления. Вот как это выглядит для объявлений Google Adsense:

       if(typeof(window.google_render_ad)=="undefined") { //They're blocking ads, do something else. } 

      Этот метод описан здесь: http://www.metamorphosite.com/detect-web-popup-blocker-software-adblock-spam

      kennyisaheadbanger said:

      Я нашел эту часть в коде, который, похоже, выглядит так, как они это сделали:

       /*MOOTOOLS*/ window.addEvent('domready', function(){ $$('.cat-item').each(function(el) { var fx = new Fx.Morph(el,{ duration:300, link:'cancel' }); el.addEvents({ 'mouseenter': function() { fx.start({ 'padding-left': 25 }); }, 'mouseleave': function() { fx.start({ 'padding-left': 15 }); } }); }); if ($$(".google-sense468")[0] && $$(".google-sense468")[0].clientHeight == 0 && $('block-warning')) $('block-warning').setStyle('display','block'); }); /*MOOTOOLS END*/ 
      Люк М said:

      Я думаю, есть несколько способов сделать это, но, вероятно, самым простым было бы иметь какое-то фоновое изображение или текст, который будет заменен при загрузке объявления. Таким образом, если объявление загружается, вы видите объявление. Если объявление не загружается, вы увидите текст.

      Этот пример будет клиентской стороной, выполненной либо с помощью JavaScript, либо просто с CSS.

      Там могут быть некоторые серверные уловки, которые тоже могли бы это сделать, но они были бы излишне сложными и неуклюжими. Один из методов, который приходит на ум, будет включать в себя какой-то API с рекламодателем, которого можно было бы спросить «сделал ли пользователь от IP такой. And.such загрузить какие-либо изображения?» и таким образом получить ответ. Но я сомневаюсь, что есть такие услуги – на стороне клиента было бы намного проще.

      fdnieves said:

      Вы могли бы сделать это на стороне сервера, связав запросы на html-страницы и рекламные объявления (возможно, с некоторыми уникальными идентификаторами для каждого запроса …) … Но это всего лишь идея, я никогда не пробовал и даже не видел, что он используется.

      Хенрик Пол said:

      Я не думаю, что есть простой способ сделать это. Что вы можете сделать, так это создать «ловушку». Сделайте скрипт php прослушивать очень очевидный url, например yourdomain.com/ad.png. Возможно, вы, возможно, достигнете этого путем перезаписи URL. Если эта страница загружена, вы можете отметить это в переменной сеанса и отправить обратно 1×1 пустой png.

      В следующем запросе вы можете увидеть, загружен ли файл ad.png. Если нет, вы можете догадаться, что клиент использует некоторую форму программного обеспечения AdBlock. Убедитесь, что вы установили соответствующие заголовки HTTP, чтобы клиенты не кэшировали «ad.png».

      Это единственный подход к серверной стороне, о котором я могу сейчас думать, и у него есть некоторые недостатки.

      • Файл png можно кэшировать независимо от заголовков http
      • Это не будет работать для первого HTTP-запроса
      • Некоторая дополнительная загрузка сервера в качестве браузеров будет продолжать атаковать ad.png для каждого запроса
      • То, что изображение загружается с сервера, не является гарантией его фактического отображения
      • Вероятно, больше побочных эффектов, о которых я не думал

      Пожалуйста, сделайте комментарий к этому сообщению, если вы решите попробовать его.

      Что касается клиентского решения. Это не должно быть сложно. Вы можете создать крошечный Javascript для завершения загрузки страницы. Этот скрипт может проверить, что страница содержит dom-узлы, содержащие объявления. Если вы, когда страница полностью загружена (не только dom), вы можете проверить ширину и высоту ваших рекламных изображений. Самым очевидным недостатком этого решения является то, что клиенты могут отключить javascripts.

      куб said:

      Несколько хороших ответов здесь, поэтому я просто добавлю следующее:

      используйте некоторую систему управления объявлениями (вы можете написать свой собственный). При этом отслеживайте каждое отображаемое объявление (и делайте его очевидным, например ads.php или showad.php или что-то еще). Если этот сценарий никогда не вызывается, пользователь использует НЕКОТОРУЮ форму для блокировки рекламы.

      Однако не забудьте обработать каждое объявление через этого обработчика. Mod_Rewrite не требуется, это можно сделать с помощью простого PHP.

      кавалер said:

      Я считаю, что гораздо проще сделать это на стороне клиента, чем на стороне сервера. Блокировщики объявлений устанавливаются на клиенте, поэтому они могут манипулировать DOM и блокировать запросы ajax. Вот почему я считаю, что имеет смысл обнаруживать на клиенте, чем на сервере.

      Во всяком случае, это автономный простой плагин, который обнаруживает пользователей с включенными блокировками рекламы, является открытым исходным кодом, а полный код – на github:

      https://github.com/retargetly/mockingbird

      Это больше ориентировано на издателя, поэтому они могут легко отображать сообщения в рекламных контейнерах или всплывающих окнах. Плагин часто обновляется, и стоит попробовать. Это и скрипка:

      http://jsfiddle.net/retargetly/9vsha32h/

      Единственный метод, который вам нужно использовать, – это

       mockingbird.adsBlocked(Obj) 

      Вызов может выполняться в любом месте кода, и вам не нужен jQuery, чтобы он работал.

      Удачи тебе !

    PHP is the Best Programming Language in the world.