Bir web sitesinin favicon'unu nasıl edinebilirim?


115

Yeterince basit soru: Sık kullanılan siteleri / klasörleri / dosyaları aynı yerden açabilmem için temelde sistem tepsisinde bulunan favorilerden oluşan küçük bir uygulama oluşturdum. Bilinen dosya türleri için sistemimden varsayılan simgeleri almak çok karmaşık değil, ancak favicon'u bir web sitesinden nasıl alacağımı bilmiyorum. (Örneğin, adres çubuğunda gri-> turuncu yığın simgesi vardır)

Bunu nasıl yapacağımı bilen var mı?


1
Bu sayfanın yüklenmesini / ayrıştırılmasını otomatikleştirmenin ne kadar kolay (veya mümkün) olduğundan emin değilim, ancak her şeye sahip gibi görünüyor: Favicon-Checker . En azından bir referans / kontrol olarak kullanabilirsiniz.
Kevin Fegan

Statvoo Favicon API'yi kullanabilirsiniz , bu oldukça hızlı ve acısız olacaktır.
AO_

Favicon Kit , eğer mevcutsa, 16 pikselden çok daha büyük boyutlarda normal resimler gibi faviconları almanızı ve yerleştirmenizi sağlar . (Açıklama: Yazar benim)
AndreasPizsa

Yanıtlar:


235

Bunu birkaç şekilde ele almak isteyeceksiniz:

  1. favicon.icoEtki alanının kökünde arayın

    www.domain.com/favicon.ico

  2. Özniteliğe <link>sahip bir etiketi arayınrel="shortcut icon"

    <link rel="shortcut icon" href="https://stackoverflow.com/favicon.ico" />

  3. Özniteliğe <link>sahip bir etiketi arayınrel="icon"

    <link rel="icon" href="https://stackoverflow.com/favicon.png" />

Son ikisi genellikle daha yüksek kaliteli bir görüntü sağlar.


Sadece tüm temelleri kapsamak için, daha yüksek kaliteli görüntüler verebilecek cihaza özel simge dosyaları vardır, çünkü bu cihazlar cihazda genellikle bir tarayıcının ihtiyaç duyduğundan daha büyük simgelere sahiptir:

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

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


Simgeyi, simgenin ne olduğuna bakmadan indirmek için, tüm ağır işleri yapacak http://www.google.com/s2/favicons gibi bir yardımcı program kullanabilirsiniz :

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

client.DownloadFile(
    @"http://www.google.com/s2/favicons?domain=stackoverflow.com",
    "stackoverflow.com.ico");

1
GetFavIcon hala çalışıyor mu? Örneğinizi çalıştırdığımda 400 hatası alıyorum
Julien

17
Google'ın şu anda benzer bir hizmeti var gibi görünüyor: google.com/s2/favicons?domain_url=stackoverflow.com
hunter

20
Google'a alternatif isteyen biri varsa DuckDuckGo'nun
Jose Serodio

1
@hunter google.com/s2/favicons16x16 ile bir ikon, korkunç bir ikon, daha büyük ikonu nereye götüreceğinizi biliyor musunuz?
nideba

1
@JoseSerodio - Şey ... denediğim ilk şey buydu, ancak kontrol ettiğim alan adı için, bir karenin içindeki daire içinde sağa dönük bir ok (bundan büyük) "sönük / donuk" bir resim aldım . Şöyle görünüyordu , ancak "domain.com.ico" nun doğru yazıldığından emin olmak için kontrol ettim. Şimdi, internetin harikalarına göre, doğru çalışıyor ... gidin şekil =) öyleyse Nevermind.
Kevin Fegan

19

2020 güncellendi

İşte 2020'den itibaren kullanabileceğiniz üç hizmet

<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' />

4
grabicon.com artık aylık 9 $ 'dan başlayan ücretli hizmet
2016

1
Bir diğeri: favicon.allesedv.com <img width = "144" height = "144" src = "// f3.allesedv.com/144/www.stackoverflow.com" />
Martin Seitl

Bu hizmet artık çalışmıyorsa, api.statvoo.com/favicon/?url=stackoverflow.com adresini kullanabilirsiniz . Birkaç yıldır kullandım ve beni asla hayal kırıklığına uğratmadı.
AO_

Teşekkürler @AO_, aslında bu günlerde duckduckgo kullanıyorum, cevabımı güncelledim
Blowsie

1
@saintvixalien Sanırım bu son zamanlarda bir API anahtarı ile başlatmayan insanlar için değişti, çünkü sunucular güçleniyordu;) Birincil hizmeti bir API anahtarıyla kullanıyorum ve doğrudan paketleyici olmadan yanıt alıyorum. API anahtarı olmadan test yaptım ve sizin de söylediğiniz gibi Google'ın hizmetine yönlendiriyor ..
AO_


6

İlk bakılması gereken şey site kökünde /favicon.ico'dur; WebClient.DownloadFile () gibi bir şey iyi yapmalı. Bununla birlikte, simgeyi meta verilerde de ayarlayabilirsiniz - SO için bu:

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

ve alternatif simgelerin mevcut olabileceğini unutmayın; "dokunma" daha büyük ve daha yüksek çözünürlük olma eğilimindedir, örneğin:

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

yani bunu HTML Çeviklik Paketinde veya XmlDocument'te (xhtml ise) ayrıştırır ve WebClient.DownloadFile () kullanırsınız.

