문제

나는 최근에 방문했다 장소 그리고이 페이지에는 AdBlocking 소프트웨어를 사용하고 있음을 알게 된 섹션이 있음을 알았으며 작은 사이트를 지원하기 위해 친절하게 끄십시오. 나는 당신이 어떻게 그렇게 할 것인지 궁금 했습니까? 클라이언트 측 또는 서버 측에서 가장 잘 수행됩니까?

도움이 되었습니까?

해결책

이것은 단순히 서버 측면을 수행 할 수없는 것입니다. 사람이 당신의 문을 두드리고 "나를 봐라, 나는 adblockplus가 있습니다!"라고 말할 이유가 있습니다. 클라이언트 측에서 AdBlock은 적극적으로 페이지 컨텐츠에 영향을 미치려고 노력하고 있습니다. 이는 AdBlocker를 사용하고 있음을 볼 수있는 일입니다.

어쨌든, 나는 Newgrounds.com도 이것을하고 있다는 것을 알게되었습니다. (그들의 새로운 레이아웃은 Adblock Plus 사용자를 위해 망쳐졌습니다. 응답으로 그들은 "광고를 통해 우리를 도와주지 않으면 상점에서 무언가를 구매하고 구입하십시오"-Banner에 대한 대회를했습니다.

Newgrounds의 출처를 간단히 살펴보면 간단한 JavaScript 로이 작업을 수행하고 있다고 말했습니다. 먼저 문서에서 :

var user_is_leecher = true;

다음에 외부 스크립트 태그가 있습니다. src=checkabp?thisistotrickabp=***adress of ad affilliate***

이제 농담 : 그들은 단순히 Adblock Plus를 신뢰하여 스크립트를 필터링합니다. user_is_leecher = false;

거기에서 그들은 무엇이든 할 수 있습니다.

다른 팁

여기에 언급 된 모든 방법은 광고 차단제에 의존하여 코드를 제거합니다. 이것은 일부 애드 블로커 (Mac의 NetBarrier와 같은)에게는 효과가 없습니다. 또한 애드 블로커가 따라 잡을 때 코드를 계속 업데이트해야합니다.

사용자가 광고를 차단하는지 감지하려면 AD JavaScript에서 함수를 찾아 테스트를 시도하기 만하면됩니다. 광고를 차단하는 데 사용하는 방법은 중요하지 않습니다. Google 애드 센스 광고의 모습은 다음과 같습니다.

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

HTML 페이지에 대한 요청을 페어링하여 서버 측에서 수행 할 수 있습니다. 사용 된 것을 보았습니다.

코드 에서이 부분을 발견 한 것 같습니다.

/*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*/

나는 그것을하는 방법이 여러 가지가 있다고 생각하지만 아마도 가장 쉬운 것은 아마도 광고가로드 될 때 교체 될 배경 이미지 또는 텍스트를 갖는 것일 것입니다. 따라서 광고가로드되면 광고가 표시됩니다. 광고가로드되지 않으면 텍스트가 표시됩니다.

이 예제는 JavaScript 또는 Plain CSS에 의해 수행 된 클라이언트 측면입니다.

이를 수행 할 수있는 서버 측 특수 효과가있을 수 있지만 불필요하게 정교하고 어리석은 일입니다. 마음에 떠오르는 방법 중 하나는 "IP에서 사용자가 IP에서 사용자에게 있었습니까? 그런 식으로 답을 얻습니다. 그러나 그러한 서비스가 있다고 의심합니다. 클라이언트 측에서는 훨씬 쉬울 것입니다.

서버 측보다 클라이언트 측에서 수행하는 것이 훨씬 쉽다고 생각합니다. 광고 차단제는 클라이언트에 설치되므로 DOM을 조작하고 AJAX 요청을 차단할 수 있습니다. 그렇기 때문에 서버보다 클라이언트를 감지하는 것이 더 합리적이라고 생각합니다.

어쨌든, 이것은 광고 차단기가 활성화 된 사용자를 감지하는 독립형 간단한 플러그인이며, 오픈 소스이며 전체 코드는 GitHub에 있습니다.

https://github.com/retargetly/mockingbird

더 많은 게시자 지향적이므로 광고 컨테이너 또는 팝업에 쉽게 메시지를 표시 할 수 있습니다. 플러그인은 자주 업데이트되며 시도해 볼 가치가 있습니다. 이것은 바이올린이기도합니다.

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

사용해야 할 유일한 방법은입니다

mockingbird.adsBlocked(Obj)

통화는 코드의 어느 곳에서나 수행 할 수 있으며 jQuery가 작동하도록 할 필요가 없습니다.

행운을 빌어 요 !

나는 이것을하는 쉬운 방법이 있다고 생각하지 않습니다. 당신이 할 수있는 일은 "트랩"을 만드는 것입니다. PHP 스크립트를 작성하여 yourdomain.com/ad.png와 같은 매우 명백한 URL을 들으십시오. URL 재 작성으로이를 달성 할 수 있습니다. 이 페이지가로드되면 세션 변수에서 이것을 기록하고 1x1 blank png를 다시 보낼 수 있습니다.

다음 요청에서는 ad.png가로드되었는지 확인할 수 있습니다. 클라이언트가 어떤 형태의 Adblock 소프트웨어를 사용하고 있다고 추측 할 수 없습니다. 클라이언트가 "ad.png"를 캐싱하지 못하도록 적절한 HTTP 헤더를 설정해야합니다.

이것은 내가 지금 생각할 수있는 유일한 서버 측 접근법이며 약간의 결함이 있습니다.

  • PNG 파일은 HTTP 헤더에 관계없이 캐시 할 수 있습니다.
  • 이것은 첫 번째 HTTP 요청에 대해서는 작동하지 않습니다
  • 브라우저로서 일부 추가 서버로드
  • 서버에서 이미지가로드되었다는 것은 실제로 표시되는 것을 보장하지 않습니다.
  • 아마 내가 생각하지 않은 더 많은 부작용 일 것입니다

시도해보기로 결정한 경우이 게시물에 의견을 제시하십시오.

클라이언트 측 솔루션과 관련하여. 이것은 어렵지 않아야합니다. 페이지로드를 완료 할 수있는 작은 JavaScript를 만들 수 있습니다. 이 스크립트에는 페이지에 광고를 보유한 Dom-Nodes가 포함되어 있는지 확인할 수 있습니다. 페이지가 완전히로드 된 경우 (DOM뿐만 아니라) 광고 이미지의 너비와 높이를 확인할 수 있습니다. 이 솔루션의 가장 확실한 단점은 클라이언트가 JavaScript를 비활성화 할 수 있다는 것입니다.

여기에 몇 가지 좋은 답변이 있으므로 다음과 같이 추가하겠습니다.

일부 광고 관리 시스템을 사용하십시오 (직접 작성할 수 있음). 이를 통해 표시되는 모든 광고를 추적하고 (ads.php 또는 showad.php 등을 명확하게 만드십시오). 해당 스크립트를 호출하지 않으면 사용자는 어떤 형태의 광고 차단 소프트웨어를 사용하고 있습니다.

그러나 해당 핸들러를 통해 각 광고를 처리하십시오. mod_rewrite가 필요하지 않으며 간단한 PHP를 사용하여 수행 할 수 있습니다.

서버 측의 애드 블로커를 감지하기 위해 할 수있는 일은 다음과 같습니다.

<?php

  header('Content-Type: application/javascript');

  //Save it to session
  session_start();
  $_SESSION['noAdblocker']=true;

 ?>

 noAdblocker=true;

이 파일을 ads.php

이제 index.php:

<?php
  session_start();
  $_SESSION['noAdblocker']=false;
?>
<!DOCTYPE HTML><html><head>
    <!-- Now place the "ad-script" -->
    <script src="ads.php"></script>
</head><body></body></html>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top