programing

웹 사이트의 파비콘은 어떻게 구할 수 있습니까?

nasanasas 2020. 8. 26. 07:57
반응형

웹 사이트의 파비콘은 어떻게 구할 수 있습니까?


간단한 질문 : 기본적으로 시스템 트레이에있는 즐겨 찾기에 불과한 작은 앱을 만들어 자주 사용하는 사이트 / 폴더 / 파일을 같은 위치에서 열 수 있습니다. 내 시스템에서 알려진 파일 유형에 대한 기본 아이콘을 가져 오는 것은 그리 복잡하지 않지만 웹 사이트에서 파비콘을 가져 오는 방법을 모릅니다. (예를 들어 주소 표시 줄에 회색-> 주황색 스택 아이콘이 있습니다)

내가 그것에 대해 어떻게 할 수 있는지 아는 사람이 있습니까?


이 문제를 몇 가지 방법으로 해결해야합니다.

  1. favicon.ico도메인의 루트를 찾으십시오.

    www.domain.com/favicon.ico

  2. 속성이 있는 <link>태그 찾기rel="shortcut icon"

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

  3. 속성이 있는 <link>태그 찾기rel="icon"

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

후자의 두 가지는 일반적으로 더 높은 품질의 이미지를 생성합니다.


이러한 장치는 일반적으로 브라우저가 필요로하는 것보다 더 큰 아이콘을 장치에 가지고 있기 때문에 모든 기본을 커버하기 위해 더 높은 품질의 이미지를 생성 할 수있는 장치 별 아이콘 파일이 있습니다.

<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");

도움이 되었기를 바랍니다.


여기에 두 가지 옵션이 있습니다. 100 개 이상의 URL을 테스트하고 각 옵션에 따라 다른 결과를 얻었습니다. 이 솔루션은 C #이 아니지만 C #이 필요하지 않을 수 있습니다.

<img height="16" width="16" src='http://grabicon.com/edocuments.co.uk' />

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

Google S2 변환기를 사용할 수 있습니다.

http://www.google.com/s2/favicons?domain=google.com

출처 : http://www.labnol.org/internet/get-favicon-image-of-websites-with-google/4404/


가장 먼저 찾아야 할 것은 사이트 루트의 /favicon.ico입니다. WebClient.DownloadFile ()과 같은 것이 잘 작동합니다. 그러나 메타 데이터에서 아이콘을 설정할 수도 있습니다.

<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;

아이콘은 귀하의 것이 아니라 그들의 것입니다.


각 페이지에 필요한 요청 수를 최소화하는 것이 좋습니다. 따라서 여러 아이콘이 필요한 경우 yandex는 하나의 쿼리에서 파비콘 스프라이트를 수행 할 수 있습니다. 다음은 http://favicon.yandex.net/favicon/google.com/stackoverflow.com/yandex.net/ 의 예입니다.


웹 사이트의 HTML에서 파비콘 URL을 얻을 수 있습니다.

Here is the favicon tag:

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

You should use a regular expression here. If no tag found, look for "favicon.ico" in the site root directory. If nothing found, the site does not have a favicon.


        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");

You can do it without programming. Just open the web site, right-click and select "view source" to open the HTML code of that site. Then in the text editor search for "favicon" - it will direct you to something looking like

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

take the string in href and append it to the web site's base URL (let's assume it is "http://WEBSITE/"), so it looks like

http://WEBSITE/SOMERELATIVEPATH/favicon.ico

which is the absolute path to the favicon. If you didn't find it this way, it can be as well in the root in which case the URL is http://WEBSITE/favicon.ico.

Take the URL you determined and insert it into the following code:

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

Save this HTML code locally (e.g. on your desktop) as GetFavicon.html and then double-click on it to open it. It will display only a link named Favicon. Right-click on this link and select "Save target as..." to save the Favicon on your local PC - and you're done!


This is a late answer, but for completeness: it is pretty difficult to get even close to 90% of fetching all favicons.

A while ago I wrote a WordPress plugin: http://wordpress.org/extend/plugins/wp-favicons/ which attempts to get closer.

a. it starts by looking at favicon repositories such as google favicons, getfavicons etc...

b. if none of them return an icon (i check this by matching with the default icon they return) i start by attempting to get the icon myself

c. this involves traversing the pages but also checking redirects with NO autoredirect as well as traversing 404's because also on 404's an icon could be present. In the end it means that you will have to parse also redirects in the html header as well as javascript redirects to get closer to being 100%

d. after that i do some inspections on the physical image file, because also sometimes on some servers (i tested 300.000+) files get returned with the incorrect mime type etc..

The code is still not perfect because in the details it gets crazy, you will find many weird situations: people have wrongly coded paths (img/favicon.ico where img is NOT in the root), duplicate headers in html output, different server responses from a head and body etc...

the core of the fetching part is here: http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-http.php so you can reverse engineer it but be aware that validating the response should really be done (checking image filetype, mime etc..)


I've found that the 'SHGetFileInfo' (Check 'www.pinvoke.net' for the signature) lets you retrieve a small or large icon, just as if you were dealing with a file/folder/Shell item.

Jens ;)


http://realfavicongenerator.net/favicon_checker?site=http://stackoverflow.com gives you favicon analysis stating which favicons are present in what size. You can process the page information to see which is the best quality favicon, and append it's filename to the URL to get it.


You can use Getfv.co :

To retrieve a favicon you can hotlink it at... http://g.etfv.co/[URL]

Example for this page : http://g.etfv.co/https://stackoverflow.com/questions/5119041/how-can-i-get-a-web-sites-favicon

Download content and let's go !

Edit :

Getfv.co and fvicon.com look dead. If you want I found a non free alternative : grabicon.com.


Using jquery

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

참고URL : https://stackoverflow.com/questions/5119041/how-can-i-get-a-web-sites-favicon

반응형