Webサイトのファビコンを取得するにはどうすればよいですか?


115

簡単な質問:基本的にお気に入りの小さなアプリをシステムトレイに置いて、よく使用するサイト/フォルダー/ファイルを同じ場所から開くことができるようにしています。既知のファイルタイプのシステムからデフォルトのアイコンを取得することはそれほど複雑ではありませんが、ウェブサイトからファビコンを取得する方法がわかりません。(たとえば、SOはアドレスバーに灰色からオレンジのスタックアイコンを持っています)

誰か私がそれについてどうやって行くのか知っていますか?


このページの読み込み/解析を自動化するのがどれほど簡単か(または可能か)はわかりませんが、Favicon-Checkerがすべて揃っているようです。少なくとも、参照/チェックとして使用できます。
Kevin Fegan

Statvoo Favicon APIを使用するだけで、非常にすばやく簡単に実行できます。
AO_

ファビコンキットを使用すると、16ピクセルよりはるかに大きいサイズのファビコンを入手して埋め込むことができます。(開示:私は著者です)
AndreasPizsa

回答:


234

これにはいくつかの方法で取り組む必要があります。

  1. favicon.icoドメインのルートでを探します

    www.domain.com/favicon.ico

  2. 属性を持つ<link>タグを探しrel="shortcut icon"ます

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

  3. 属性を持つ<link>タグを探しrel="icon"ます

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

後者の2つは通常、より高品質の画像を生成します。


すべてのベースをカバーするために、デバイス固有のアイコンファイルがあります。これらのデバイスには通常、ブラウザに必要なアイコンよりも大きなアイコンが含まれているため、高品質の画像が生成される可能性があります。

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

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


そして、アイコンを気にせずにアイコンをダウンロードするには、重い作業をすべて行うhttp://www.google.com/s2/faviconsなどのユーティリティを使用できます。

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

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

1
GetFavIconはまだ機能しますか?あなたの例を実行すると、400エラーが発生します
Julien

17
グーグルは今、同様のサービスを持っているように見えます:google.com/s2/favicons
ハンター

20
:誰もがGoogleに代わるものを望んでいるならば、DuckDuckGoは別の解決策があるicons.duckduckgo.com/ip2/www.stackoverflow.com.ico
ホセSerodio

1
@hunter google.com/s2/favicons16x16のアイコンです。ひどいアイコンです。大きなアイコンをどこで撮るか知っていますか?
nideba

1
@JoseSerodio-まあ...それは私が最初に試みたものですが、私がチェックしていたドメインでは、正方形の内側の円の中に右向きの矢印(より大きい)の「薄暗い/鈍い」画像が表示されました。このように見えましたが、「domain.com.ico」のスペルが正しいことを確認しました。さて、インターネットの素晴らしさによって、それは正しく機能しています...図を実行してください=)そう、ネバーマインド。
Kevin Fegan

18

2020年更新

2020年以降に利用できる3つのサービスは次のとおりです

<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は、月額$ 9から始まる有料サービスになりました
2016

1
別のもの:favicon.allesedv.com <img width = "144" height = "144" src = "// f3.allesedv.com/144/www.stackoverflow.com" />
Martin Seitl

このサービスは機能しなくなりました。api.statvoo.com/favicon/?url=stackoverflow.comを使用できます。私はそれを数年間使用しており、決して失望させることはありません。
AO_

ありがとう@AO_、イムは、実際にこれらの日duckduckgo使用して、アイブ氏は、私の答えに更新
Blowsie

1
@saintvixalienサーバーが強打されていたので、APIキーで初期化しない人のためにこれが最近変更されたと思います;)APIキーでプライマリサービスを使用し、ラッパーなしで直接応答を取得します。私は、APIキーなしでテストを行なったし、あなたが言ったように、それは、Googleのサービスにリダイレクトする...
AO_


6

最初に探すのは、サイトルートの/favicon.icoです。WebClient.DownloadFile()のようなものはうまくいくはずです。ただし、メタデータにアイコンを設定することもできます。SOの場合は次のようになります。

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

また、別のアイコンが使用できる場合があることに注意してください。「タッチ」の方が大きく、高解像度になる傾向があります。次に例を示します。

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

そのため、HTML Agility PackまたはXmlDocument(xhtmlの場合)でそれを解析し、WebClient.DownloadFile()を使用します。

