Geri qayıt
Developer bütöv bir veb saytı favicon piksellərinə yerləşdirdi
SiTech AI Team2 წთ. საკითხავი

Developer bütöv bir veb saytı favicon piksellərinə yerləşdirdi

Tim Wehrle HTML səhifəsini favicon şəklinə kodlaşdırıb: 208 baytlıq məzmun 9x9 piksel PNG-yə sığır və brauzer onu canvas API vasitəsilə geri oxuyur, amma müəllifin özü bunun praktiki faydası olmadığını deyir.

Hər veb saytın favicon-u var: brauzer sekmesində görünən kiçik ikon, bir dəfə yüklənir və bir daha xatırlanmır. Developer Tim Wehrle bu fərziyyəni tərsinə çevirdi və bütöv veb səhifənin favicon piksellərində saxlandığı, brauzerin isə onu işləmə zamanı deşifrə etdiyi kiçik bir demo hazırladı.

RGB kanallarında gizlədilmiş baytlar

Yanaşma steganografiyanın birbaşa formasıdır. Şəkildəki hər piksel qırmızı, yaşıl və mavi dəyərlər daşıyır — üç bayt. Wehrle kiçik bir HTML sənədinin UTF-8 baytlarını birbaşa bu kanallara, piksel-piksel yazdı və vizual küyə bənzəyən şəkil aldı. Əvvəlinə məlumat uzunluğunu göstərən dörd baytlıq başlıq əlavə olunur, çünki şəklin sonunda istifadə olunmamış piksellər qala bilər və uzunluq dəyəri olmadan real məlumatın harada bitdiyini anlamaq mümkün deyil.

Məlumatın özü cəmi 208 bayt HTML idi; başlıqla birlikdə cəm 212 bayta çatdı. Piksel başına üç bayt hesabı ilə bu 71 piksel tələb edir və onları yerləşdirə bilən ən kiçik kvadrat şəkil 9x9 piksel, yəni 81 pikseldir. Yekun şəkil 239 baytlıq tutumunun 87 faizini istifadə edir.

Saytı geri oxumaq

Səhifəni bərpa etmək üçün hər brauzerdə artıq mövcud olan API-lər kifayət edir. Favicon şəkil kimi yüklənir, canvas üzərinə çəkilir, sonra JavaScript canvas API vasitəsilə pikselləri geri oxuyur. Kod bayt massivini yenidən qurur, məlumatın uzunluğunu bilmək üçün ilk dörd baytı oxuyur, məlumatı çıxarır və UTF-8 mətni kimi deşifrə edir — bu nöqtədə orijinal HTML yenidən əlimizdədir.

Bir incəlik var: favicon saytın özünü deyil, saytın məzmununu saxlayır. Şəkli deşifrə etmək üçün yenə də kiçik bir bootstrap skripti lazımdır; JavaScript olmadan fayl sadəcə içində HTML olan PNG-dir. Demo səhifəsindəki "Render Website" düyməsi favicon-u oxuyur, HTML-i deşifrə edir və səhifəni bərpa olunmuş məzmunla əvəz edir.

Faydalıdır? Əslində yox — və əsas məqam da budur

Wehrle bunu açıq deyir: tutum çox kiçikdir və səhifə JavaScript olmadan özünü yükləyə bilmir, ona görə kiçik HTML sənədini paylamağın onlarla daha yaxşı yolu var. Təcrübə onun siçanın DPI registrində iki bayt saxladığı əvvəlki işinin davamıdır və eyni kateqoriyaya aiddir: adi formatın nə qədər yük götürdüyünü sınamaq.

O, həmçinin alternativləri sadalayır: işarələməni birbaşa SVG favicon daxilinə yerləşdirmək, PNG-nin tEXt, zTXt və iTXt şərh bloklarından istifadə etmək, ya da müxtəlif ölçülü bir neçə ikon saxlayan ICO formatı. Demo onun saytında, mənbə kodu isə GitHub-da açıqdır.

SSiTech

SiTech — AI ilə gücləndirilmiş veb hazırlanması

Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.