过滤掉广告系统的机器人和蜘蛛。封锁走得太远了

时间:2017-06-06 14:15:36

标签: javascript web-crawler bots

我们有一个内部广告系统,并且经常与机器人和蜘蛛搏斗。显然,我们希望获得尽可能接近100%的有效展示次数,并且我有一个我尝试过的特定广告区域。

此广告区域仅显示在网站的1个页面上,因此我将该网页的Google Analytics网页浏览量与该广告区域的展示次数进行比较,并尽量让它们尽可能接近。

基本保护包括一个已知的机器人/蜘蛛列表,使用javascript为广告提供服务,以及一个自动收集新刮刀/机器人的蜜罐。

这使广告投放占网页浏览量的130-150%。这意味着,机器人会触发展示次数,但不会触发网页浏览量。

然后我开始只在鼠标移动时加载广告,并且递送降低到40-60%的页面浏览量。

现在这只是桌面版,没有手机版。

我没想到现在这么低的成就是什么?没有那么多人关闭JS,或没有老鼠浏览。

我实际上认为我几乎不会打断印象,认为大多数机器人会模拟鼠标移动,而不是我会将它们放得这么低。

有没有人有任何想法?

使用JS SNIPPET编辑

adShow = 0;
document.onmousemove = function(){
    if (adShow == 0) {
            var leaderboard = CODE_FOR_AD;
            var adLeaderboard = document.querySelector('.adspace-leaderboard#adspace');
            adLeaderboard.innerHTML = leaderboard;
            adShow = 1;             
    }
}

1 个答案:

答案 0 :(得分:0)

当您对此答案发表评论时(正如我所料),您将JS片段放在开始body - 标记之后,因此在实际的HTML元素之前(如果您将此片段放在{{{ 1}}页面的部分)。 很有可能有人在加载页面时移动鼠标,因此mousemove事件可能会在HTML元素出现之前执行,因此广告空间永远不会被实际加载。

您可以通过将代码段放在head结束标记之前,或者将代码包装在</body>onDomReady事件中来轻松解决此问题。最后两个将分别在加载所有DOM之后或甚至在加载所有资源(图像等)之后执行代码。在你的情况下onLoad就足够了。

像这样:

onDomReady