检测YouTube是否被公司/ ISP阻止

时间:2008-11-13 01:24:28

标签: flex youtube

我们在网站上播放了YouTube视频,并想要检测他们是否可能因为(很可能)公司政策或其他原因而无法查看这些视频。

我们有两个网站:

1)Flex / Flash 2)HTML

我认为使用Flex我可以尝试下载http://youtube.com/crossdomain.xml,如果它是有效的XML,则假设该网站可用

但是使用HTML我不知道该怎么做。我甚至无法想到一个“好的黑客”。

5 个答案:

答案 0 :(得分:17)

我喜欢缺乏解决方案,但是,它会创建一个race condition。 这将起作用,不会产生种族冲突:

var image = new Image();
image.onload = function(){
// The user can access youtube
};
image.onerror = function(){
// The user can't access youtube
};
image.src = "http://youtube.com/favicon.ico";

答案 1 :(得分:14)

您可以使用javascript从youtube加载图片并检查其属性。图标很小,并且具有一致的网址 -

var image = new Image();
image.src = "http://youtube.com/favicon.ico";
if (image.height > 0) {
    // The user can access youtube
} else {
    // The user can't access youtube
}

我认为这比加载javascript要好一些,因为这不会尝试运行任何代码,虽然youtube可能会重命名他们的javascript文件或这些文件中的函数,但他们不太可能重命名他们的favicon。

答案 2 :(得分:8)

这应该有效。基本上,它加载youtube.com javascript文件,然后检查该文件中的函数是否存在。

<html>

<head>
    <script src="http://www.youtube.com/js/account.js"></script>
    <script>
        function has_you_tube()
        {
            if(typeof addVideosToQuicklist == 'function')
            {
                return true;
            }
            else
            {
                return false;
            }

        }
    </script>

</head>
<body>
    <script>alert( "has_youtube: " + has_you_tube() ); </script>
</body>


</html>

答案 3 :(得分:1)

我今天卡在这上面并尝试了favicon测试,但它并没有在IE中工作。我使用YouTube Player API Reference for iframe Embeds将youtube视频嵌入到我的网站中,所以我所做的是检查onYouTubeIFrameReady之前定义的播放器var,并在javascript调用上延迟。

<script> function YouTubeTester() {            
            if (player == undefined) {
                alert("youtube blocked");
            }
        }
</script>
<script>window.setTimeout("YouTubeTester()", 500);</script>

似乎适合我。我需要延迟才能让它在IE中运行。

答案 4 :(得分:0)

这对我有用......这也是我的第一篇文章,希望它也有所帮助。

<?php

$v = file_get_contents("https://www.youtube.com/iframe_api");

//Tie counts to a variable
$test = substr_count($v, 'loading');

if ($test > 0)

{ ?>
    <iframe>YOUTUBE VIDEO GOES HERE</iframe>

    <?php
}

else

{

echo "<br/> no connection";

}

?>