如何獲取不同網站的favicon默認圖標


參考文章:

1、利用公共api提取任意網站favicon.ico圖標

如何讀取favicon
根據設置favicon的方式,就有2種讀取favicon的方法:
 
A、默認直接讀取網站根目錄的favicon.ico文件。
B、如果不存在根目錄下的favicon.ico文件,就讀取頁面里favicon的聲明。
相比之下,獲取網站根目錄下的favicon.ico文件是最簡單快捷的,但如果網站根目錄下沒有該文件,就需要使用后台程序讀取網頁的源代碼,非常的麻煩。
 
 
為了克服獲取favicon的麻煩,應運而生了一些獲取favicon的公共API,如:
 
dnspod:http://statics.dnspod.cn/proxy_favicon/_/favicon?domain=url網址【特別推薦】
google:http://www.google.com/s2/favicons?domain=域名
getFavicon:http://www.getfavicon.org/?url=url地址
g.etfv.co:http://g.etfv.co/url地址
對網絡速度而言,dnspod是國內的,快速並且穩定。谷歌的穩定性值得信賴,但因為時常在牆外,而不得不放棄。第3個getFavicon是早期獲取favicon的網站,目前已經game over了。第4個也是國外的,也是經常在某些地區無法正常訪問。第1和第2個勝出一籌。
 
對於傳遞參數而言,dnspod和谷歌都是傳參域名,第3和第4個是傳參url。第3和第4個勝出一籌。
 
總體而言,4個都打成了平手。
 
如此境遇下,我開發了一款獲取網站favicon的公共API,只需要在傳入網址即可獲取圖片,目前服務器設置在香港,無國界的訪問,可以獲取任何網址的favicon。並且,圖片具有緩存30天的期限,第2次獲取同一個域名(含多級域名)的favicon會更加快速。使用方法也很簡單,如:
 
獲取百度的favicon
 
http://*/?url=http://www.baidu.com
 
獲取谷歌的favicon
 
http://*/?url=http://www.google.com
 
獲取facebook的favicon
 
http://*/?url=http://facebook.com
 
獲取github的favicon
 
http://*/?url=http://github.com
因流量以及濫用關系,現已經跳轉到dnspod服務器的favicon獲取方式,請使用該API的朋友盡快遷徙,該API將於今年年底徹底關閉。請使用http://statics.dnspod.cn/proxy_favicon/_/favicon?domain=網站地址 來獲取該網站的favicon。
 

2、使用PHP獲取網站Favicon的方法

最近做一個Tab需要在網站名旁邊顯示網站的Favicon以提高顯示效果,如圖:

icetab開始做的時候想到的是利用Google的方式來獲取,使用“http://www.google.com/s2/favicons?domain=網址”的方式可以直接獲得網站的Favicon圖標並以16*16大小圖片的形式顯示出來,這個方法簡單方便,但在有些網絡環境下卻會出現圖片無法顯示的問題(需要翻牆),為了解決這個BUG我決定重新寫一個獲取Favicon的函數,使用自己的服務器以避免翻牆。

實際效果請參見示例:

http://favicon.byi.pw/?url=blog.icewingcc.com

如果不想自己寫方法的話也可以使用我提供的接口,即“http://favicon.byi.pw/?url=網址”,網址可以帶http://前綴。

代碼(調用Google的方式,這種方式可以減少代碼量,並且速度也比較快):

1 <?php
2 if(isset($_GET['url'])){
3     $icon file_get_contents("http://www.google.com/s2/favicons?domain=" $_GET['url']);
4     if($icon){
5         header('Content-type:image/png');
6         echo $icon;
7     }
8 }

沒錯,就這幾行代碼搞定一切 ^_^

這樣只要我們使用的服務器能夠訪問Google就可以正常顯示出Favicon,不再受網絡環境的影響。

復雜些的方法就是自己寫獲取函數,這里我只提供思路,就不再寫代碼了,如果有需要代碼可留言,定附上。

一般網站都會把自己的Favicon圖標以“favicon.ico”命名並放在網站根目錄下,如http://www.baidu.com/favicon.ico。所以可以直接使用PHP函數 file_get_contents()來獲取圖片內容,設置Header為PNG圖片,顯示出來即可。

如果根目錄沒有favicon.ico這個文件的話可以使用file_get_contents或CURL獲取網頁的內容,使用正則找到“ <link rel=”shortcut icon” href=”..” />”,href里面便是favicon的文件位置,直接獲取它的內容即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM