最近我访问了一个网站,发现页面上有一段话说它注意到我正在使用广告拦截软件,是否可以关闭以支持像这样的小型网站。我想知道应该如何操作?是在客户端还是服务器端最好实现?
var user_is_leecher = true;
接下来有一个外部脚本标记:src=checkabp?thisistotrickabp=***address of ad affiliate***
现在是个笑话:他们只是相信adblock plus会过滤掉那个脚本,因为里面所有的内容就是:user_is_leecher = false;
在这里提到的所有方法都依赖于广告拦截器来剥离代码。这在某些广告拦截器(如Mac上的NetBarrier)中不起作用。您还需要在广告拦截器发现后不断更新您的代码。
要检测用户是否正在阻止广告,您只需在广告javascript中查找一个函数并尝试测试它即可。无论他们使用什么方法来阻止广告都无关紧要。以下是Google Adsense广告的示例:
if(typeof(window.google_render_ad)=="undefined")
{
//They're blocking ads, do something else.
}
window.onload = function() { if(typeof(window.google_render_ad)=="undefined") { //他们正在阻止广告,做其他事情。 } }
- Beau/*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*/
您可以通过在服务器端配对html页面和相应的广告请求(可能需要一些唯一标识符来区分每个请求...)来完成它。但这只是一个想法,我从未尝试过,甚至从未看到过使用。
https://github.com/retargetly/mockingbird
“这个插件更偏向于出版商,让他们可以轻松地在广告容器或弹出窗口中显示信息。该插件经常更新,值得一试。以下是示例链接:”http://jsfiddle.net/retargetly/9vsha32h/
你需要使用的唯一方法是:mockingbird.adsBlocked(Obj)
我认为没有简单的方法来实现这一点。你可以创建一个"陷阱"。让一个php脚本监听一个非常显眼的url,比如yourdomain.com/ad.png。你可以通过url重写来实现。如果加载了这个页面,你可以在一个session变量中记录下来并返回一个1x1的空白png。
在下一次请求中,你可以看到是否已经加载了ad.png。如果没有加载,那么你可以猜测客户端正在使用某种形式的AdBlock软件。确保设置适当的http头以防止客户端缓存"ad.png"。
这是我目前能想到的唯一的服务器端方法,并且它有一些缺陷。
如果你决定尝试,请在本帖下发表评论。
关于客户端解决方案。这应该不难。您可以创建一个微小的Javascript,在页面加载完成时运行。此脚本可以检查页面是否包含保存广告的dom节点。如果在页面完全加载(而不仅是dom)时执行此操作,则可以检查广告图像的宽度和高度。这种解决方案最明显的缺点是客户端可能会禁用Javascript。你可以在服务器端执行以下操作来检测广告拦截器:
<?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>