이 질문의 나이에도 불구하고 최근에 나는 그것이 매우 유용하다는 것을 알았으므로 다른 사람들이 여전히 그것을보고 있다고 가정 할 수 있습니다. 여기와 다른 곳을 살펴본 후 광고 차단기를 간접적으로 감지하기위한 주요 세 가지 클라이언트 측 검사는 차단 된 div
/ img
차단 된 iframe
및 차단 된 리소스 (자바 스크립트 파일)를 확인하는 것으로 가정했습니다.
어쩌면 그것은 상단 또는 편집증 위에 있지만 선택에서 하나 또는 두 개만 차단하는 광고 차단 시스템에 적용되므로 한 번의 검사 만 수행 한 경우에는 적용되지 않을 수 있습니다.
페이지에서 수표를 추가하고 있습니다 : (jQuery를 사용하고 있습니다)
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="advertisement.js"></script>
<script type="text/javascript" src="abds.js"></script>
페이지의 다른 곳에 다음을 추가하십시오.
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
미끼 이름을 가진 div와 텍스트 "Advert"및 애드 센스에서 사용하는 치수 (placehold.it! 덕분에)와 함께 외부에서 호스팅 된 이미지를 사용했습니다.
에서 advertisement.js
당신이 우리가 나중에 확인할 수 있습니다 문서에 무언가를 추가해야한다. 이전과 동일한 작업을 수행하는 것처럼 보이지만 실제로 advertisement.js
는 출력이 아니라로드되는 파일 ( ) 자체를 확인하고 있습니다 .
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
그런 다음 모든 것을 결합한 광고 차단기 감지 스크립트
$(document).ready(function()
{
var ifr = '<iframe id="adServer" src="http://ads.google.com/adserver/adlogger_tracker.php" width="300" height="300"></iframe>';
$("body").append(ifr);
});
$(window).on("load",function()
{
var atb = $("#myTestAd");
var atb2= $("#myTestAd2");
var ifr = $("#adServer");
setTimeout(function()
{
if( (atb.height()==0) ||
(atb.filter(":visible").length==0) ||
(atb.filter(":hidden").length>0) ||
(atb.is("hidden")) ||
(atb.css("visibility")=="hidden") ||
(atb.css("display")=="none") ||
(atb2.html()!="check") ||
(ifr.height()!=300) ||
(ifr.width()!=300) )
{
alert("You're using ad blocker you normal person, you!");
}
},500);
});
문서가 준비 되면, 즉 마크 업이로드되면 iframe도 문서에 추가합니다. 그런 다음, 창이 로드 되면 (예 : 내용 포함) 이미지 등이로드되면 다음을 확인합니다.
- 첫 번째 테스트 사업부의 차원과 가시성.
- 이 경우는이었을 것 같은 것을 두 번째 테스트 DIV의 내용은, "확인"입니다
advertimsent.js
했다 하지 차단.
- iframe의 크기 (그리고 숨겨진 객체에는 높이 또는 너비가 없으므로 가시성이 있다고 생각합니까?)
그리고 스타일 :
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
도움이 되었기를 바랍니다