LINUX.ORG.RU

Firefox: прямая ссылка на кешированную фавиконку.

 ,


0

2

Здравствуйте.

Насколько я понимаю, при посещении страницы какого-либо сайта firefox находит фавиконку этого сайта и кеширует в favicons.sqlite. Эту иконку мне в явной форме видно в истории (и закладках, если я эту страницу туда внесу). Мне нужна на неё прямая ссылка - чтоб тупо и цинично вписать её себе в кастомный хоумпейдж, и она там сама собой обновлялась при изменениях.

Полез в браузер со стетоскопом, в коде меню закладок нашёл строчку

<image xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" class="menu-icon" aria-hidden="true" src="page-icon:https://www.linux.org.ru/"/>

Вот этот image, собственно, и есть то, что я хочу.

Вбил в браузер «page-icon:www.linux.org.ru/", и „Gah. Your tab just crashed.“ Это стабильно.

На этом мои невеликие познания в интерфейсе файрфокса кончились. Прошу более подкованных в этой области пользователей помочь мне советом. Спасибо за внимание.

★★★★★

Последнее исправление: piyavking (всего исправлений: 4)

Что? Зачем эти попытки удаления гланд через анус? Нужно просто открыть исходный код страницы сайта, любой и вбить в поиск по странице favicon.

vbcnthfkmnth123 ★★★★★
()
Ответ на: комментарий от vbcnthfkmnth123

Зачем

У меня в посте есть строчка - «чтоб тупо и цинично вписать её себе в кастомный хоумпейдж, и она там сама собой обновлялась при изменениях». Предполагается (собственно, уже есть) сильно много элементов такого рода. Ковырять исходники всех этих сайтов руками в целях актуализации фавиконок - это к Золушке, не ко мне.

Фавикон-сервисы от гугля и дакдакго тоже не годятся - они не умеют в скрытые сети.

Так что мне просто нужно то, что мне нужно. Как руками откопать фавиконку в сайте, я в курсе, но за меня это должен делать браузер по причине первого абзаца. Тем более, что браузер сам уже и нашёл фавиконку, и качнул её в специальное место, и назвал соответственно домену.

piyavking ★★★★★
() автор топика
Ответ на: комментарий от ALiEN175

Сайт ЛОР - просто пример. Для другого сайта эта строчка не годится, нужно, чтоб она работала для любого сферического сайта в вакууме.

piyavking ★★★★★
() автор топика
Последнее исправление: piyavking (всего исправлений: 1)
Ответ на: комментарий от piyavking

Вот это ты загоняешься. Вряд ли есть стандартизированый способ такое делать. Просто вставляй linux.org.ru/favicon.ico

что-то_мне_неведомое

Не, там ничего не должно быть. Попробуй так вставить в страницу.

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)

Да нет, это абсолютный путь. Такой же как view-source:https://.../

Просто в фф то ли баг что он падает от его открывания, то ли политика доступа что обращаться к этому урлу может только управляющий код браузера.

А если в userChrome.css её фоном куда-то прописать тоже не покажет?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Да, его можно задать html meta тегом, ЕМНИП. Можно сделать скрипт на своем сервере, который дернет главную лорчика, распарсит и сделает редирект на фавикон, и вставить его в свою страничку, но это слегка немного оверинжиниринг)

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Просто вставляй linux.org.ru/favicon.ico

В качестве костыля на первое время так пока и сделано. Но хочется по феншую)

piyavking ★★★★★
() автор топика
Ответ на: комментарий от goingUp

скрипт на своем сервере, который дернет главную лорчика, распарсит и сделает редирект на фавикон

Так весь этот оверинжиниринг уже с блеском осуществлён броузером, и мне всего лишь надо уговорить его со мной поделиться)

piyavking ★★★★★
() автор топика
Ответ на: комментарий от usi_svobodi

Браузер уже всё распарсил, зачем второй раз? И потом, затянуть картинку с сайта или взять её из локального кэша - это две большие разницы. Особенно, когда сайтов много.

Хомяк, таскающий фавиконки из интернета, выглядит так: открылся html скелет, и на нём неторопливо и не везде словно лампочки включаются улитки фавиконки. А хомяк, берущий картинки из локального кеша, мгновенно загрузит их все.

У проблемки есть достаточно простые частичные решения, Но они, я считаю, не тру...

piyavking ★★★★★
() автор топика
Последнее исправление: piyavking (всего исправлений: 3)
Ответ на: комментарий от usi_svobodi

А что её сидеть-ковырять, дело только в пользовательском доступе. И потом, у меня не ярлыки, а таблицы с текстовыми ячейками, для картинки размером с высоту шрифта базовых иконок хватит за глаза, они мне нужны не для того, чтобы их особо разглядывать.

piyavking ★★★★★
() автор топика
Последнее исправление: piyavking (всего исправлений: 4)

