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

Sim*_*ver 14 apache-flex youtube

我们在网站上有YouTube视频,并希望检测是否可能由于(很可能)公司政策或其他方式而无法查看这些视频.

我们有两个网站:

1)Flex/Flash 2)HTML

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

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

Seb*_*rez 19

我喜欢缺乏解决方案,但是,它会产生竞争条件.这将起作用,不会创造竞赛合同:

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";
Run Code Online (Sandbox Code Playgroud)

  • 与缺乏者的解决方案一样,如果阻止页面有一个图标,这将导致误报.你应该检查一下与youtube截然不同的东西. (3认同)

lac*_*ker 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
}
Run Code Online (Sandbox Code Playgroud)

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


Tri*_*ick 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>
Run Code Online (Sandbox Code Playgroud)

  • @Karl:这是一种在youtube被阻止*时测试案例的方法.当然,将通过将此行留出主机来测试未阻止的情况. (2认同)