我在新闻聚合网络应用中使用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";
}
大部分时间(目前为止)都有效,但许多发布商(例如yahoo)使用“self!== top”代码的轻微变体,这使得preg_match无效。我想知道是否有任何通用/通用测试可以实现,以了解给定的URL是否会阻止iframe。
感谢