Bunu çeviklik paketi aracılığıyla elde etmek için kullandığım bazı kodlar:

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

Simgenin sizin değil, onların olduğunu unutmayın.


1
Teşekkürler Marc. Örnek için minnettarım. Resimleri yazdım, onları değiştirmeyi veya kısayol etiketinin yanındaki bağlam menüsündeki simgelerden başka bir şey için kullanmayı düşünmüyorum.
Steven Evers


3

Favicon URL'sini web sitesinin HTML'sinden alabilirsiniz.

İşte favicon etiketi:

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

Burada normal bir ifade kullanmalısınız. Etiket bulunamazsa, site kök dizininde "favicon.ico" arayın. Hiçbir şey bulunamazsa, sitenin favicon'u yoktur.


2

Programlama yapmadan yapabilirsiniz . Web sitesini açın, sağ tıklayın ve o sitenin HTML kodunu açmak için "kaynağı görüntüle" yi seçin . Ardından metin düzenleyicide "favicon" araması - sizi şuna benzeyen bir şeye yönlendirecektir

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

dizeyi alın ve hrefweb sitesinin temel URL'sine ekleyin (öyle olduğunu varsayalım "http://WEBSITE/"), yani

http://WEBSITE/SOMERELATIVEPATH/favicon.ico

favicon'a giden mutlak yol budur. Bu şekilde bulamadıysanız, kökte de olabilir, bu durumda URL'dir http://WEBSITE/favicon.ico.

Belirlediğiniz URL'yi alın ve aşağıdaki koda ekleyin:

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

Bu HTML kodunu yerel olarak (örn. Masaüstünüzde) kaydedin GetFavicon.htmlve ardından açmak için üzerine çift tıklayın. Yalnızca Favicon adlı bir bağlantı gösterecek . Favicon'u yerel PC'nize kaydetmek için bu bağlantıya sağ tıklayın ve "Hedefi farklı kaydet ..." seçeneğini seçin - işte bitirdiniz!


1
        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

Bu geç bir cevap, ancak bütünlük açısından: tüm faviconları getirmenin% 90'ına yaklaşmak bile oldukça zor.

Bir süre önce bir WordPress eklentisi yazdım: http://wordpress.org/extend/plugins/wp-favicons/ yaklaşmaya çalışan.

a. google favicon, getfavicon vb. favicon depolarına bakarak başlar ...

b. hiçbiri bir simge döndürmezse (bunu döndürdükleri varsayılan simgeyle eşleştirerek kontrol ederim) simgeyi kendim almaya çalışarak başlarım

c. bu, sayfaların üzerinden geçmeyi, aynı zamanda NO otomatik yeniden yönlendirme ile yönlendirmeleri kontrol etmeyi ve 404'leri geçmeyi de içerir çünkü 404'lerde de bir simge mevcut olabilir. Sonunda,% 100 olmaya yaklaşmak için javascript yönlendirmelerinin yanı sıra html başlığındaki yönlendirmeleri de ayrıştırmanız gerekeceği anlamına gelir.

d. Bundan sonra fiziksel görüntü dosyası üzerinde bazı incelemeler yapıyorum, çünkü bazen bazı sunucularda (300.000'den fazla test ettim) dosyalar yanlış mime türü ile geri dönüyor vb.

Kod hala mükemmel değil çünkü ayrıntılarda çılgınlaşıyor, birçok garip durumla karşılaşacaksınız: insanlar yanlış kodlanmış yollar (img'nin kökte OLMADIĞI img / favicon.ico), html çıktısında yinelenen başlıklar, farklı sunucu yanıtları baş ve vücuttan vs ...

getirme kısmının özü burada: http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-http.php, böylece onu tersine çevirebilirsiniz, ancak yanıtı doğrulamanın gerçekten yapılmalı (görüntü dosya türü, mime vb. kontrol ediliyor)


1

"SHGetFileInfo" (İmza için "www.pinvoke.net" i kontrol edin), bir dosya / klasör / Kabuk öğesiyle uğraşıyormuşsunuz gibi küçük veya büyük bir simgeyi almanıza izin verdiğini buldum.

Jens;)



0

Getfv.co'yu kullanabilirsiniz :

Bir favicon almak için şu adresten hotlink yapabilirsiniz ... http://g.etfv.co/[URL]

Bu sayfa için örnek: http://g.etfv.co//programming/5119041/how-can-i-get-a-web-sites-favicon

İçeriği indirin ve gidelim!

Düzenle :

Getfv.co ve fvicon.com ölü görünüyor. İsterseniz ücretsiz olmayan bir alternatif buldum: grabicon.com .


1
Bağlantı öldü, Hata: Bulunamadı
tttony

@tttony Gerçekten. fvicon.com da ölü görünüyor. Yorumumu ücretli içerikle düzenleyeceğim. Çalışan ücretsiz bir bağlantı bulursanız, lütfen paylaşın!
aloisdg codidact.com'a taşınıyor

0

Jquery kullanma

var favicon = $("link[rel='shortcut icon']").attr("href") ||
              $("link[rel='icon']").attr("href") || "";

0

2020'de duckduckgo.com'un CLI'den hizmetini kullanarak

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

Misal

curl -v https://icons.duckduckgo.com/ip2/www.cdc.gov.ico > favicon.ico
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.