Jak Mogę uzyskać favicon witryny?

Proste pytanie: stworzyłem małą aplikację, która jest w zasadzie tylko ulubione, które znajduje się w moim zasobniku systemowym, dzięki czemu mogę otwierać często używane witryny / foldery/pliki z tego samego miejsca. Pobieranie domyślnych ikon z mojego systemu dla znanych typów plików nie jest strasznie skomplikowane, ale nie wiem, jak uzyskać favicon ze strony internetowej. (Tak jak na przykład ikona szarego->pomarańczowego stosu na pasku adresu)

Czy ktoś wie jak Mogę to zrobić?

Author: customcommander, 2011-02-25

15 answers

Będziesz chciał poradzić sobie z tym na kilka sposobów:

  1. Poszukaj favicon.ico w korzeniu domeny

    www.domain.com/favicon.ico

  2. Poszukaj znacznika <link> z atrybutem rel="shortcut icon"

    <link rel="shortcut icon" href="/favicon.ico" />

  3. Poszukaj znacznika <link> z atrybutem rel="icon"

    <link rel="icon" href="/favicon.png" />

Te dwa ostatnie zwykle dają obraz o wyższej jakości.


Aby pokryć wszystkie bazy, istnieją pliki ikon specyficzne dla urządzenia, które może dać obrazy wyższej jakości, ponieważ urządzenia te zwykle mają większe ikony na urządzeniu niż przeglądarka musiałaby:

<link rel="apple-touch-icon" href="images/touch.png" />

<link rel="apple-touch-icon-precomposed" href="images/touch.png" />


I aby pobrać ikonę bez dbania o to, co to jest ikona, możesz użyć narzędzia takiego jak http://www.google.com/s2/favicons który wykona wszystkie ciężkie podnoszenie:

var client = new System.Net.WebClient();

client.DownloadFile(
    @"http://www.google.com/s2/favicons?domain=stackoverflow.com",
    "stackoverflow.com.ico");
 252
Author: hunter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-23 11:07:53

Aktualizacja 2020

Oto trzy usługi, z których możesz korzystać w 2020 roku

<img height="16" width="16" src='https://icons.duckduckgo.com/ip3/www.google.com.ico' />

<img height="16" width="16" src='http://www.google.com/s2/favicons?domain=www.google.com' />

<img height="16" width="16" src='https://api.statvoo.com/favicon/?url=google.com' />
 23
Author: Blowsie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-03 15:30:53
 12
Author: raminjacobson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-19 01:24:11

Pierwszą rzeczą, której należy szukać, jest /favicon.ico w katalogu głównym witryny; coś w stylu WebClient.DownloadFile() powinno działać dobrze. Można jednak również ustawić ikonę w metadanych - tak więc jest to:

<link rel="shortcut icon"
   href="http://sstatic.net/stackoverflow/img/favicon.ico">

I zauważ, że alternatywne ikony mogą być dostępne; ta "dotykowa" ma tendencję do większej i wyższej rozdzielczości, na przykład:

<link rel="apple-touch-icon"
   href="http://sstatic.net/stackoverflow/img/apple-touch-icon.png">

Więc możesz to przeanalizować w HTML Agility Pack lub XmlDocument (jeśli xhtml) i użyć WebClient.DownloadFile ()

Oto kod, który użyłem do uzyskaj to za pomocą pakietu agility:

var favicon = "/favicon.ico";
var el=root.SelectSingleNode("/html/head/link[@rel='shortcut icon' and @href]");
if (el != null) favicon = el.Attributes["href"].Value;

Zauważ, że ikona należy do nich, nie do ciebie.

 7
Author: Marc Gravell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-25 15:31:18

To dobra praktyka, aby zminimalizować liczbę żądań, których potrzebuje każda strona. Więc jeśli potrzebujesz kilku ikon, yandex może wykonać sprite favicons w jednym zapytaniu. Oto przykład http://favicon.yandex.net/favicon/google.com/stackoverflow.com/yandex.net/

 6
Author: doroshko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-11 00:51:38

Możesz uzyskać adres URL favicon z HTML strony internetowej.

Oto element favicon:

<link rel="icon" type="image/png" href="/someimage.png" />

Powinieneś użyć tutaj wyrażenia regularnego. Jeśli nie znaleziono znacznika, poszukaj favicon.ico w katalogu głównym witryny. Jeśli nic nie znaleziono, witryna nie ma ikony favicon.

 5
Author: OOO ''MMM'',
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-25 15:12:19

Możesz to zrobićbez programowania . Po prostu otwórz stronę internetową, kliknij prawym przyciskiem myszy i wybierz "Wyświetl źródło" , aby otworzyć kod HTML tej strony. Następnie w edytorze tekstu wyszukaj "favicon" - skieruje cię do czegoś wyglądającego jak

<link rel="icon" href='/SOMERELATIVEPATH/favicon.ico' type="image/x-icon" />

Weź łańcuch w href i dołącz go do podstawowego adresu URL strony internetowej( Załóżmy, że jest to "http://WEBSITE/"), więc wygląda tak:

http://WEBSITE/SOMERELATIVEPATH/favicon.ico

Która jest absolutną ścieżką do faviconu. Jeśli nie znalazłeś w ten sposób może być również w katalogu głównym, w którym to przypadku adres URL to http://WEBSITE/favicon.ico.

