Como buscar favicons

Um favicon (abreviação de "ícone de favorito") é um pequeno ícone que aparece na barra de endereço do navegador. Os favicons normalmente são usados para identificar e diferenciar sites. Este artigo descreve como recuperar o favicon de um site em uma extensão do Manifest V3.

Como acessar o favicon de um site

Para recuperar o ícone de um site, você precisa criar o seguinte URL:

chrome-extension://EXTENSION_ID/_favicon/?pageUrl=EXAMPLE_URL&size=FAV_SIZE 
EXTENSION_ID
O ID da sua extensão.
EXAMPLE_URL
É o URL do site do favicon.
FAV_SIZE
O tamanho do ícone. O tamanho mais comum é 16 x 16 pixels.

As etapas a seguir descrevem como construir esse URL em uma extensão do Chrome:

Etapa 1: atualizar o manifesto

Primeiro, é necessário solicitar a permissão "favicon" no manifesto.

{   "name": "Favicon API in a popup",   "manifest_version": 3,   ...   "permissions": ["favicon"],   ... } 

Além disso, ao buscar favicons em scripts de conteúdo, a pasta "_favicon/*" precisa ser declarada como um recurso acessível na Web. Exemplo:

{   "name": "Favicon API in content scripts",   "manifest_version": 3,   "content_scripts": [     {       "matches": ["<all_urls>"],       "js": ["content.js"]     }   ],   "permissions": ["favicon"],   "web_accessible_resources": [     {       "resources": ["_favicon/*"],       "matches": ["<all_urls>"],       "extension_ids": ["*"]     }   ]   ... } 

Etapa 2: criar o URL

A função a seguir usa runtime.getURL() para criar um URL totalmente qualificado que aponta para a pasta "_favicon/". Em seguida, ele retorna uma nova string que representa o URL com vários parâmetros de consulta. Por fim, a extensão anexa a imagem ao corpo.

function faviconURL(u) {   const url = new URL(chrome.runtime.getURL("/_favicon/"));   url.searchParams.set("pageUrl", u);   url.searchParams.set("size", "32");   return url.toString(); }  const img = document.createElement('img'); img.src = faviconURL("https://www.google.com")  document.body.appendChild(img); 

Este exemplo é um URL de favicon de 32 pixels www.google.com que inclui um ID de extensão aleatório:

chrome-extension://eghkbfdcoeikaepkldhfgphlaiojonpc/_favicon/?pageUrl=https%3A%2F%2Fwww.google.com&size=32 

Exemplos de extensões

Há dois exemplos de favicon no repositório chrome-extension-samples: