Php 自动检测iframe阻塞

Php 自动检测iframe阻塞,php,iframe,Php,Iframe,我在我的新闻聚合web应用程序中使用iFrame。虽然我总是小心地为出版商提供信用和链接,但我也尊重那些选择阻止iFrame的人(通过不实施偷偷摸摸的变通办法)。我的问题是,考虑到所讨论的外部页面的URL,如何自动检测iFrame是否会被阻止。到目前为止,我正在使用以下代码: //get external html $p = file_get_contents($this->scrape_ready_url); //check for blo

我在我的新闻聚合web应用程序中使用iFrame。虽然我总是小心地为出版商提供信用和链接,但我也尊重那些选择阻止iFrame的人(通过不实施偷偷摸摸的变通办法)。我的问题是,考虑到所讨论的外部页面的URL,如何自动检测iFrame是否会被阻止。到目前为止,我正在使用以下代码:

        //get external html
        $p = file_get_contents($this->scrape_ready_url);
        //check for blocker
        $pattern1 = "/window\.self.{1,10}window\.top/";
        $s1 = preg_match($pattern1, $p);
        //check for blocker2
        $pattern2 = "/window\.top.{1,10}window\.self/";
        $s2 = preg_match($pattern2, $p);
        //condition response
        if ($s1 === 1 || $s2 === 1) {
            $this->frame = "blocked";
        } else {
            $this->frame = "not_blocked";
        }
这在大多数情况下都是有效的(到目前为止),但许多出版商,比如说,使用了“self!==top”代码的细微变化,这使得preg_match不起作用。我想知道是否有任何通用/通用的测试,我可以实现,以了解是否一个给定的URL将阻止一个iframe与否


谢谢

这是一个用javascript进行客户端检测的选项吗?根据我的研究,客户端dom解析外部文件似乎是不可能的。也就是说,我可以使用PHP(或iframe)加载html,然后使用JS进行解析。如果你有客户端解决方案,我想知道。我做了一些客户端检测测试。我希望能够分析iframe内容,或者至少分析其长度,以查看是否加载了有效的内容,但我很快就遇到了跨域问题。但是,您可以通过对标头进行额外检查来改进服务器端检测。检查是否存在标题
X-Frame-Options
,如果其值为
DENY
SAMEORIGIN
良好调用,请忘记该选项。现在就开始实现。有时即使第三方URL允许嵌入iframe,iframe也会被阻止。您可能认为可以检测到客户端。