잡동사니 & 정보/블로그

안티 애드블록! 애드블록(AdBlock) 2중 차단

퍼스나콘 2015. 6. 12.


애드블록을 2중으로 막아보자

스크립트를 이용한 애드블록 차단과

애드블록의 시스템을 이용한 차단 방법 둘 다 블로그에 올린적이 있습니다.

관련글

안티 애드블록! 애드블록(AdBlock) 스크립트로 차단

안티 애드블록! 애드블록(AdBlock) 차단방법


하지만 스크립트를 사용해서 차단한것이 우회법이 슬슬 나오더군요.


그래서 위 두개의 방법을 합쳤습니다.




2중 차단막 건설방법

1) 본문을 표시하는 article_rep_desc를 div id로 묶어주세요.

이때 id값은 본인이 원하는 값을 사용하면 됩니다. 그리고 그 바로 아래 adsbygoogle 클래스로 묶어줍시다.
※ div id가 이미 사용하고 있다면 값을 바꾸지 마세요! 스킨에 미리 설정된 css설정이 있을수도 있습니다.
    미리 설정되어 있다면 설정된 id값을 그대로 사용하면 됩니다.


<div id="본문 div의 id값(원하는 값을 사용하세요)">
<div class="adsbygoogle">
[##_article_rep_desc_##]
</div>
</div>




2) 본문이 애드블록으로 인해 보이지 않을경우 메시지를 나타내야죠?


바로 위에서 adsbygoogle 클래스로 입력한 부분 바로 앞에 adblock-on 클래스를 이용하여 입력해줍니다.


<div id="본문 div의 id값(원하는 값을 사용하세요)">

<div class="adblock-on"> 애드블록이 켜져있을때 나올 메시지, 이미지 </div>

<div class="adsbygoogle">

[##_article_rep_desc_##]

</div>

</div>


 


.

 

3) 아래 js파일을 다운받아 블로그 관리자 페이지 - HTML/CSS 편집 - 파일 업로드를 통해 업로드 합니다.

 adblockblock.js 

 

 

js 파일 주소는 파일업로드 페이지에서 아무 이미지 파일을 선택하고 미리보기에 뜨는 이미지에 마우스 오른쪽 클릭 -> 속성을 통해 주소를 알 수 있습니다.

예를들어 이미지 파일 주소가 다음과 같습니다. http://cfs.tistory.com/custom/blog/xxx/xxxxxxx/skin/images/image.jpg

그렇다면 업로드한 파일은 http://cfs.tistory.com/custom/blog/xxx/xxxxxxx/skin/images/업로드한파일이름 이 됩니다.

 

저의 경우 http://cfs.tistory.com/custom/blog/xxx/xxxxxxx/skin/images/adblockblock.js 가 되겠죠?

 

 

4) jquery 아래 2개의 스크립트를 추가해줍시다.


HTML/CSS 편집에서 HTML 부분에


jquery 스크립트가 있다면 jquery 스크립트 아래에 아래 내용을 추가해주세요.

jquery 스크립트는 아래에 있는 파란색 소스입니다. 이 소스가 있다면 소스 밑에 아래 내용을 추가하면 됩니다.


<!-- 안티 애드블록 class로 -->

<script>

if ($("div.adsbygoogle").css('display') != 'none') { 

$(".adblock-on").remove(); 

</script>

<script src="3번에서 업로드한 js파일 주소"></script>

<!-- 안티 애드블록 스크립트로 -->

<script>

function adBlockDetected() {

            var element = document.getElementById("본문 div의 id값");

            element.innerHTML = '<img src="애드블록이 발견됐을 경우 본문 위치에 띄울 이미지 주소">';

}

function adBlockNotDetected() {

}

if(typeof fuckAdBlock === 'undefined') {

adBlockDetected();

} else {

fuckAdBlock.onDetected(adBlockDetected).onNotDetected(adBlockNotDetected);

}

function checkAgain() {

document.getElementById('adb-actived').style.display = 'none';

document.getElementById('adb-not-actived').style.display = 'none';

fuckAdBlock.onDetected(adBlockDetected).onNotDetected(adBlockNotDetected);

setTimeout(function() {

fuckAdBlock.check();

}, 500);

}

</script>



jquery 스크립트가 없다면 아래 내용을


</body> 바로 위에 추가해주세요.


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<!--[if lte IE 8]> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <![endif]-->

<!-- 안티 애드블록 class로 -->

<script>

if ($("div.adsbygoogle").css('display') != 'none') { 

$(".adblock-on").remove(); 

</script>

<script src="3번에서 업로드한 js파일 주소"></script>

<!-- 안티 애드블록 스크립트로 -->

<script>

function adBlockDetected() {

            var element = document.getElementById("본문 div의 id값");

            element.innerHTML = '<img src="애드블록이 발견됐을 경우 본문 위치에 띄울 이미지 주소">';

}

function adBlockNotDetected() {

}

if(typeof fuckAdBlock === 'undefined') {

adBlockDetected();

} else {

fuckAdBlock.onDetected(adBlockDetected).onNotDetected(adBlockNotDetected);

}

function checkAgain() {

document.getElementById('adb-actived').style.display = 'none';

document.getElementById('adb-not-actived').style.display = 'none';

fuckAdBlock.onDetected(adBlockDetected).onNotDetected(adBlockNotDetected);

setTimeout(function() {

fuckAdBlock.check();

}, 500);

}

</script>


근데 보통 jquery는 거의 다 있을거에요.




설명

1차로 애드블록이 발견되면 스크립트를 이용해서 애드블록을 차단하고 본문 위치에 메시지를 띄웁니다.
하지만 이 스크립트가 우회됐을 경우를 대비해서 adsbygoogle 클래스로 본문을 둘러두면 애드블록이 켜져있을 경우 본문이 보이지 않게됩니다.
그리고 그 위치에 스크립트를 이용하여 메시지를 띄우는 방식입니다.




적용모습

저의 경우 스크립트와 adsbygoogle로 막았을때 나오는 메시지를 다르게 해놓은 상태입니다.

- 스크립트로 차단됐을때


- adsbygoogle 클래스로 차단됐을때




관련글

안티 애드블록! 애드블록(AdBlock) 차단방법

안티 애드블록! 애드블록(AdBlock) 스크립트로 차단

 

댓글