これは、アジリティパックを介してこれを取得するために使用したコードです。

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

アイコンはあなたのものではなく、彼らのものであることに注意してください。


1
マルク、ありがとう。例に感謝します。画像については、変更したり、ショートカットのラベルの横にあるコンテキストメニューのアイコン以外に使用したりするつもりはありません。
Steven Evers、2011


3

YoはWebサイトのHTMLからファビコンURLを取得できます。

以下は、faviconタグです。

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

ここでは正規表現を使用する必要があります。タグが見つからない場合は、サイトのルートディレクトリで「favicon.ico」を探します。何も見つからない場合、サイトにはファビコンがありません。


2

プログラミングせずにそれ行うことができます。Webサイトを開き、右クリックして[ ソースの表示 ]を選択し、そのサイトのHTMLコードを開きます。次に、テキストエディターで「ファビコン」を検索します。次のようなものが表示されます。

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

文字列を受け取り、hrefそれをWebサイトのベースURLに追加します("http://WEBSITE/"そうであると仮定しましょう)。

http://WEBSITE/SOMERELATIVEPATH/favicon.ico

これはファビコンへの絶対パスです。この方法で見つからなかった場合は、ルートにも存在する可能性があります。この場合、URLはhttp://WEBSITE/favicon.icoです。

決定したURLを取得して、次のコードに挿入します。

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

このHTMLコードをローカル(デスクトップなど)に保存GetFavicon.htmlし、ダブルクリックして開きます。Faviconという名前のリンクのみが表示されます。このリンクを右クリックし、「対象をファイルに保存...」を選択して、ファビコンをローカルPCに保存します。これで完了です。


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

これは遅い答えですが、完全を期すために、すべてのファビコンを取得することの90%にさえ近づけることはかなり困難です。

:前ながら、私はWordPressのプラグインを書いたhttp://wordpress.org/extend/plugins/wp-favicons/試みが近づくために。

a。それはグーグルファビコン、ゲットファビコンなどのファビコンリポジトリを見ることから始まります...

b。それらのどれもアイコンを返さない場合(私は、それらが返すデフォルトのアイコンと照合してこれを確認します)私は自分でアイコンを取得しようとすることから始めます

c。これには、ページのトラバースが含まれますが、自動リダイレクトなしでリダイレクトをチェックすることや、404をトラバースすることも含まれます。これは、404にもアイコンが存在する可能性があるためです。結局のところ、100%に近づくには、htmlヘッダーのリダイレクトとJavaScriptリダイレクトも解析する必要があるということです。

d。その後、物理イメージファイルの検査を行います。これは、一部のサーバー(300.000以上をテストしたもの)でも、誤ったMIMEタイプなどが返される場合があるためです。

詳細が狂っているので、コードはまだ完璧ではありません。多くの奇妙な状況が見つかります。人々は誤ってコード化されたパス(img / favicon.ico、imgがルートにない)、html出力のヘッダーの重複、異なるサーバー応答頭や体などから...

フェッチ部分のコアはここにあります:http : //plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-http.phpリバースエンジニアリングすることができますが、応答を検証する必要があることに注意してください実際に行われます(画像のファイルタイプ、mimeなどを確認します)。


1

'SHGetFileInfo'(署名については 'www.pinvoke.net'を確認)を使用すると、ファイル/フォルダー/シェルアイテムを扱っている場合と同じように、小さいアイコンまたは大きいアイコンを取得できます。

イェンス;)



0

Getfv.coを使用できます。

ファビコンを取得するには、http: //g.etfv.co/ [URL ]でホットリンクできます。

このページの例:http : //g.etfv.co/https : //stackoverflow.com/questions/5119041/how-can-i-get-a-web-sites-favicon

コンテンツをダウンロードして行きましょう!

編集:

Getfv.coとfvicon.comは死んでいるように見えます。必要に応じて、無料ではない代替手段を見つけました:grabicon.com


1
リンクデッド、エラー:見つかりません
tttony

@tttony確かに。fvicon.comも死んでいるように見えます。有料コンテンツでコメントを編集します。機能している無料のリンクを見つけたら、共有してください!
aloisdgがcodidact.comに移動2016年

0

jqueryの使用

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

0

2020年、CLIからduckduckgo.comのサービスを使用する

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

curl -v https://icons.duckduckgo.com/ip2/www.cdc.gov.ico > favicon.ico
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.