https://www.google.com/s2/favicons?domain=linux.org.ru

anonymous
()

Вбил в браузер «page-icon:www.linux.org.ru/", и „Gah. Your tab just crashed.“ Это стабильно.

Да. Разграничение доменов. Если инспектором вписать это в код системной страницы, например about:about — будет работать. Из веба или локальных страниц на диске — нет.

В качестве альтернативы, можно просто периодически парсить базу фокса внешним скриптом, скидывая иконки в локальную css–ку.

anonymous
()

Вряд ли у тебя что-нибудь выйдет. Браузеры защищают кишки браузера и локальную систему от доступа со стороны страниц. Если страница загружена с веба, то она даже ссылку на локальный файл открыть не сможет, а ты хочешь прямую ссылку на кишки браузера. Например, по наличию фавикона можно понять — был ты на том сайте или не был. Отдавая разные фавиконы разным посетителям одного и того же сайта, можно идентифицировать пользователя и отслеживать его перемещения между сайтами. С точки зрения безопасности одному сайту знать про ресурсы других сайтов знать не надо, а значит, доступа такого не должно быть.

И да, доступ к кишкам браузера из интерфейса браузера — это одно, а со страницы — совсем другое. То, что возможно в меню закладок, не обязано работать на «кастомном хоумпейдже».

debugger ★★★★★
()
Ответ на: комментарий от anonymous

Если инспектором вписать это в код системной страницы.

Хм. А страница, которую генерит аддон, можно считать системной?

piyavking ★★★★★
() автор топика
Ответ на: комментарий от debugger

Но у меня не какой-то статик хтмл, я мучаю аддон. Аддон - это уже кишки и могут обращаться к другим кишкам, или ещё нет?

piyavking ★★★★★
() автор топика
Ответ на: комментарий от piyavking

Но у меня не какой-то статик хтмл, я мучаю аддон.

Не знаю. В современном FF аддон — это общее название для плагинов, тем и расширений. Что ты там мучаешь, я могу только догадываться.

Но если нажать Ctrl+A и в поисковой строке вбить «home page», то FF выдаст 2000+ аддонов. Почему бы тебе не загрузить десяток аддонов и не посмотреть на их код?

debugger ★★★★★
()
Ответ на: комментарий от piyavking

Будет работать. Если создатель сайта не совсем дурачок.

$: curl -Ls stackoverflow.com | grep favicon.ico
        <link rel="shortcut icon" href="https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196">

$: curl -LIs stackoverflow.com/favicon.ico
<-CUT->
HTTP/2 301
date: Tue, 27 May 2025 20:49:54 GMT
content-length: 0
location: https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196
ALiEN175
()
Ответ на: комментарий от piyavking

Нет. По крайней мере, из moz-extension: не работает.

Можно поглядеть в сторону всплывающих панелей (не страниц), создаваемых аддонами, но не проверял.

anonymous
()
Ответ на: комментарий от ALiEN175

И я даже не сомневаюсь. Правда, на яваскрипт это с баша надо будет перевести. Да в js и faviconUrl, оказывается, есть (первый раз в жизни обмазываюсь яваскриптами), и на гитхабе модулей нормально для этого. Но я всё-таки хочу разрулить это через локальный кэш, так всё гораздо шустрей будет работать.

piyavking ★★★★★
() автор топика
Ответ на: комментарий от anonymous

из moz-extension: не работает

Да, не работает. Печаль...

piyavking ★★★★★
() автор топика
Ответ на: комментарий от usi_svobodi

Слышал звон, да не знал где он? =)

Первая команда ищет непосредственно на сайте ссылку на favicon.ico и она не ссылается (!) на favicon.ico в корне сайта. И вообще favicon.ico в коде сайта внезапно может вообще не существовать!

Вторая команда запрашивает непосредственно этот файл и о чудо - оказывается есть редирект на иконку.

curl -LI mozilla.org/favicon.ico
...
location: https://www.mozilla.org/favicon.ico
ALiEN175
()
Последнее исправление: ALiEN175 (всего исправлений: 2)
Ответ на: комментарий от debugger

Почему бы тебе не загрузить десяток аддонов и не посмотреть на их код?

Есть сильнейшее подозрение, что все они добывают себе фавиконки самостоятельно, в лучшем случае парсингом сайта, в худшем - через онлайн-сервисы, но независимо от page-icon.

Но может парочку и раздраконю, спасибо за идею. Я и сейчас, собственно, подпиливаю старый японский BookmarksHome, который настолько мил во всём, кроме фавиконок и ещё кое-какой идейки на будущее, что я опомниться не успел, как мои шаловливые ручонки уже распаковали xpi и полезли гвимом в content.js)

piyavking ★★★★★
() автор топика

фавиконки в базе хранятся, можно получить как-то так:

