浏览器广告拦截
我最近写了一篇文章,说明为什么选择不受广告拦截器无意阻止的文件名很重要 。 这些评论表明,广告拦截技术使许多网站所有者感到恼火。 如果他们无法获得收益,为什么还要生产优质内容?
无法检测到广告拦截器的存在。 使用了不同的实现技术,它们不一定嵌入到浏览器中。 广告拦截器的工作方式也不同:有些拦截器使用一长串广告客户域,而另一些则使用正则表达式来抑制匹配的URL。
Firefox的Adblock Plus插件是最受欢迎的阻止程序之一,使用正则表达式匹配。 但是,我们可以利用一种技术来利用URL检查,该技术可以阻止Adblock用户查看您的内容,除非他们禁用了该加载项。
您HTML页面应遵循以下示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Advert Blocker blocking</title>
<meta http-equiv="content-language" content="en"><meta name="language" content="en">
<style type="text/css">
#content { display: none; }
#blockermessage
{
font-weight: bold;
text-align: center;
padding: 4px;
color: #fff;
background-color: #c00;
}
</style>
<script type="text/javascript" src="/banner-advert.js"></script>
</head>
<body>
<div id="content">
<h1>Main content</h1>
<p>This will be hidden to people using advert blockers.</p>
</div>
<div id="blockermessage">
<p>Please switch of your advert blocker and enable JavaScript to view this page.</p>
</div>
</body>
</html>
说明:
- 主要内容应包含在外部元素中,例如
<div id="content">
。 - 您应该为使用广告拦截器的用户提供替代消息,如
<div id="blockermessage">
。 - 重要的是页面上的前两个CSS规则应为这些元素设置样式。 由于可以阻止外部CSS文件,因此建议您直接将其嵌入HTML中。 #content规则必须设置为
display: none
,而#blockermessage规则可以设置为大字体,粗体或您选择的任何样式。 - 最后,包含一个外部JavaScript文件。 应为其指定一个文件/文件夹名称,该名称将触发广告阻止规则,例如banner-advert.js。
banner-advert.js的代码:
// reveal content to those not using an advert blocker
if (document.styleSheets && document.styleSheets.length > 0) {
var ss = document.styleSheets[0];
var bRule = (ss.cssRules ? ss.cssRules : ss.rules);
if (bRule.length > 1) {
bRule[0].style.display = "block";
bRule[1].style.display = "none";
}
}
它以以下方式工作:
- 加载页面后,每个人的主要内容都会关闭,并且仅显示#blockermessage。
- 对于大多数人来说,banner-advert.js代码会立即执行。 这会更改嵌入式样式,因此#content变为可见,而#blockermessage被隐藏。 它发生在显示主要内容之前,因此用户不应看到任何差异。
- AdBlock将发现banner-advert.js并拒绝加载。 样式未修改,因此主要内容保持隐藏。
那应该使许多高级内容网站所有者满意。 但是-稍等- 我强烈建议您不要在您的网站上实现此功能! 存在许多技术问题,阻止阻止程序是徒劳的……请参阅为什么阻止广告阻止程序失败 。
另请参阅: 为什么文件命名比您想象的重要 。
浏览器广告拦截