간단한 질문 : 기본적으로 시스템 트레이에있는 즐겨 찾기에 불과한 작은 앱을 만들어 자주 사용하는 사이트 / 폴더 / 파일을 같은 위치에서 열 수 있습니다. 내 시스템에서 알려진 파일 유형에 대한 기본 아이콘을 가져 오는 것은 그리 복잡하지 않지만 웹 사이트에서 파비콘을 가져 오는 방법을 모릅니다. (예를 들어 주소 표시 줄에 회색-> 주황색 스택 아이콘이 있습니다)
내가 그것에 대해 어떻게 할 수 있는지 아는 사람이 있습니까?
간단한 질문 : 기본적으로 시스템 트레이에있는 즐겨 찾기에 불과한 작은 앱을 만들어 자주 사용하는 사이트 / 폴더 / 파일을 같은 위치에서 열 수 있습니다. 내 시스템에서 알려진 파일 유형에 대한 기본 아이콘을 가져 오는 것은 그리 복잡하지 않지만 웹 사이트에서 파비콘을 가져 오는 방법을 모릅니다. (예를 들어 주소 표시 줄에 회색-> 주황색 스택 아이콘이 있습니다)
내가 그것에 대해 어떻게 할 수 있는지 아는 사람이 있습니까?
답변:
이 문제를 몇 가지 방법으로 해결해야합니다.
favicon.ico
도메인의 루트를 찾으십시오.
www.domain.com/favicon.ico
속성이 있는 <link>
태그 찾기rel="shortcut icon"
<link rel="shortcut icon" href="https://stackoverflow.com/favicon.ico" />
속성이 있는 <link>
태그 찾기rel="icon"
<link rel="icon" href="https://stackoverflow.com/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");
google.com/s2/favicons
16x16의 아이콘입니다. 끔찍한 아이콘입니다. 더 큰 아이콘을 어디에서 가져갈 지 알고 있습니까?
업데이트 된 2020
2020 년부터 사용할 수있는 세 가지 서비스는 다음과 같습니다.
<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' />
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을 얻을 수 있습니다.
다음은 favicon 태그입니다.
<link rel="icon" type="image/png" href="/someimage.png" />
여기서 정규식을 사용해야합니다. 태그가 없으면 사이트 루트 디렉터리에서 "favicon.ico"를 찾습니다. 아무것도 발견되지 않으면 사이트에 파비콘이없는 것입니다.
프로그래밍없이 할 수 있습니다 . 웹 사이트를 열고 마우스 오른쪽 버튼을 클릭 한 다음 "소스보기" 를 선택 하여 해당 사이트의 HTML 코드를 엽니 다. 그런 다음 텍스트 편집기에서 "favicon"을 검색 하면 다음과 같은 항목으로 이동합니다.
<link rel="icon" href='/SOMERELATIVEPATH/favicon.ico' type="image/x-icon" />
문자열을 가져 와서 href
웹 사이트의 기본 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에 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");
이것은 늦은 답변이지만 완전성을 위해 모든 파비콘을 가져 오는 것의 90 %에 가까워지기는 매우 어렵습니다.
얼마 전에 WordPress 플러그인을 작성했습니다. http://wordpress.org/extend/plugins/wp-favicons/ 시도가 가까이하기.
ㅏ. Google favicons, getfavicons 등과 같은 favicon 저장소를 살펴 보는 것으로 시작합니다.
비. 그들 중 아무도 아이콘을 반환하지 않으면 (나는 그들이 반환하는 기본 아이콘과 일치하여 이것을 확인합니다) 나는 아이콘을 직접 얻으려고 시도합니다.
씨. 여기에는 페이지를 순회하는 것뿐만 아니라 자동 리디렉션이없는 리디렉션을 확인하고 404를 순회하는 것도 포함됩니다. 404에도 아이콘이있을 수 있기 때문입니다. 결국 그것은 100 %에 가까워 지려면 자바 스크립트 리디렉션뿐만 아니라 html 헤더의 리디렉션도 구문 분석해야 함을 의미합니다.
디. 그 후 물리적 이미지 파일에 대한 검사를 수행합니다. 때로는 일부 서버 (내가 300.000+ 테스트)에서 잘못된 MIME 유형 등으로 파일이 반환되기 때문입니다.
코드는 여전히 완벽하지 않습니다. 세부 사항에서 미친 듯이 많은 이상한 상황을 발견 할 수 있습니다. 사람들이 잘못 코딩 된 경로 (img / favicon.ico, img가 루트에없는 경우), html 출력의 중복 헤더, 다른 서버 응답 머리와 몸 등에서 ...
가져 오는 부분의 핵심은 http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-http.php 이므로 리버스 엔지니어링 할 수 있지만 응답의 유효성을 검사해야합니다. 정말로 완료됩니다 (이미지 파일 유형, MIME 등 확인).
http://realfavicongenerator.net/favicon_checker?site=http://stackoverflow.com 은 어떤 파비콘이 어떤 크기로 존재하는지 나타내는 파비콘 분석을 제공합니다. 페이지 정보를 처리하여 어떤 파비콘이 최상의 품질인지 확인하고 URL에 파일 이름을 추가하여 가져올 수 있습니다.
Getfv.co 를 사용할 수 있습니다 .
파비콘을 검색하려면 다음에서 핫 링크 할 수 있습니다. http://g.etfv.co/[URL]
이 페이지의 예 : http://g.etfv.co//programming/5119041/how-can-i-get-a-web-sites-favicon
콘텐츠를 다운로드하고 가자!
편집하다 :
Getfv.co와 fvicon.com은 죽은 것처럼 보입니다. 원한다면 무료가 아닌 대안을 찾았습니다 : grabicon.com .
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