Weź określony adres URL i wstaw go do następującego kodu:

<html>
  <head>
   <title>Capture Favicon</title>   
  </head>
  <body>
    <a href='http://WEBSITE/SOMERELATIVEPATH/favicon.ico' alt="Favicon"/>Favicon</a> 
  </body>
</html>

Zapisz ten kod HTML lokalnie (np. na pulpicie) jako GetFavicon.html a następnie kliknij dwukrotnie, aby go otworzyć. Wyświetli tylko link o nazwie Favicon . Kliknij prawym przyciskiem myszy ten link i wybierz " Zapisz cel jako..." aby zapisać Favicon na lokalnym komputerze-i gotowe!

 4
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-02 15:32:22
HttpWebRequest w = (HttpWebRequest)HttpWebRequest.Create("http://stackoverflow.com/favicon.ico");

w.AllowAutoRedirect = true;

HttpWebResponse r = (HttpWebResponse)w.GetResponse();

System.Drawing.Image ico;
using (Stream s = r.GetResponseStream())
{
    ico = System.Drawing.Image.FromStream(s);
}

ico.Save("favicon.ico");
 1
Author: pmcilreavy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-25 14:31:48

The SHGetFileInfo (Check pinvoke.net do podpisu) pozwala pobrać małą lub dużą ikonę, tak jak gdybyś miał do czynienia z plikiem/folderem/powłoką.

 1
Author: Jens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-25 19:28:40

Http://realfavicongenerator.net/favicon_checker?site=http://stackoverflow.com daje Ci analizę faviconów określającą, które favicony są obecne w jakiej wielkości. Możesz przetworzyć informacje o stronie, aby zobaczyć, która jest najlepsza jakość favicon, i dołączyć nazwę pliku do adresu URL, aby ją uzyskać.

 0
Author: robotik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-11 08:59:59

Możesz użyć Getfv.co :

Aby pobrać favicon można go hotlinkować na... http://g.etfv.co/[URL]

Przykład dla tej strony : http://g.etfv.co/https://stackoverflow.com/questions/5119041/how-can-i-get-a-web-sites-favicon

Pobierz zawartość i chodźmy !

Edit:

Getfv.co oraz fvicon.com wygląda na martwego. Jeśli chcesz, znalazłem alternatywę non free: grabicon.com .

 0
Author: aloisdg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:32

Używanie jquery

var favicon = $("link[rel='shortcut icon']").attr("href") ||
              $("link[rel='icon']").attr("href") || "";
 0
Author: V P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-11 22:00:42

W 2020 roku, przy użyciu duckduckgo.com serwis z CLI

curl -v https://icons.duckduckgo.com/ip2/<website>.ico > favicon.ico

Przykład

curl -v https://icons.duckduckgo.com/ip2/www.cdc.gov.ico > favicon.ico
 0
Author: Alex Nolasco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-15 03:19:19

Jest to późna odpowiedź, ale dla kompletności: trudno jest nawet zbliżyć się do pobrania 90% wszystkich faviconów.

Jakiś czas temu napisałem wtyczkę do WordPressa , która próbuje zbliżyć się do 100%.

Tak to działa:

  1. Zaczyna się od wyszukania istniejących repozytoriów favicon, takich jak Google favicons i GetFavicons.

  2. Jeśli żadna z nich nie zwróci ikony, wtyczka spróbuje uzyskać samą ikonę. Dotyczy to przemierzanie kilku stron w domenie.

  3. Wtyczka sprawdza następnie fizyczny plik obrazu, ponieważ na niektórych serwerach pliki są zwracane z nieprawidłowym typem mime.

Kod nadal nie jest doskonały, ponieważ w szczegółach znajdziesz wiele dziwnych sytuacji: ludzie mają błędnie zakodowane ścieżki, np. img/favicon.ico gdzie {[1] } nie jest w katalogu głównym, zduplikowane nagłówki w wyjściu HTML, różne odpowiedzi serwera z głowy i ciała itp.

The core of the pobieranie części znajduje się tutaj , więc można ją inżynierować wstecznie, ale należy pamiętać, że Walidacja odpowiedzi powinna być wykonana (sprawdzanie typu pliku obrazu, mime itp.).

 0
Author: edelwater,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-25 17:23:29

Czasami nie możemy uzyskać obrazu favicon z zamierzonym rozwiązaniem, ponieważ niektóre strony używają.png lub inne rozszerzenia obrazów. Oto rozwiązanie robocze.

  1. Otwórz swoją stronę za pomocą przeglądarki firefox .
  2. Kliknij prawym przyciskiem myszy na stronie i kliknij opcję "Wyświetl informacje o stronie" z listy.
  3. otworzy okno dialogowe i kliknie kartę"Media".
  4. na tej karcie zobaczysz wszystkie obrazy łącznie z faviconem.
  5. Wybierz favicon.obraz ico lub kliknij obrazy, aby zobaczyć, który obraz jest używany jako favicon. Niektóre strony używają .również obrazy png.
  6. następnie kliknij na "Zapisz jako" i powinieneś być gotowy do pracy.

Dzięki!

 0
Author: Mukesh Salaria,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-13 16:06:29