Obtenha o favicon do site com JS
-
20-09-2019 - |
Pergunta
Gostaria de saber se é possível obter o favicon de um site por um URL com JavaScript
.
Por exemplo, eu tenho um URL http://www.bbc.co.uk/
e eu gostaria de obter o caminho para o favicon descrito em <link rel="icon" .../>
meta tag - http://www.bbc.co.uk/favicon.ico
.
Eu tenho muitos URLs, para que não carreguem todas as páginas e pesquisem link
Tag, eu acho.
Alguma ideia ?
Solução
Você poderia usar o YQL para isso
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D"http://bbc.co.uk/"and%20xpath%3D"/html/head/link[@rel%3D'icon']%20|%20/html/head/link[@rel%3D'ICON']%20|%20/html/head/link[@rel%3D'shortcut%20icon']%20|%20/html/head/link[@rel%3D'SHORTCUT%20ICON']"&format=json&callback=grab
Esta consulta usada por Exibir FEED FAVICONS GREASENKEY SCRIPT.
Você pode escrever consultas no console YQL, mas é necessário fazer login (btw, usando consultas não):
http://developer.yahoo.com/yql/console/#h=select%20*%20from%20html%20where%20url%3D%22http%3A//bbc.co.uk/%22and%20xpath%3D%22/html/head/link%5B@rel%3D%27icon%27%5D%20%7C%20/html/head/link%5B@rel%3D%27ICON%27%5D%20%7C%20/html/head/link%5B@rel%3D%27shortcut%20icon%27%5D%20%7C%20/html/head/link%5B@rel%3D%27SHORTCUT%20ICON%27%5D%22
É melhor que http://www.google.com/s2/favicons?domain=www.domain.com
, no caso de Favicon existir, mas não localizado em domain.com/favicon.ico
Outras dicas
Aqui estão duas opções de trabalho, testei mais de 100 URLs e obtive resultados diferentes que cada opção. Observe que esta solução não é JS
, mas JS
pode não ser necessário.
<!-- Free -->
<img height="16" width="16" src='http://www.google.com/s2/favicons?domain=www.edocuments.co.uk' />
<!-- Paid -->
<img height="16" width="16" src='http://grabicon.com/edocuments.co.uk' />
De repente, encontrei algo chamado Google Shared Stuff
Isso retorna a imagem com o Favicon do site pelo HostName:
http://www.google.com/s2/favicons?domain=www.domain.com
Mas o site da BBC, ele retorna Favicon um pouco pequeno. Comparar:
http://www.google.com/s2/favicons?domain=www.bbc.co.uk
http://www.bbc.co.uk/favicon.ico
Após 30.000 a 40.000 testes, notei que você realmente encontra muitas situações diferentes contra.
O ponto de partida é claro que apenas para olhar para a etiqueta relacionada e buscar isso, mas ao longo do caminho, você encontrará mais e mais situações que terá que cobrir.
Caso alguém veja este tópico e tenta se aproximar de 100% de perfeição, enviei meu código (PHP) aqui: https://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-http.php. Isso faz parte de um plugin (GPL) WordPress que recupera os favoritos, mais ou menos a pedido na época, fora das limitações do Google padrão (como mencionado acima). O código encontra uma quantia substancialmente mais ícones que o código do Google. Mas também inclui o Google e outras pessoas como provedores de imagens para atingir mais iterações na tentativa de recuperar o ícone.
Ao ler o código, provavelmente verá algumas situações que encontrará por exemplo, URIs de dados base64, páginas redirecionando para 404 páginas ou redirecionando um gazilhão de vezes, recuperando códigos de status HTTP estranhos e precisando verificar todos os possíveis código de retorno HTTP para validação, o ícones que têm um tipo mímico errado, tags de atualização do lado do cliente, ícones na pasta raiz e nenhum no código HTML, etc ... etc ... etc ...
Se você subir um diretório, encontrará outras classes que então são mentiras para armazenar os ícones reais contra o URL deles (e é claro que você precisará descobrir quais "ramificações" usam o mesmo favicon e que não, e descobrirá se eles pertencem ao mesmo "proprietário" ou são peças realmente diferentes, mas no mesmo domínio.
Isenção de responsabilidade: eu mesmo construí este serviço, mas você pode tentar http://grabicon.com. É uma API muito simples para os favoritos que lida com redimensionamento e reformatação em tempo real. Ele também usa muito cache proativo para velocidade. Como a maioria dos outros serviços como este, você pode inserir isso diretamente no seu HTML e funciona muito bem. Ainda não tenho documentação on -line, mas aqui estão alguns exemplos usando o destino da web favorito de todos:
Obtenha o ícone no formato PNG:
http://grabicon.com/icon?domain=microsoft.com
Redimensione para 64 pixels Square:
http://grabicon.com/icon?domain=microsoft.com&size=64
Isso caça o ícone usando os vários métodos que as pessoas podem implementá -los e usa a versão de maior resolução disponível, já que os arquivos Favicon.ico realmente contêm um coleção de ícones. Ele usa essa versão para redimensionar à sua preferência, a menos que uma correspondência perfeita já esteja disponível.
Deixe -me saber o que vocês pensam e que outros recursos você pode gostar!
ATUALIZAR:
Grabicon está agora de volta à operação e não vai a lugar nenhum. Foi originalmente construído para um cliente que mais tarde decidiu não apoiá -lo. Mas agora está sob meus cuidados diretos, com velocidade muito melhor e capacidade de redimensionamento.