Detectar se o YouTube for bloqueado pela empresa / ISP
-
08-07-2019 - |
Pergunta
Temos vídeos do YouTube em um site e queremos detectar se é provável que eles não possam visualizá -los devido à política da empresa (principalmente provável) ou não.
Temos dois sites:
1) flex / flash 2) html
Eu acho que com flex, posso tentar baixar http://youtube.com/crossDomain.xml e se for válido XML assume que o site está disponível
Mas com o HTML, não sei como fazer isso. Não consigo nem pensar em um 'belo hack'.
Solução
Eu gosto da solução de Lacker, mas sim, cria um condição de corrida. Isso funcionará e não criará uma contenção de raça:
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";
Outras dicas
Você pode carregar uma imagem do YouTube usando o JavaScript e verificar suas propriedades. O favicon é pequeno e tem um URL consistente -
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
}
Eu acho que isso é um pouco melhor do que carregar o JavaScript, porque isso não tentará executar nenhum código e, embora o YouTube possa renomear seus arquivos JavaScript ou funções desses arquivos, é improvável que eles renomeem seu favicon.
Isso deve funcionar. Basicamente, ele carrega um arquivo javascript do youtube.com e verifica se existe uma função nesse arquivo.
<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>
Fiquei preso a isso hoje e tentei o teste Favicon, mas não estava funcionando no IE. Eu estava usando o Referência da API do Player do YouTube para incorporações IFRAME Para incorporar vídeos do YouTube no meu site, então o que fiz é realizar uma verificação no varador varejo definido pouco antes do Onyoutubeiframeady com um atraso na chamada JavaScript.
<script> function YouTubeTester() {
if (player == undefined) {
alert("youtube blocked");
}
}
</script>
<script>window.setTimeout("YouTubeTester()", 500);</script>
Parece funcionar para mim. Eu precisava do atraso para fazê -lo funcionar no IE.
Isso funcionou para mim ... também é meu primeiro post, espero que ajude alguém também.
<?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";
}
?>