Pergunta bastante simples: criei um pequeno aplicativo que é basicamente apenas um favorito que fica na bandeja do sistema para que eu possa abrir sites / pastas / arquivos usados com frequência no mesmo lugar. Obter os ícones padrão do meu sistema para tipos de arquivo conhecidos não é terrivelmente complicado, mas não sei como obter o favicon de um site. (SO tem o ícone cinza-> pilha laranja na barra de endereço, por exemplo)
Alguém sabe como posso fazer isso?
Respostas:
Você vai querer resolver isso de algumas maneiras:
Procure
favicon.ico
na raiz do domíniowww.domain.com/favicon.ico
Procure uma
<link>
tag com orel="shortcut icon"
atributo<link rel="shortcut icon" href="https://stackoverflow.com/favicon.ico" />
Procure uma
<link>
tag com orel="icon"
atributo<link rel="icon" href="https://stackoverflow.com/favicon.png" />
Os dois últimos geralmente produzirão uma imagem de qualidade superior.
Apenas para cobrir todas as bases, existem arquivos de ícone específicos do dispositivo que podem produzir imagens de qualidade superior, uma vez que esses dispositivos geralmente têm ícones maiores no dispositivo do que um navegador precisaria:
<link rel="apple-touch-icon" href="images/touch.png" />
<link rel="apple-touch-icon-precomposed" href="images/touch.png" />
E para baixar o ícone sem se importar com o que ele é, você pode usar um utilitário como http://www.google.com/s2/favicons que fará todo o trabalho pesado:
fonte
google.com/s2/favicons
é um ícone com 16x16 é um ícone terrível, você sabe para onde tirar o ícone maior?Atualizado em 2020
Aqui estão três serviços que você pode usar de 2020 em diante
fonte
Você pode usar o Google S2 Converter.
http://www.google.com/s2/favicons?domain=google.com
Fonte: http://www.labnol.org/internet/get-favicon-image-of-websites-with-google/4404/
fonte
A primeira coisa a procurar é /favicon.ico na raiz do site; algo como WebClient.DownloadFile () deve servir. No entanto, você também pode definir o ícone nos metadados - para SO é:
e observe que ícones alternativos podem estar disponíveis; o "touch" tende a ser maior e com maior resolução, por exemplo:
então você deve analisar isso no HTML Agility Pack ou no XmlDocument (se xhtml) e usar WebClient.DownloadFile ()
Aqui está um código que usei para obter isso por meio do pacote de agilidade:
Observe que o ícone é deles, não seu.
fonte
É uma boa prática minimizar o número de solicitações que cada página precisa. Portanto, se você precisar de vários ícones, o yandex pode fazer um sprite de favicons em uma consulta. Aqui está um exemplo http://favicon.yandex.net/favicon/google.com/stackoverflow.com/yandex.net/
fonte
Você pode obter o URL do favicon no HTML do site.
Aqui está a tag favicon:
Você deve usar uma expressão regular aqui. Se nenhuma tag for encontrada, procure "favicon.ico" no diretório raiz do site. Se nada for encontrado, o site não possui um favicon.
fonte
Você pode fazer isso sem programação . Basta abrir o site, clicar com o botão direito e selecionar "ver fonte" para abrir o código HTML desse site. Em seguida, no editor de texto, pesquise "favicon" - ele o direcionará para algo parecido com
pegue a string
href
e anexe-a ao URL base do site (vamos supor que seja"http://WEBSITE/"
), para que pareçaque é o caminho absoluto para o favicon. Se não o encontrou desta forma, também pode estar na raiz, caso em que o URL está
http://WEBSITE/favicon.ico
.Pegue o URL que você determinou e insira-o no seguinte código:
Salve este código HTML localmente (por exemplo, em sua área de trabalho) como
GetFavicon.html
e clique duas vezes nele para abri-lo. Ele exibirá apenas um link chamado Favicon . Clique com o botão direito neste link e selecione "Salvar destino como ..." para salvar o Favicon em seu PC local - e pronto!fonte
fonte
Esta é uma resposta tardia, mas para completar: é muito difícil chegar perto de 90% da obtenção de todos os favicons.
Há algum tempo, escrevi um plugin para WordPress: http://wordpress.org/extend/plugins/wp-favicons/ que tenta se aproximar.
uma. começa olhando para repositórios de favicon, como favicons do google, getfavicons etc ...
b. se nenhum deles retornar um ícone (eu verifico isso combinando com o ícone padrão que eles retornam), eu começo tentando obter o ícone sozinho
c. isso envolve percorrer as páginas, mas também verificar redirecionamentos SEM autoredirecionamento, bem como percorrer 404 porque também no 404 pode haver um ícone. No final, isso significa que você terá que analisar também os redirecionamentos no cabeçalho html, bem como os redirecionamentos javascript para ficar mais perto de ser 100%
d. depois disso, faço algumas inspeções no arquivo de imagem física, porque também às vezes em alguns servidores (testei mais de 300.000) os arquivos são retornados com o tipo MIME incorreto etc.
O código ainda não é perfeito porque nos detalhes fica louco, você encontrará muitas situações estranhas: pessoas têm caminhos codificados incorretamente (img / favicon.ico onde img NÃO está na raiz), cabeçalhos duplicados na saída html, respostas de servidor diferentes de uma cabeça e corpo etc ...
o núcleo da parte de busca está aqui: http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-http.php para que você possa fazer a engenharia reversa, mas esteja ciente de que a validação da resposta deve realmente feito (verificando o tipo de arquivo da imagem, mímica etc.)
fonte
Descobri que o 'SHGetFileInfo' (marque 'www.pinvoke.net' para a assinatura) permite que você recupere um ícone pequeno ou grande, como se estivesse lidando com um arquivo / pasta / item Shell.
Jens;)
fonte
http://realfavicongenerator.net/favicon_checker?site=http://stackoverflow.com fornece uma análise de favicon informando quais favicons estão presentes e em que tamanho. Você pode processar as informações da página para ver qual é o favicon de melhor qualidade e anexar o nome do arquivo ao URL para obtê-lo.
fonte
Você pode usar Getfv.co :
Exemplo para esta página: http://g.etfv.co//programming/5119041/how-can-i-get-a-web-sites-favicon
Baixe o conteúdo e vamos lá!
Editar:
Getfv.co e fvicon.com parecem mortos. Se você quiser, encontrei uma alternativa não gratuita: grabicon.com .
fonte
Usando jquery
fonte
Em 2020, usando o serviço duckduckgo.com da CLI
Exemplo
fonte