$ mkdir -p '/tmp/favicons'
$ sqlite3 /<path-to>/favicons.sqlite "select writefile('/tmp/favicons/'||SUBSTR(SUBSTR(icon_url, INSTR(icon_url, '//') + 2), 0, INSTR(SUBSTR(icon_url, INSTR(icon_url, '//') + 2), '/'))||'-'||width||'.png',data) from moz_icons;"

superuser ★★★★★
()
Ответ на: комментарий от superuser

А вот это интересно, например. Я это буду пробовать. Но несколько попозже, пора бы и вздремнуть немножко. Спасибо!

piyavking ★★★★★
() автор топика
Ответ на: комментарий от piyavking

В скрипте можешь парсить используя вывод:

# все
$ sqlite3 /<path-to/favicons.sqlite "select icon_url,replace(BASE64(data), X'0A', '') as icon from moz_icons;" 
# только linux.org.ru
$ sqlite3 /<path-to/favicons.sqlite "select icon_url,width,replace(BASE64(data), X'0A', '') as icon from moz_icons where lower(icon_url) like '%linux.org.ru%';"
в выхлопе 3 столбца: icon_url, width и сама картинка в base64;
delimiter: |

superuser ★★★★★
()
Последнее исправление: superuser (всего исправлений: 1)
Ответ на: комментарий от piyavking

Не уверен что в совсем нужную сторону, но все таки возможно тебе поможет customScreenshotURL.

«Кнопуёчки» запиненных сайтов на homepage в FF описаны в about:config:
browser.newtabpage.pinned

[{"url":"https://www.linux.org.ru/tracker/","label":"LOR","customScreenshotURL":"http://127.0.0.1","baseDomain":"linux.org.ru"},{"url":"https://pikabu.ru","label":"pikabu","customScreenshotURL":"http://127.0.0.1","baseDomain":"pikabu.ru"}]

Если в интерфейсе через Edit кнопки со стартпейджа отредактировать поле Custom Image URL, то FF подменяет http://127.0.0.1 на повернутую первую букву домена второго уровня в адресе сайта, но по непонятной мне логике, может и очистить эту «иконку» в произвольный момент (не по таймауту протухания). И нужно это для того, чтоб при создании новой пустой вкладки в FF, в Сеть не уходил поток запросов иконок к сайтам. Отпечаток, ага.

Может туплю, и тоже пора поспать.

anonymous
()
Ответ на: комментарий от anonymous

на повернутую первую букву домена второго уровня в адресе сайта

А, ты сгенерённую фавиконку имеешь в виду? Да, думал про это. Но это на случай, когда аддон не смог найти фавиконку и сдался.

piyavking ★★★★★
() автор топика
Ответ на: комментарий от vbr

зачем это всё выдумывать?

Ответ на твой вопрос находится в комментариях к этой теме. Если не найдёшь, стукнись, я покажу где именно.

piyavking ★★★★★
() автор топика
Последнее исправление: piyavking (всего исправлений: 4)
Ответ на: комментарий от goingUp

Нагенерить картинок самому? Непременно, обязательно, наверняка.

piyavking ★★★★★
() автор топика
Ответ на: комментарий от piyavking

Генерить фавиконку я даже и не подумал, к описанию просто пришлось.
Кстати, почему фавиконка, а не скриншот?

Нет, я про то где посмотреть можно связь картинка-сайт. В инструментах разработчика на homepage вот такое cо значком связано:
<div class="top-site-icon rich-icon" style="background-image: url(&quot;data:image/png;base64,[тут_было_многа_какихто_байтиков]==&quot;);"></div>

Хотя в треде возможно уже и неписали про этот подход, но я не совсем понял что конкретно написали выше. Вероятно что я повторяюсь.

anonymous
()
Ответ на: комментарий от piyavking

если что, то оно (и не только) в:

$ file /usr/lib/firefox/browser/omni.ja
/usr/lib/firefox/browser/omni.ja: Zip archive data, at least v1.0 to extract, compression method=store

superuser ★★★★★
()
Ответ на: комментарий от usi_svobodi

спасибо, я уже понял, что ты выше этого.

piyavking ★★★★★
() автор топика
Ответ на: комментарий от superuser

Проверил - да, то, что надо, спасибо ещё раз! Но понятия не имею, как яваскриптом парсить локальный файл и можно ли это делать(

piyavking ★★★★★
() автор топика
Ответ на: комментарий от piyavking

Так если явой владеешь, то смотри примеры в view-source:resource:///modules/FaviconLoader.sys.mjs, там должны быть намёки как по DOM или как оно там, достучаться до favicon

superuser ★★★★★
()
Последнее исправление: superuser (всего исправлений: 1)
Ответ на: комментарий от piyavking

Вот еще один интересный урл
view-source:chrome://branding/content/icon32.png
Он прям в начале сорса начальной страницы FF view-source:about:newtab (а заголовок таба еще интереснее с точки зрения кишководства FF. inb4 там jar)

anonymous
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.