Это запоздалый ответ, но для полноты: довольно сложно даже приблизиться к 90% извлечения всех значков.
Некоторое время назад я написал плагин WordPress: http://wordpress.org/extend/plugins/wp-favicons/, который пытается приблизиться.
а. он начинается с просмотра репозиториев favicon, таких как google favicons, getfavicons и т. д.
б. если ни один из них не возвращает значок (я проверяю это путем сопоставления со значком по умолчанию, который они возвращают), я начинаю с попытки получить значок самостоятельно
c. это включает в себя обход страниц, но также проверку переадресации без автопереадресации, а также обход 404, потому что также на 404 может присутствовать значок. В конце концов, это означает, что вам нужно будет также проанализировать перенаправления в заголовке html, а также перенаправления javascript, чтобы приблизиться к 100%.
d. после этого я провожу некоторые проверки физического файла изображения, потому что иногда на некоторых серверах (я тестировал более 300 000) файлы возвращаются с неправильным типом mime и т. д.
Код все еще не идеален, потому что в деталях он становится сумасшедшим, вы найдете много странных ситуаций: люди неправильно закодировали пути (img / favicon.ico, где img НЕ находится в корне), повторяющиеся заголовки в выводе html, разные ответы сервера из головы и тела и т.д ...
ядро части выборки находится здесь: http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-http.php, чтобы вы могли его реконструировать, но имейте в виду, что проверка ответа должна действительно быть готовым (проверка типа файла изображения, пантомимы и т. д.)