2011-06-15 98 views
2

我写过一个网络应用程序,它使用侧面的广告横幅来支持免费帐户。问题是,由于广告被加载到自己的<div>中,所以在任何现代浏览器中进入开发人员/调试控制台都相对容易,并且可以使用CSS覆盖删除div或将广告大小调整为0px(用户可能会这样做在应用程序工作区中获得更多房地产)。为了防止这种情况发生,我正在考虑定期检查包含广告的div的属性(包括CSS样式)是否发生变化,以及是否重新加载页面。由于我依赖于某个绘图的画布元素,重新加载对用户来说会相当恼人,因为它会清除画布,所以除非广告被篡改,否则我不想这样做。检测用户篡改DOM

我见过一些跟踪DOM变化的类似问题,那里的人们建议使用突变事件。然而,根据这些答案,似乎并不是所有浏览器都支持这种支持(然后我再次看到的线索是2008年和2009年的,因此从那时起事情可能会发生变化)。

我正在考虑的另一种替代方法是在页面完成加载后,在广告的div的offsetWidth,offsetHeight,offsetTop,offsetLeft中进行读取,并且持续地将它们与当前值进行比较(没有太多可以做的事情如果你不能移动div,就会让div消失)。

你们有什么建议?

+1

如果你不能篡改DOM,Web开发将不会变得有趣。 – mrk 2011-06-15 03:55:31

+1

如果用户可能会这样做以获得更多房地产,您是否可以阻止(修复可用区域的宽度)来消除该原因? – 2011-06-15 04:05:19

+0

谢谢@Don,这就是我最终做的。如果广告在那里,我有几个div可以调整大小,所以即使用户删除了广告,也不会有任何好处,除非js代码被修改,或者用户修改了多个其他div,并且不会事后调整窗口大小。虽然其他人提出了非常有效的观点,但我不同意他们已经回答了这个问题。如果我StackOverflow让我接受评论作为解决方案,我会接受你的评论:) – 2011-06-15 19:03:57

回答

6

你永远不会停止对DOM检查员足够满意的人这样做。它甚至不值得猫和老鼠的游戏。 99.999%的用户如果意外地访问了DOM检查员,他们可能会打电话给技术支持。

+4

+1如果您可以用这种方式篡改DOM,您还可以操纵尝试检测操作的Javascript。 – deceze 2011-06-15 03:05:55

+1

+1你甚至不应该称之为'篡改' - 你为用户提供了DOM,他们可以在他们的客户端上做他们喜欢的事情。就像这些人说的 - 很少有用户甚至会认为删除广告是可能的。 – Beejamin 2011-06-15 03:12:29

+0

没错,但是调整DOM需要几秒钟(这是最外面的div之一),调整javascript实际上需要用户研究代码(对于广告来说这通常不值得付出努力) 。我明白,完全防止这种情况是不可能的,但我希望添加一个简单的检查来防止明显的漏洞利用。 – 2011-06-15 03:15:17

6

如果访问者使用带有Adblock的Firefox说,您的横幅永远不会出现在页面中,因此不会分派突变事件。您可以查看样式属性并重新加载页面,但不会显示广告。不断重新加载的页面会让用户恼火,所以他们会离开。

如果你确定,那就去做吧。否则,要意识到禁用广告的任何人无论如何都不会对此做出反应,所以有什么意义?

+0

感谢@RobG,我甚至没有想到Adblock,你说得对,突变事件在这种情况下是行不通的。至于禁用广告,重点不在于我希望他们点击它,关键是如果摆脱​​广告比他们的信用更容易让他们获得付费版本的我的应用程序没有动机卡信息。 – 2011-06-15 19:07:25