首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测iframe (跨域)内部的点击?Aka防止点击欺诈

问如何检测iframe (跨域)内部的点击?Aka防止点击欺诈
EN

Stack Overflow用户
提问于 2015-03-30 10:01:58
回答 5查看 18.5K关注 0票数 8

我收到了我的广告系统提供商关于点击欺诈的警告。没有更多的信息,他们所推荐的只是“为点击广告太快的用户隐藏广告”。我写了一段JS脚本,它在单击时将所有带有广告的DIVs隐藏N秒(使用cookie),但这个解决方案不起作用,因为“内部”内容(带有广告)是由JS脚本生成的,该脚本调用并呈现来自外部服务器的内容(正如您在广告系统中所期望的那样)。因此,当考虑到跨域安全性时,它有点像是第22条军规。如何检测由外部JS和iframe呈现的DIV (本地定义的)中的点击?

示例:

代码语言:javascript
复制
<div class="ad-class"> <!-- locally defined div -->
   <div id="my-id"> </div> <!-- identifies my ad in the provider's system -->
   <script>
      var foo = blah // declares the ad dimensions and stuff
      //  and renders the contextual ad in #my-id DIV
   </script>
</div>

如果都是本地的,解决方案将很容易,因为内部div将继承父类("ad- class ")。如果是跨域,则此参数无效。有什么建议吗,伙计们?

EN

回答 5

Stack Overflow用户

发布于 2017-02-22 01:05:17

Luizgrs启发了我这个解决方案:

​

代码语言:javascript
复制
var clickIframe = window.setInterval(checkFocus, 100);
var i = 0;

function checkFocus() {
  if(document.activeElement == document.getElementById("ifr")) {
  	console.log("clicked "+(i++));
  	window.focus();
   }
}
代码语言:javascript
复制
<!DOCTYPE html>
<h2>Onclick event on iframe</h2>
<iframe src="https://www.brokenbrowser.com/" id="ifr"></iframe>

​

该函数检测iframe是否具有焦点,如果有,则用户单击到iframe。然后,我们将焦点返回到主窗口,该窗口允许我们查找用户是否再次单击。

这个技巧对我在2步iframe click-click上的POC很有用。了解用户第一次点击iframe的时间,可以让我重新组织我的不同层,以保持完美的错觉。

票数 9
EN

Stack Overflow用户

发布于 2019-11-09 08:19:16

@Luizgrs指出的方法非常准确,但我确实使用了一种不同的方法来检测点击事件:

代码语言:javascript
复制
var iframeMouseOver = false;
    $("YOUR_CONTAINER_ID")
        .off("mouseover.iframe").on("mouseover.iframe", function() {
            iframeMouseOver = true;
        })
        .off("mouseout.iframe").on("mouseout.iframe", function() {
            iframeMouseOver = false;
        });

    $(window).off("blur.iframe").on("blur.iframe", function() {
        if(iframeMouseOver){
            $j("#os_top").click();
        }
    });

上面的代码在桌面上工作得很棒,如果你想添加移动支持,你只需要使用touch events、touchstart和touchend事件来模拟移动鼠标悬停。

Source

票数 1
EN

Stack Overflow用户

发布于 2015-03-31 03:08:10

不久前我找到了this plugin for WordPress。显然,它做了我需要的事情--只是想知道这个家伙是如何工作的,它确实计算了Adsense iframe上的点击量。我必须仔细看看,虽然我不是一个PHP程序员。我主要用Python编程,需要一些Django的解决方案。如果任何人可以轻松地阅读代码,我将不胜感激。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29337304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档