如何阻止javascript重定向页面?

如何阻止javascript重定向页面?,javascript,ads,Javascript,Ads,我们运营着一些流行的网站,当页面加载时,我们在将移动用户重定向到其他网站和应用商店的广告方面遇到了问题。有没有办法阻止javascript更改url 我有一些想法,但还没有成功: 使用beforeunload可以停止从页面中定向,但我需要通过单击某个内容来告诉用户是否打算离开 使用window.MutationObserver监视DOM,但我不确定这是否可以用于监视对window.location的更改 有人有办法吗 更新 我尝试了下面的建议,将“sandbox”属性添加到保存广告的ifra

我们运营着一些流行的网站,当页面加载时,我们在将移动用户重定向到其他网站和应用商店的广告方面遇到了问题。有没有办法阻止javascript更改url

我有一些想法,但还没有成功:

  • 使用beforeunload可以停止从页面中定向,但我需要通过单击某个内容来告诉用户是否打算离开

  • 使用window.MutationObserver监视DOM,但我不确定这是否可以用于监视对window.location的更改

有人有办法吗

更新

我尝试了下面的建议,将“sandbox”属性添加到保存广告的iframe中。在我的测试页面上,它确实阻止了我的页面运行重定向,但在我将其激活时,它没有停止广告重定向!所以我猜他们正在用另一种方法重定向页面,该方法通过沙箱块。有人知道他们是怎么做到的吗

example iframe:
<iframe sandbox="allow-forms allow-pointer-lock allow-scripts" ..

example iframe html (redirect):
window.top.location.href = "example.com";
示例iframe:

如果广告位于iFrame中,则将
沙盒
属性添加到iFrame标记中。根据W3,它将防止以下情况

  • 将内容视为来自唯一来源
  • 提交整版表格
  • 块脚本执行
  • 禁用API
  • 阻止链接指向目标 其他浏览上下文
  • 阻止内容浏览其顶级浏览上下文
  • 阻止自动触发的功能(例如自动播放视频或自动对焦窗体控件)

注意-这是HTML5的一项功能,在较旧的浏览器中不起作用

当使用标准javascript标记时,最简单的解决方案是将移动标记楼层增加到~$0.45以上(不需要超过$0.55)

在大多数情况下,我们看到移动重定向的尺寸大多为300x250,但在728x90上也看到了,尤其是在移动设备上显示时(因为728x90更适合桌面,移动设备上对该尺寸的需求极低,这意味着糟糕的广告会以更低的价格取胜)

如果您使用的是prebid.js、其他标题竞价或多竞价标签,在大多数情况下,您将能够在将单位代码附加到页面之前以编程方式检查广告有效负载


这提供了一个很好的机会,可以通过正则表达式/搜索ad有效负载字符串来查找设置window.location的代码,并使开发人员能够在检测到时采取特定的操作(例如绕过坏的ad,而是显示可信的残留解决方案或房屋广告)。

我知道这并不能回答您的问题,但你真的应该向你的广告服务部门报告,或者放弃它们。事实上,我同意@Nick的观点,你真的应该和提供这些广告的人谈谈。当你愤怒地使用JavaScript对抗你网站上允许的广告时,你正在打一场失败的战争。我们使用了十多个广告交流,并试图告诉他们所有。显然,这是一个全行业的问题,每个人都在经历。我们也找不到一种方法来记录这些信息,以确定它是谁。@ChrisR。这将是艰难的。您可以尝试在preventDefault()中使用beforeunload,但我猜您在不同的浏览器中会取得不同的成功。@NickDelaney,我正在寻找任何至少可以减少这种情况发生的人数的解决方案。或者至少有一种方法可以记录它发生的时间,以便我们可以报告它。我忘记了沙盒属性。我将为此创建一个测试页。但是如果我们允许广告的脚本执行,情况会不会一样呢?或者,如果我们这样做了“”,但排除了“允许顶部导航”,那么这可能会奏效吗?我在我们网站上包含广告的每个iframe上都实现了这个(sandbox=“allow forms allow pointer lock allow scripts”)。我设置了一个测试页面,该页面阻止javascript运行(window.top.location.href=“)。但它并没有阻止广告中的重定向!我在手机上浏览了20分钟,然后收到了一个移动重定向。他们是如何通过具有沙盒功能的iframe的?这是在iphone 6上的safari上。@ChrisR。尝试从沙盒中删除允许脚本。我相信是脚本创建了重定向。我们添加了沙盒归因于2天前我们所有的iFrame,但我们仍然收到移动重定向的报告,我自己也收到了一个。还有其他想法吗?