我希望能够检测用户在访问我的网站时是否使用了广告拦截软件。如果他们正在使用它,我想显示一条消息,要求他们关闭它以支持该项目,就像这个网站一样。
如果您进入该网站并且您的浏览器启用了某种广告拦截软件,则该网站不会显示实际广告,而是显示一个小横幅,告诉用户广告收入用于托管项目,他们应该考虑关闭 Adblock .
我想在我的网站上这样做,我在上面使用 Adsense 广告,我该怎么做?
我的解决方案并不特定于某个广告网络,而且非常轻量级。我已经在生产环境中运行了几年。AdBlock 会阻止所有包含“ads”或“prebid”字样的 URL。所以这就是我所做的:
我在我的 webroot 中添加了一个小的 js 文件,其名称为prebid-ads.js
2021 年 4 月 12 日更新:您可能想要调用该文件prebid-ads.js
或ads-prebid.js
其他名称,因为并非所有广告拦截器都会阻止名称类似的文件ads.js
。
这是该文件中唯一的代码行
var canRunAds = true;
然后在我页面的某个地方:
<html>
<head>
<script src="/js/prebid-ads.js"></script>
</head>
<body>
<script>
if( window.canRunAds === undefined ){
// adblocker detected, show fallback
showFallbackImage();
}
</script>
</body>
</html>
像 ads.js 这样的文件至少会被 Chrome 上的这些广告拦截器拦截:
2019-02-15 更新:
在上面的列表中添加了 Ghostery,因为该扩展现在还阻止了对 ads.js 的请求。非常便利。这是否意味着 Ghostery 实际上是在帮助我们的开发人员检测其扩展程序对广告的拦截?
不适用于:
隐私獾
不是直接的答案,但我会将消息放在要加载的广告后面......而不是试图检测它,它只会在广告没有出现时出现。
async function detectAdBlock() {
let adBlockEnabled = false
const googleAdUrl = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'
try {
await fetch(new Request(googleAdUrl)).catch(_ => adBlockEnabled = true)
} catch (e) {
adBlockEnabled = true
} finally {
console.log(`AdBlock Enabled: ${adBlockEnabled}`)
}
}
detectAdBlock()
http://thepcspy.com/read/how_to_block_adblock/
使用 jQuery:
function blockAdblockUser() {
if ($('.myTestAd').height() == 0) {
window.location = 'http://example.com/AdblockNotice.html';
}
}
$(document).ready(function(){
blockAdblockUser();
});
当然,您需要有一个 AdblockNotice.html 的登录页面,并且 .myTestAd 类需要反映您的实际广告容器。但这应该有效。
编辑
正如 TD_Nijboer 建议的那样,更好的方法是使用:hidden
(或:visible
,正如我在下面使用的)选择器,以便display: none
也检查:
function blockAdblockUser() {
if ($('.myTestAd').filter(':visible').length == 0) {
// All are hidden, or "not visible", so:
// Redirect, show dialog, do something...
} else if ($('.myTestAd').filter(':hidden').length > 0) {
// Maybe a different error if only some are hidden?
// Redirect, show dialog, do something...
}
}
当然,if
如果需要,这两者可以组合成一个块。
请注意,visibility: hidden
两者都不会被捕获(布局空间保持不变,但广告不可见)。要检查这一点,可以使用另一个过滤器:
$('.myTestAd').filter(function fi(){
return $(this).css('visibility') == 'hidden';
})
这将为您提供一系列“不可见”的广告元素(理论上任何问题都大于0
问题)。
大多数广告都是在 javascript 中动态加载的。我只是使用 onerror 事件来检测是否可以加载广告脚本。似乎工作。
GoogleAds 示例:
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" onerror="adBlockFunction();"></script>
这也可以用于其他元素,以查看广告拦截器是否阻止了内容。如果远程元素不存在或无法访问,此方法可能会产生误报。
要检测用户是否阻止广告,您所要做的就是在广告 javascript 中找到一个函数并尝试对其进行测试。他们使用什么方法来屏蔽广告并不重要。以下是 Google Adsense 广告的外观:
if(!window.hasOwnProperty('google_render_ad') || window.google_render_ad === undefined) {
//They're blocking ads, display your banner
}
此处概述了此方法:http ://www.metamorphosite.com/detect-web-popup-blocker-software-adblock-spam
您不需要额外的 HTTP 请求,您可以简单地计算一个假添加的高度。
顺便说一句,这里有一个匹配广告拦截器避免呈现的元素的完整列表。
window.adBlockRunning = function() {
return (getComputedStyle(document.getElementById("detect"))["display"] == "none") ? true : false;
}()
console.log(window.adBlockRunning);
#detect {
height: 1px;
width: 1px;
position: absolute;
left: -999em;
top: -999em
}
<div id="detect" class="ads ad adsbox doubleclick ad-placement carbon-ads"></div>
我最简单的 jquery 解决方案是:
$.ajax({
url: "/scripts/advertisement.js", // this is just an empty js file
dataType: "script"
}).fail(function () {
// redirect or display message here
});
ads.js 什么都不包含。当有人使用 adblock 时,它会失败并调用该函数。
我的建议是:不要这样做!
任何将人们视为“不法分子”的情况都会导致他们反击。
这是我的建议。
在页面顶部放置一条不显眼的小消息(无论广告是否被阻止),其中包含文本I *totally* respect your right to block ads
和指向另一个页面/弹出窗口的链接,标题为Read more ...
.
在另一页上,明确表明您了解这是他们的计算机,并且他们可以免费使用广告拦截。
还要以非指责的方式明确表示,使用这些拦截器会使您更难以提供出色的内容(详细解释原因),并且虽然您不希望广告拦截发生在您的网站上,这完全是他们的决定。专注于关闭阻塞的积极因素。
那些强烈反对广告的人会忽略这一点,但无论如何你从来没有机会说服他们。那些漠不关心的人很可能会被你的呼吁所左右,因为你没有做“让我走我的路,否则我会带着我的球回家”的事情,老实说,这应该是五岁孩子的专属领域。
请记住,没有人拿枪指着你的头,强迫你把你的东西放在网上。尊重你的读者/用户,你可能会发现他们中的很多人会回报。
只需在您的网站上添加小脚本:
var isAdsDisplayed = true;
名称为adsbygoogle.js
然后执行以下操作:
<script src="/js/adsbygoogle.js"></script>
<script>
if(window.isAdsDisplayed === undefined ) {
// AdBlock is enabled. Show message or track custom data here
}
</script>
在这里找到了这个解决方案
我知道已经有足够的答案,但由于这个问题出现在谷歌搜索“检测广告拦截”的主题,我想提供一些见解,以防你不使用 adsense。
具体来说,通过这个示例,您可以检测是否使用了 Firefox Adblock 提供的默认 Adblock-list。它利用了在这个阻止列表中有一个被 CSS id 阻止的元素#bottomAd
。如果我在页面中包含这样一个元素并测试它的高度,我知道广告拦截是否处于活动状态:
<!-- some code before -->
<div id="bottomAd" style="font-size: 2px;"> </div>
<!-- some code after -->
其余的通过通常的 jQuery 嫌疑人完成:
$(document).ready( function() {
window.setTimeout( function() {
var bottomad = $('#bottomAd');
if (bottomad.length == 1) {
if (bottomad.height() == 0) {
// adblocker active
} else {
// no adblocker
}
}
}, 1);
}
可以看出,我使用setTimeout
的超时时间至少为 1 毫秒。我已经在各种浏览器上进行了测试,大多数时候,直接检查元素ready
总是返回 0;无论广告拦截器是否处于活动状态。我对此有两个想法:要么渲染尚未完成,要么 Adblock 尚未启动。我没有费心去进一步调查。
检查是否有广告拦截的有效方法:只需通过尝试触发谷歌广告的 URL 来检查是否启用了广告拦截。如果是,则运行 callback_has_adblock,如果不是,则运行 callback_no_adblock。此解决方案花费了一个请求,但至少它始终有效:
var hasAdBlock = function (callback_has_adblock, callback_no_adblock) {
$.getScript( "https://pagead2.googlesyndication.com/pagead/show_ads.js" )
.done(function( script, textStatus ) {
callback_no_adblock();
})
.fail(function( jqxhr, settings, exception ) {
callback_has_adblock();
});
};
此解决方案适用于所有类型的广告,而不仅仅是 google adsense。
他们正在利用 Google 的广告代码创建一个 ID 为“iframe”的 iframe 的事实。因此,只要您的页面上还没有具有该 ID 的内容,这也适用于您。
<p id="ads">
<script type="text/javascript"><!--
google_ad_client = "their-ad-code-here";
/* 160x600, droite */
google_ad_slot = "their-ad-code-here";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<script type="text/javascript"><!--
if(document.getElementsByTagName("iframe").item(0) == null)
{
document.write("<div style='width:160px; height:600px; padding-top: 280px; margin-left:5px;border:1px solid #000000; text-align:center; font-family:century gothic, arial, helvetica, sans serif;padding-left:5px;padding-right:5px;'>Advertising seems to be blocked by your browser.<br /><br /><span style='font-size:10px'>Please notice that advertising helps us to host the project.<br /><br />If you find these ads intrusive or inappropriate, please contact me.</span><img src='http://www.playonlinux.com/images/abp.jpg' alt='Adblock Plus' /></div>");
}
--></script>
我注意到之前的评论使用 google adsense 作为测试对象。有些页面不使用adsense,并且使用adsense 块作为测试并不是一个好主意。因为 AdSense 块可能会损害您的 SEO。这是我如何通过 adblocker 简单阻止类检测的示例:
html:
<div class="ad-placement" id="ablockercheck"></div>
<div id="ablockermsg" style="display: none"></div>
查询:
$(document).ready(function()
{
if(!$("#ablockercheck").is(":visible"))
{
$("#ablockermsg").text("Please disable adblocker.").show();
}
});
“ablockercheck” 是 adblocker 阻止的 ID。因此,检查它是否可见,您可以检测广告拦截器是否已打开。
安全的方法是将广告包裹在里面<div>
并检查高度
<div id="check-ab">
/* your ads code */
</div>
setTimeout(function(){
if(document.getElementById("check-ab").offsetHeight === 0){
console.log("ads blocked");
}
else{
console.log("ads running");
}
}, 100);
它适用于 adblock plus 和 bluehell 防火墙。
AdBlock 似乎会阻止加载 AdSense(等)JavaScript 文件。因此,如果您使用的是异步版本的 AdSense 广告,您可以检查是否adsbygoogle
为Array
. 这必须在几秒钟后检查,因为异步脚本是......异步的。这是一个粗略的大纲:
window.setTimeout(function(){
if(adsbygoogle instanceof Array) {
// adsbygoogle.js did not execute; probably blocked by an ad blocker
} else {
// adsbygoogle.js executed
}
}, 2000);
为了澄清起见,以下是 AdSense 异步广告代码的示例:
<!-- this can go anywhere -->
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- this is where the ads display -->
<ins class="adsbygoogle" ...></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
请注意,它adsbygoogle
被初始化为一个数组。库在执行时adsbygoogle.js
将此数组更改为。Object {push: ...}
在一段时间后检查变量的类型可以告诉您脚本是否已加载。
我在我的网站上使用的这种方法,也许你会发现它很有帮助。在我看来,这是最简单的解决方案。
AdBlocker 会阻止特定的类和 html 元素,通过在开发者控制台中检查任何被阻止广告的选择器(它们都已列出),您可以看到哪些元素将始终被阻止。
例如,只需检查 stackoverflow 上的这个问题页面,您就会看到一堆被屏蔽的广告。
例如,任何具有bottom-ad
类的元素都会被自动阻止。
bottom-ad
:
<div class="bottom-ad" style="width: 1px; height: 1px;">HI</div>
$('.bottom-ad').css('display') == "none"
或者更好地使用$('.bottom-ad').is(':visible')
如果值为true
,则 AdBlocker 处于活动状态。
async function hasAdBlock() {
try {
await fetch("https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js", {
method: "HEAD",
mode: "no-cors",
})
return false;
} catch(e) {
return true;
}
}
这个效果不错
如果有 adBlocker 它会提醒你
checkAdBlocker();
function checkAdBlocker() {
try {
fetch(
new Request("https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js", {
method: 'HEAD',
mode: 'no-cors'
})).catch(error => {
showNotification()
});
} catch (e) {
// Request failed, likely due to ad blocker
showNotification()
}
}
function showNotification() {
alert("Please disable adBlocker")
}
大多数 adblocker 取消了对元素的 HTTP 请求,ads.js
但0px
有时 adblocker删除了 DOM,并且上面的某些答案将失败,因为没有检查元素的存在。
使用setTimeout()
是很好的做法,因为没有它,会使脚本与 adblocker 竞争。
下面的脚本将检查 dom 是否存在/删除并检查offsetHeight
元素是否存在。
setTimeout(function() {
var a = document.querySelector('.showads'),
b = a ? (a.offsetHeight ? false : true) : true;
console.log('ads blocked?', b)
}, 200); // don't too fast or will make the result wrong.
<div class="ads showads">
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
</div>
尽管这个问题的年代久远,但我最近发现它非常有用,因此只能假设还有其他人仍在查看它。在这里和其他地方查看后,我推测用于间接检测广告拦截器的主要三个客户端检查是检查被阻止 的div
/ img
、被阻止iframe
的 s 和被阻止的资源(javascript 文件)。
也许它过分或偏执,但它涵盖了仅阻止一两个选择的广告拦截系统,因此如果您只进行了一次检查,则可能不会被覆盖。
在您正在运行检查的页面上添加:(我正在使用 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 以及一个带有“广告”文本和 AdSense 使用的尺寸的外部托管图像(感谢 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 添加到文档中。然后,当窗口加载时,即内容包括。图像等已加载,我们检查:
advertimsent.js
被阻止的话。和风格:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
希望这可以帮助
如果使用新的 AdSense 代码,您可以进行简单的检查,而无需借助内容或 css 检查。
将您的广告正常放置在您的标记中:
<ins class="adsbygoogle" style="display: block;"
data-ad-client="ca-pub-######"
data-ad-slot="#######"
data-ad-format="auto"></ins>
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
然后调用页面底部的 adsense 代码(注意在调用脚本时不要使用该"async"
标志):adsbygoogle.js
<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
然后在下面添加这个小代码片段:
<script>
if (!adsbygoogle.loaded) {
// do something to alert the user
}
</script>
AdSense 总是在广告加载时创建/设置标志adsbygoogle.loaded
,true
您可以将检查放在 setTimeout 函数中以将检查延迟几秒钟。
上述所有答案都是有效的,但大多数都不适用于 DNS 级别的广告拦截。
DNS 级别的广告拦截器(如pi-hole)基本上返回 NXDOMAIN(domain does not exist) 以获得广告拦截域的列表(例如 telemetry.microsoft.com 在出现时将“不存在”)。
有几种方法可以规避这种情况:
方法 A:通过 IP 地址而不是域请求广告。
这种方法有点烦人,因为您必须跟踪 IP 地址。如果您的代码没有得到很好的维护或定期更新,这将是一个问题。
方法 B:阻止所有失败的请求——即使客户端报告 NXDOMAIN。
如果它是一个“合法的”NXDOMAIN,这对用户来说会很烦人。
.html 文件
<script src="wp-banners.js"></script>
<script>
if(document.getElementById('LavXngdFojBe')){
alert('Blocking Ads: No');
} else {
alert('Blocking Ads: Yes');
}
</script>
wp-banners.js
var e=document.createElement('div');
e.id='LavXngdFojBe';
e.style.display='none';
document.body.appendChild(e);
这也显示在 https://detectadblock.com上。
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>var adb=true;</script>
<script src="./getbanner.cfm?"></script>
<script>
$(document).ready(function(){if(adb)alert('AdBlock!');});
</script>
在 getbanner.cfm 文件中:
adb = false;
我认为这是检测广告拦截的最简单方法。
我知道这已经得到解答,但我查看了建议的示例站点,我看到他们这样做:
<script type="text/javascript">
if(document.getElementsByTagName("iframe").item(0) == null) {
document.write("<div style="width: 160px; height: 600px; padding-top: 280px; margin-left: 5px; border: 1px solid #666666; color: #FFF; background-color: #666; text-align:center; font-family: Maven Pro, century gothic, arial, helvetica, sans-serif; padding-left: 5px; padding-right: 5px; border-radius: 7px; font-size: 18px;">Advertising seems to be blocked by your browser.<br><br><span style="font-size: 12px;">Please notice that advertising helps us to host the project.<br><br>If you find these ads intrusive or inappropriate, please contact me.</span><br><img src="http://www.playonlinux.com/images/abp.png" alt="Adblock Plus"></div>");
};
</script>
无需超时和 DOM 嗅探。只需尝试从流行的广告网络加载脚本,然后查看广告拦截器是否拦截了 HTTP 请求。
/**
* Attempt to load a script from a popular ad network. Ad blockers will intercept the HTTP request.
*
* @param {string} url
* @param {Function} cb
*/
function detectAdBlockerAsync(url, cb){
var script = document.createElement('script');
script.onerror = function(){
script.onerror = null;
document.body.removeChild(script);
cb();
}
script.src = url;
document.body.appendChild(script);
}
detectAdBlockerAsync('http://ads.pubmatic.com/AdServer/js/gshowad.js', function(){
document.body.style.background = '#c00';
});
如果您使用带有钩子的反应:
import React, { useState, useEffect } from 'react'
const AdblockDetect = () => {
const [usingAdblock, setUsingAdblock] = useState(false)
let fakeAdBanner
useEffect(() => {
if (fakeAdBanner) {
setUsingAdblock(fakeAdBanner.offsetHeight === 0)
}
})
if (usingAdblock === true) {
return null
}
return (
<div>
<div
ref={r => (fakeAdBanner = r)}
style={{ height: '1px', width: '1px', visibility: 'hidden', pointerEvents: 'none' }}
className="adBanner"
/>
Adblock!
</div>
)
}
export default AdblockDetect
如果您使用 jQuery 和 Google Adsense:
jQuery.getScript(
"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js",
function() {
// Load your ad now
}).fail(function() {
// Google failed to load main script, do something now
});
这更容易理解:如果 Google Ads 主 JavaScript 文件加载失败,AdSense 将无法工作,因此您可以使用 jQuery 的 fail 函数来做一些事情。
“现在加载您的添加”是当我附加“ins”对象时,例如:
jQuery(".my_ad_div").append('<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-xxx"
data-ad-slot="xxx"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>');
在“// Google 无法加载主脚本,现在做点什么”中,我通常将图片放在广告位置。
这对我有用:
function isAdBlocked() {
return (typeof(window.google_jobrunner) === "undefined") ? true : false;
}
$(document).ready(function(){
if(isAdBlocked()) {
alert('Y U NO LIKE ADS?');
}
});
我了解您的紧张情绪,您可以检查元素是否已由脚本创建或元素是否隐藏。如果我们谈论广告拦截,您只能依靠元素的可见性,而不是元素的存在。
使用第三方脚本创建的元素永远不会出现,如果此时无法访问脚本(DNS 错误、远程 Web 服务器错误、离线网页预加载等),您将始终得到误报。
所有其他带有检查的答案都是正确的,但请记住这一点。
如果您在浏览器中阻止广告拦截新标签时遇到问题,您可以执行以下操作:
$('a').click(function(e){ // change $('a') into more specific selector
const openedWindow = window.open(this.href, '_blank');
// Check if browser tab was closed within 0.3 second (user can't, adblock does).
setTimeout(() => {
if (openedWindow.closed) {
alert('Adblock detected!');
}
}, 300);
e.preventDefault(); // return false if you like
});
仅当您不想阻止整个站点并且只是告诉用户他们的浏览器选项卡关闭的原因时,此代码才有用;)
timing's
答案很好,但没有更多的工作,所以我已经将 js 文件的名称从“ads”更新为“adsense”,它就像一个魅力一样恢复了!
这是代码,也许这会对某人有所帮助:
<html>
<head>
<script src="/adsense.js"></script>
</head>
<body>
<script>
if( window.adblockDetecter === undefined ){
// Do anithing, adblocker detected!
alert('Adblocker Detected!');}
</script>
</body>
</html>
在 Js 文件中只放这一行:var adblockDetecter = true;
现在有一个更好的方法可以使用一个名为AdBlock Detector
的简单 JS 脚本来执行此操作
以下是如何使用它:将其
添加到您的<head>
部分:
<script type="text/javascript">
window.onload = function() {
var iframe = document.createElement('iframe'),
randomDomain = Math.floor(Math.random() * (10000 - 100 + 1)) + 100,
iframeLoaded = true;
iframe.src = "http://"+ randomDomain +".com/ads.html";
iframe.height = ".1px";
iframe.width = ".1px";
iframe.id = 'some-ad';
iframe.onload = function() {iframeLoaded = false;};
document.body.appendChild(iframe);
setTimeout(function() {
var someAd = document.getElementById('some-ad');
if(!iframeLoaded ||
someAd == null ||
someAd.style.display == "none" ||
someAd.style.display == "hidden" ||
someAd.style.visibility == "hidden" ||
someAd.offsetHeight == 0)
document.getElementById('ab-message').style.display = 'block';
someAd.remove();
}, 500);
};
</script>`<br>
现在,您可以ab-message
在要向 AdBlock 用户显示消息的任何地方使用 id:
<div id="ab-message" style="display: none">Your message here!</div>
请注意添加的内联样式以将其隐藏(当然,您也可以从自己的 CSS 文件中执行此操作)。
另请注意,它需要 500 毫秒,这是因为它必须等待广告拦截器完成它的工作,否则它将无法工作。
首先,它附加一个带有随机生成链接源的 iframe。(它是随机生成的,因为一些广告块很聪明,在某些时候,他们意识到链接是假的)。
然后它对该 iframe 运行多次检查(如果它已成功加载或它的样式是否已修改)。如果其中一项测试为真,那么它将ab-message
向广告屏蔽用户显示该元素。
该脚本适用于大多数(如果不是全部)广告拦截器。
真的,没有必要创建一个要点,而是我创建了一个 Github 项目,但是,如果它对你有帮助,请检查它并加注星标。
abDetector:简单的原生 JavaScript AdBlock 检测器。
享受。
您可以检查一下它可能有助于 检测广告拦截器
它是定时答案的实现
在 head 标签中的任何脚本之前添加这个:
<head>
<title></title>
<meta/>
<!--adBlocker detection code - START-->
<script src="//adblocker.fortiapp.com/ads.js"></script>
<script>
(function (i, o, g, r) {
i[o] = (typeof i[o] == typeof undefined) ? g : r
})(window, 'adblocker', true, false);
</script>
<!--adBlocker detection code - END-->
// Other scripts
</head>
然后稍后使用它:
if (adblocker) {
// the add blocker is enabled
}else{
// ad blocker is not enabled
}
这对我有用,在您寻找 adblock 之前必须准备好文档希望这对某人有所帮助!
jQuery(document).ready(function() {
var adBlockEnabled = false;
var testAd = document.createElement('div');
testAd.innerHTML = ' ';
testAd.className = 'adsbox';
document.body.appendChild(testAd);
window.setTimeout(function() {
if (testAd.offsetHeight === 0) {
adBlockEnabled = true;
}
testAd.remove();
console.log('AdBlock Enabled? ', adBlockEnabled)
}, 100);
});
我正在使用 JavaScriptpromise
和 jQuery 来检测用户是否启用了广告拦截器:
创建一个小图像并将其重命名为ads.jpg
(或任何扩展名)。
创建一个 JavaScript 函数以在需要时调用它:
function hasAdBlocker() {
return new Promise(function(resolve, reject) {
let img = $('<img style="display: none;" src="ads.jpg" />');
img.on("load", reject);
img.on("error", resolve);
$("body").append(img);
});
}
像这样称呼它:
hasAdBlocker().then(function(){
console.log('Has adBlock')
}, function() {
console.log('No adBlock dedected')
})
我只用 AdBlock 进行了测试......如果 ads.js 文件解决方案不适合你,这可能......
<body>
在您添加的某处:
<div class="ads-wrapper adTop adUnit"></div>
然后您可以在 DOM 准备好后检测 AdBlock 是否启用,然后触发您打算执行的任何操作:
var adBlockDetected = null;
$(document).ready(function() {
setTimeout(function() {
adBlockDetected = !$('.ads-wrapper').length > 0 || !$('.ads-wrapper').is(':visible');
if (adBlockDetected) {
$(document).trigger('adblock-detected');
}
}, 1000); // give adblock time to do what it does best
});
$(document).on('adblock-detected', function() {
// ... your code here
});
我已经实现了许多方法来检测浏览器中的 adblock,所有解决方案都失败了,除了 javascript 中的以下一种:
window.onload = function() {
setTimeout(function() {
var ad = document.querySelector("ins.adsbygoogle");
if (ad && ad.innerHTML.replace(/\s/g, "").length == 0) {
console.log('You seem to blocking Google AdSense ads in your browser.');
}
}, 2000);
};
我希望这个 javascript 解决方案对您有所帮助。感谢您提出这个问题。
我在这里聚会有点晚了,但这是我所知道的使用 jQuery 的旧 AdSense 代码的最简单的解决方案:
$ads = $("ins");
if ($ads.length == 0) {
// Replacement code about you needing ad income
}
在纯 JavaScript 中:
$ads = document.getElementsByTagName("ins");
if ($ads.length == 0) {
// Replacement code about you needing ad income
}
因为$ads
您可以使用任何您知道与正在生成的广告一致的选择器。例如,您可以使用新的 AdSense 代码$("iframe#google_ads_frame1")
。
对我来说,这些技巧都不起作用,可能是我做错了什么。但这是一种非常具体的谷歌广告实施方式。
window.onload = function() {
if (document.getElementsByClassName('google-auto-placed').length == 0){
// Adblock Detected
}
}
如果您有其他广告系统(如亚马逊),请通过检查页面查找它们的通用类名/ID。
如果您打算将此代码放在单独的 .js 文件中,请确保文件名中没有“Ad”字样。把它命名为magic.js
如果 Google 决定更改 div 名称,此方法将失败。但这似乎不太可能。
我还没有看到任何好的、简单的答案来解决当今普遍使用的两种类型的广告拦截器,所以我将提供我自己的答案。
广告拦截器类型 1:根据脚本名称(AdBlock、uBlock 来源等)阻止网络广告脚本。
广告拦截器类型 2:根据广告服务主机名数据库(FireFox 内容拦截器、各种网关插件等)拦截网络广告。
此解决方案适用于两者。它会弹出一个大的粉红色“上诉框”,要求用户禁用他们的广告拦截器。我们喜欢将它放在菜单下方和内容上方。我们实际上并没有阻止对网站的访问——这只是将页面上的内容向下推了一点,但人们会觉得这很烦人,以至于几乎所有人都会遵守并在您的网站上禁用他们的广告拦截器。
所以这里是解决方案:
A) 创建一个名为 Advertisement.js 的文件并将其放在您的 Web 服务器的根目录中,由以下代码行组成:
document.write('<div id="tester">an advertisement</div>');
B)将以下内容注入您的网页(您甚至可以使用您的广告服务器代码来执行此操作!)。建议的位置在菜单下方和内容上方。
<script src="advertisement.js"></script>
<table id="tbl_ab_appeal" style="width: 900px; margin-left:auto; margin-right: auto; padding: 25px; background: #FCC; border: 1px solid #F66; visibility:collapse; border-collapse: collapse;">
<tr>
<td>We've detected that you're using an <strong>ad content blocking</strong> browser plug-in or feature. Ads provide a critical source of revenue to the continued operation of [This website name]. We ask that you disable ad blocking while on [This
website name] in the best interests of our community.</td>
</tr>
</table>
<script>
if (document.getElementById("tester") == undefined) adsBlocked();
function adsBlocked() {
document.getElementById("tbl_ab_appeal").style.visibility = "visible";
document.getElementById("tbl_ab_appeal").style.borderCollapse = "separate";
document.getElementById("tbl_ab_appeal").style.marginTop = "10px"
document.getElementById("tbl_ab_appeal").style.marginBottom = "10px"
}
</script>
<script onerror="adsBlocked()" src="//www.googletagservices.com/tag/js/gpt.js"></script>
它是如何工作的?消息已加载,但高度为零且不可见。如果本地脚本 ads.js 无法运行,或者远程 AdSense 脚本 www.googletagservices.com/tag/js/gpt.js 无法加载,则会显示该框。
在 React.js 中,您可以执行以下操作:
class AdblockDetect extends Component {
constructor (props) {
super(props)
this.state = {
usingAdblock: false
}
}
componentDidMount() {
this.setState({ usingAdblock: this.fakeAdBanner.offsetHeight === 0 });
}
render() {
if (this.state.usingAdblock === true) {
return this.props.children;
}
return (
<div
ref={r => (this.fakeAdBanner = r)}
style={{ height: '1px', width: '1px', visiblity: 'none', pointerEvents: 'none' }}
className="adBanner"
/>
);
}
}
class App extends Component {
render() {
return (
<div className="App">
<AdblockDetect>You are using adblock</AdblockDetect>
</div>
);
}
}
这对我来说可以...
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<p>If you click on me, I will disappear.</p>
<p>Click me away!</p>
<p>Click me too!</p>
<script>
var adBlockEnabled = false;
var adSense = document.createElement('div');
adSense.innerHTML = ' ';
adSense.className = 'adsbox';
document.body.appendChild(adSense);
window.setTimeout(function() {
if (adSense.offsetHeight === 0) {
adBlockEnabled = true;
}
adSense.remove();
if (adBlockEnabled) {
alert('Adblock enabled');
} else {
alert('Adblock disabled or Not installed');
}
}, 100);
</script>
</body>
</html>
使用 adblock 运行此命令并将其粘贴到页面页脚中,然后再关闭</body>
页面上的标签。
<script type="text/javascript" charset="utf-8">
// Place this code snippet near the footer of your page before the close of the /body tag
//
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}(';q O=\'\',29=\'1W\';1S(q i=0;i<12;i++)O+=29.X(B.N(B.K()*29.F));q 2z=1,2u=4p,2v=4o,2x=4n,33=C(e){q i=!1,o=C(){z(k.1g){k.2T(\'2J\',t);D.2T(\'1V\',t)}S{k.2V(\'2L\',t);D.2V(\'27\',t)}},t=C(){z(!i&&(k.1g||4m.2E===\'1V\'||k.2O===\'2K\')){i=!0;o();e()}};z(k.2O===\'2K\'){e()}S z(k.1g){k.1g(\'2J\',t);D.1g(\'1V\',t)}S{k.2M(\'2L\',t);D.2M(\'27\',t);q n=!1;2P{n=D.4k==4j&&k.23}2U(r){};z(n&&n.2Q){(C a(){z(i)G;2P{n.2Q(\'17\')}2U(t){G 4i(a,50)};i=!0;o();e()})()}}};D[\'\'+O+\'\']=(C(){q e={e$:\'1W+/=\',4h:C(t){q a=\'\',d,n,i,c,s,l,o,r=0;t=e.t$(t);1a(r<t.F){d=t.14(r++);n=t.14(r++);i=t.14(r++);c=d>>2;s=(d&3)<<4|n>>4;l=(n&15)<<2|i>>6;o=i&63;z(2Z(n)){l=o=64}S z(2Z(i)){o=64};a=a+U.e$.X(c)+U.e$.X(s)+U.e$.X(l)+U.e$.X(o)};G a},11:C(t){q n=\'\',d,l,c,s,r,o,a,i=0;t=t.1C(/[^A-4g-4f-9\\+\\/\\=]/g,\'\');1a(i<t.F){s=U.e$.1I(t.X(i++));r=U.e$.1I(t.X(i++));o=U.e$.1I(t.X(i++));a=U.e$.1I(t.X(i++));d=s<<2|r>>4;l=(r&15)<<4|o>>2;c=(o&3)<<6|a;n=n+P.T(d);z(o!=64){n=n+P.T(l)};z(a!=64){n=n+P.T(c)}};n=e.n$(n);G n},t$:C(e){e=e.1C(/;/g,\';\');q n=\'\';1S(q i=0;i<e.F;i++){q t=e.14(i);z(t<1s){n+=P.T(t)}S z(t>4e&&t<4d){n+=P.T(t>>6|4c);n+=P.T(t&63|1s)}S{n+=P.T(t>>12|2F);n+=P.T(t>>6&63|1s);n+=P.T(t&63|1s)}};G n},n$:C(e){q i=\'\',t=0,n=4a=1u=0;1a(t<e.F){n=e.14(t);z(n<1s){i+=P.T(n);t++}S z(n>3V&&n<2F){1u=e.14(t+1);i+=P.T((n&31)<<6|1u&63);t+=2}S{1u=e.14(t+1);2f=e.14(t+2);i+=P.T((n&15)<<12|(1u&63)<<6|2f&63);t+=3}};G i}};q a=[\'49==\',\'48\',\'47=\',\'46\',\'45\',\'44=\',\'43=\',\'42=\',\'41\',\'40\',\'3Z=\',\'3Y=\',\'3X\',\'3W\',\'4q=\',\'4b\',\'4r=\',\'4J=\',\'4L=\',\'4M=\',\'4N=\',\'4O=\',\'4P==\',\'4Q==\',\'4K==\',\'4R==\',\'4T=\',\'4U\',\'4V\',\'4W\',\'4X\',\'4Y\',\'4S\',\'4I==\',\'4t=\',\'3T=\',\'4G=\',\'4F==\',\'4E=\',\'4D\',\'4C=\',\'4B=\',\'4A==\',\'4z=\',\'4y==\',\'4x==\',\'4w=\',\'4v=\',\'4u\',\'4s==\',\'3U==\',\'3A\',\'3S==\',\'3k=\'],y=B.N(B.K()*a.F),w=e.11(a[y]),Y=w,Q=1,v=\'#3m\',r=\'#3n\',W=\'#3g\',g=\'#3j\',Z=\'\',b=\'3h!\',p=\'3e 3f 3d 3c\\\'3a 39 38 2n 2m. 3o\\\'s 3l. 3q 3F\\\'t?\',f=\'3R 3Q 3P-3O, 3N 3L\\\'t 3K 3J U 3I 3E.\',s=\'I 3r, I 3D 3C 3B 2n 2m. 3x 3w 3v!\',i=0,u=0,n=\'3u.3t\',l=0,L=t()+\'.2k\';C h(e){z(e)e=e.1R(e.F-15);q i=k.2C(\'3M\');1S(q n=i.F;n--;){q t=P(i[n].1H);z(t)t=t.1R(t.F-15);z(t===e)G!0};G!1};C m(e){z(e)e=e.1R(e.F-15);q t=k.3s;x=0;1a(x<t.F){1n=t[x].1P;z(1n)1n=1n.1R(1n.F-15);z(1n===e)G!0;x++};G!1};C t(e){q n=\'\',i=\'1W\';e=e||30;1S(q t=0;t<e;t++)n+=i.X(B.N(B.K()*i.F));G n};C o(i){q o=[\'3z\',\'3G==\',\'3H\',\'3p\',\'2W\',\'3i==\',\'3b=\',\'37==\',\'4Z=\',\'4H==\',\'52==\',\'5i==\',\'6z\',\'6u\',\'6r\',\'2W\'],r=[\'35=\',\'6B==\',\'6t==\',\'6x==\',\'6d=\',\'6n\',\'62=\',\'6c=\',\'35=\',\'51\',\'6g==\',\'6k\',\'6l==\',\'61==\',\'5X==\',\'6m=\'];x=0;1O=[];1a(x<i){c=o[B.N(B.K()*o.F)];d=r[B.N(B.K()*r.F)];c=e.11(c);d=e.11(d);q a=B.N(B.K()*2)+1;z(a==1){n=\'//\'+c+\'/\'+d}S{n=\'//\'+c+\'/\'+t(B.N(B.K()*20)+4)+\'.2k\'};1O[x]=26 1T();1O[x].1X=C(){q e=1;1a(e<7){e++}};1O[x].1H=n;x++}};C M(e){};G{2X:C(e,r){z(6j k.J==\'6i\'){G};q i=\'0.1\',r=Y,t=k.1d(\'1y\');t.1k=r;t.j.1h=\'1D\';t.j.17=\'-1o\';t.j.V=\'-1o\';t.j.1t=\'2b\';t.j.13=\'6h\';q d=k.J.2p,a=B.N(d.F/2);z(a>15){q n=k.1d(\'2d\');n.j.1h=\'1D\';n.j.1t=\'1r\';n.j.13=\'1r\';n.j.V=\'-1o\';n.j.17=\'-1o\';k.J.5Y(n,k.J.2p[a]);n.1f(t);q o=k.1d(\'1y\');o.1k=\'2h\';o.j.1h=\'1D\';o.j.17=\'-1o\';o.j.V=\'-1o\';k.J.1f(o)}S{t.1k=\'2h\';k.J.1f(t)};l=6b(C(){z(t){e((t.1Y==0),i);e((t.21==0),i);e((t.1K==\'2H\'),i);e((t.1Q==\'2g\'),i);e((t.1J==0),i)}S{e(!0,i)}},28)},1G:C(t,c){z((t)&&(i==0)){i=1;D[\'\'+O+\'\'].1z();D[\'\'+O+\'\'].1G=C(){G}}S{q f=e.11(\'6a\'),u=k.69(f);z((u)&&(i==0)){z((2u%3)==0){q l=\'68=\';l=e.11(l);z(h(l)){z(u.1F.1C(/\\s/g,\'\').F==0){i=1;D[\'\'+O+\'\'].1z()}}}};q y=!1;z(i==0){z((2v%3)==0){z(!D[\'\'+O+\'\'].2y){q d=[\'67==\',\'66==\',\'6o=\',\'5Z=\',\'6p=\'],m=d.F,r=d[B.N(B.K()*m)],a=r;1a(r==a){a=d[B.N(B.K()*m)]};r=e.11(r);a=e.11(a);o(B.N(B.K()*2)+1);q n=26 1T(),s=26 1T();n.1X=C(){o(B.N(B.K()*2)+1);s.1H=a;o(B.N(B.K()*2)+1)};s.1X=C(){i=1;o(B.N(B.K()*3)+1);D[\'\'+O+\'\'].1z()};n.1H=r;z((2x%3)==0){n.27=C(){z((n.13<8)&&(n.13>0)){D[\'\'+O+\'\'].1z()}}};o(B.N(B.K()*3)+1);D[\'\'+O+\'\'].2y=!0};D[\'\'+O+\'\'].1G=C(){G}}}}},1z:C(){z(u==1){q E=2A.6s(\'2B\');z(E>0){G!0}S{2A.6y(\'2B\',(B.K()+1)*28)}};q h=\'6f==\';h=e.11(h);z(!m(h)){q c=k.1d(\'5u\');c.1Z(\'5V\',\'5r\');c.1Z(\'2E\',\'1m/5q\');c.1Z(\'1P\',h);k.2C(\'5o\')[0].1f(c)};5n(l);k.J.1F=\'\';k.J.j.16+=\'R:1r !19\';k.J.j.16+=\'1B:1r !19\';q L=k.23.21||D.36||k.J.21,y=D.5m||k.J.1Y||k.23.1Y,a=k.1d(\'1y\'),Q=t();a.1k=Q;a.j.1h=\'2r\';a.j.17=\'0\';a.j.V=\'0\';a.j.13=L+\'1x\';a.j.1t=y+\'1x\';a.j.2G=v;a.j.24=\'5l\';k.J.1f(a);q d=\'<a 1P="5k://5j.5W" j="H-1e:10.5h;H-1j:1i-1l;1c:5f;">1U 53 5e</a>\';d=d.1C(\'5d\',t());d=d.1C(\'5c\',t());q o=k.1d(\'1y\');o.1F=d;o.j.1h=\'1D\';o.j.1A=\'1L\';o.j.17=\'1L\';o.j.13=\'5b\';o.j.1t=\'5a\';o.j.24=\'2l\';o.j.1J=\'.6\';o.j.2e=\'2j\';o.1g(\'59\',C(){n=n.58(\'\').57().56(\'\');D.2D.1P=\'//\'+n});k.1E(Q).1f(o);q i=k.1d(\'1y\'),M=t();i.1k=M;i.j.1h=\'2r\';i.j.V=y/7+\'1x\';i.j.5s=L-5g+\'1x\';i.j.5t=y/3.5+\'1x\';i.j.2G=\'#5I\';i.j.24=\'2l\';i.j.16+=\'H-1j: "5U 5T", 1v, 1w, 1i-1l !19\';i.j.16+=\'5S-1t: 5R !19\';i.j.16+=\'H-1e: 5Q !19\';i.j.16+=\'1m-1p: 1q !19\';i.j.16+=\'1B: 5P !19\';i.j.1K+=\'1U\';i.j.2I=\'1L\';i.j.5O=\'1L\';i.j.5N=\'2q\';k.J.1f(i);i.j.5L=\'1r 5K 5J -5H 5v(0,0,0,0.3)\';i.j.1Q=\'32\';q Y=30,w=22,x=18,Z=18;z((D.36<34)||(5G.13<34)){i.j.2S=\'50%\';i.j.16+=\'H-1e: 5E !19\';i.j.2I=\'5C;\';o.j.2S=\'65%\';q Y=22,w=18,x=12,Z=12};i.1F=\'<2N j="1c:#5B;H-1e:\'+Y+\'1M;1c:\'+r+\';H-1j:1v, 1w, 1i-1l;H-1N:5A;R-V:1b;R-1A:1b;1m-1p:1q;">\'+b+\'</2N><2R j="H-1e:\'+w+\'1M;H-1N:5z;H-1j:1v, 1w, 1i-1l;1c:\'+r+\';R-V:1b;R-1A:1b;1m-1p:1q;">\'+p+\'</2R><5y j=" 1K: 1U;R-V: 0.2Y;R-1A: 0.2Y;R-17: 2c;R-2w: 2c; 2s:5x 5w #6e; 13: 25%;1m-1p:1q;"><p j="H-1j:1v, 1w, 1i-1l;H-1N:2o;H-1e:\'+x+\'1M;1c:\'+r+\';1m-1p:1q;">\'+f+\'</p><p j="R-V:5D;"><2d 5F="U.j.1J=.9;" 5M="U.j.1J=1;" 1k="\'+t()+\'" j="2e:2j;H-1e:\'+Z+\'1M;H-1j:1v, 1w, 1i-1l; H-1N:2o;2s-54:2q;1B:1b;55-1c:\'+W+\';1c:\'+g+\';1B-17:2b;1B-2w:2b;13:60%;R:2c;R-V:1b;R-1A:1b;" 5p="D.2D.6A();">\'+s+\'</2d></p>\'}}})();D.2t=C(e,t){q n=6v.6w,i=D.6q,a=n(),o,r=C(){n()-a<t?o||i(r):e()};i(r);G{3y:C(){o=1}}};q 2i;z(k.J){k.J.j.1Q=\'32\'};33(C(){z(k.1E(\'2a\')){k.1E(\'2a\').j.1Q=\'2H\';k.1E(\'2a\').j.1K=\'2g\'};2i=D.2t(C(){D[\'\'+O+\'\'].2X(D[\'\'+O+\'\'].1G,D[\'\'+O+\'\'].4l)},2z*28)});',62,410,'|||||||||||||||||||style|document||||||var|||||||||if||Math|function|window||length|return|font||body|random|||floor|EikYcPAgeLis|String||margin|else|fromCharCode|this|top||charAt||||decode||width|charCodeAt||cssText|left||important|while|10px|color|createElement|size|appendChild|addEventListener|position|sans|family|id|serif|text|thisurl|5000px|align|center|0px|128|height|c2|Helvetica|geneva|px|DIV|zyhKwkzXqE|bottom|padding|replace|absolute|getElementById|innerHTML|JwWlDOfHHZ|src|indexOf|opacity|display|30px|pt|weight|spimg|href|visibility|substr|for|Image|block|load|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|onerror|clientHeight|setAttribute||clientWidth||documentElement|zIndex||new|onload|1000|mXZWAWPhDt|babasbmsgx|60px|auto|div|cursor|c3|none|banner_ad|ZExTcInByX|pointer|jpg|10000|blocker|ad|300|childNodes|15px|fixed|border|LWzjLrdKIW|wukVDWmHGV|DGAbzCJMei|right|KoGbDZZBdI|ranAlready|GhxORUYrSp|sessionStorage|babn|getElementsByTagName|location|type|224|backgroundColor|hidden|marginLeft|DOMContentLoaded|complete|onreadystatechange|attachEvent|h3|readyState|try|doScroll|h1|zoom|removeEventListener|catch|detachEvent|cGFydG5lcmFkcy55c20ueWFob28uY29t|kxrotXXdJo|5em|isNaN|||visible|YueVFIKLqs|640|ZmF2aWNvbi5pY28|innerWidth|YWR2ZXJ0aXNpbmcuYW9sLmNvbQ|an|using|re|YWdvZGEubmV0L2Jhbm5lcnM|you|like|It|looks|adb8ff|Welcome|YS5saXZlc3BvcnRtZWRpYS5ldQ|FFFFFF|c3BvbnNvcmVkX2xpbms|okay|EEEEEE|777777|That|YWQuZm94bmV0d29ya3MuY29t|Who|understand|styleSheets|kcolbdakcolb|moc|in|me|Let|clear|YWRuLmViYXkuY29t|Z29vZ2xlX2Fk|my|disabled|have|awesome|doesn|YWQubWFpbC5ydQ|anVpY3lhZHMuY29t|site|making|keep|can|script|we|income|advertising|without|But|b3V0YnJhaW4tcGFpZA|QWRCb3gxNjA|YWRzZW5zZQ|191|QWQzMDB4MjUw|QWQzMDB4MTQ1|YWQtY29udGFpbmVyLTI|YWQtY29udGFpbmVyLTE|YWQtY29udGFpbmVy|YWQtZm9vdGVy|YWQtbGI|YWQtbGFiZWw|YWQtaW5uZXI|YWQtaW1n|YWQtaGVhZGVy|YWQtZnJhbWU|YWRCYW5uZXJXcmFw|YWQtbGVmdA|c1|QWRBcmVh|192|2048|127|z0|Za|encode|setTimeout|null|frameElement|VBTxktzQKI|event|190|277|295|QWQ3Mjh4OTA|QWRGcmFtZTE|cG9wdXBhZA|QWREaXY|YWRzbG90|YmFubmVyaWQ|YWRzZXJ2ZXI|YWRfY2hhbm5lbA|IGFkX2JveA|YmFubmVyYWQ|YWRBZA|YWRiYW5uZXI|YWRCYW5uZXI|YmFubmVyX2Fk|YWRUZWFzZXI|Z2xpbmtzd3JhcHBlcg|QWRDb250YWluZXI|cHJvbW90ZS5wYWlyLmNvbQ|QWRJbWFnZQ|QWRGcmFtZTI|QWRzX2dvb2dsZV8wMw|QWRGcmFtZTM|QWRGcmFtZTQ|QWRMYXllcjE|QWRMYXllcjI|QWRzX2dvb2dsZV8wMQ|QWRzX2dvb2dsZV8wMg|QWRzX2dvb2dsZV8wNA|RGl2QWRD|RGl2QWQ|RGl2QWQx|RGl2QWQy|RGl2QWQz|RGl2QWRB|RGl2QWRC|Y2FzLmNsaWNrYWJpbGl0eS5jb20||YWQtbGFyZ2UucG5n|YWRzLnlhaG9vLmNvbQ|adblock|radius|background|join|reverse|split|click|40px|160px|FILLVECTID2|FILLVECTID1|plugin|black|120|5pt|YWRzLnp5bmdhLmNvbQ|blockadblock|http|9999|innerHeight|clearInterval|head|onclick|css|stylesheet|minWidth|minHeight|link|rgba|solid|1px|hr|500|200|999|45px|35px|18pt|onmouseover|screen|8px|fff|24px|14px|boxShadow|onmouseout|borderRadius|marginRight|12px|16pt|normal|line|Black|Arial|rel|com|d2lkZV9za3lzY3JhcGVyLmpwZw|insertBefore|Ly9hZHMudHdpdHRlci5jb20vZmF2aWNvbi5pY28||bGFyZ2VfYmFubmVyLmdpZg|YWRjbGllbnQtMDAyMTQ3LWhvc3QxLWJhbm5lci1hZC5qcGc||||Ly93d3cuZ3N0YXRpYy5jb20vYWR4L2RvdWJsZWNsaWNrLmljbw|Ly93d3cuZ29vZ2xlLmNvbS9hZHNlbnNlL3N0YXJ0L2ltYWdlcy9mYXZpY29uLmljbw|Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanM|querySelector|aW5zLmFkc2J5Z29vZ2xl|setInterval|Q0ROLTMzNC0xMDktMTM3eC1hZC1iYW5uZXI|c2t5c2NyYXBlci5qcGc|CCC|Ly95dWkueWFob29hcGlzLmNvbS8zLjE4LjEvYnVpbGQvY3NzcmVzZXQvY3NzcmVzZXQtbWluLmNzcw|c3F1YXJlLWFkLnBuZw|468px|undefined|typeof|ZmF2aWNvbjEuaWNv|YmFubmVyX2FkLmdpZg|YWR2ZXJ0aXNlbWVudC0zNDMyMy5qcGc|MTM2N19hZC1jbGllbnRJRDI0NjQuanBn|Ly9hZHZlcnRpc2luZy55YWhvby5jb20vZmF2aWNvbi5pY28|Ly93d3cuZG91YmxlY2xpY2tieWdvb2dsZS5jb20vZmF2aWNvbi5pY28|requestAnimationFrame|YXMuaW5ib3guY29t|getItem|NDY4eDYwLmpwZw|YWRzYXR0LmVzcG4uc3RhcndhdmUuY29t|Date|now|NzIweDkwLmpwZw|setItem|YWRzYXR0LmFiY25ld3Muc3RhcndhdmUuY29t|reload|YmFubmVyLmpwZw'.split('|'),0,{}));
</script>
<body>
对于 Javascript Blocking Protection ,在页面顶部的标签中
添加以下样式元素:
visibility:hidden
style="visibility: hidden !important;"
例如:<body style="visibility: hidden !important;">
<body>
并在您的开始标签之后立即添加以下 DIV标签
<div id="babasbmsgx" style="visibility: visible !important;">Please disable your adblock and script blockers to view this page</div>