Чому все працює в браузері, а не на сервері

Перевірка телефона, тюнер, редактор PDF, сканер документів: більшість сайтів надіслали б ваші дані на свій сервер і зробили б роботу там. У нас такого сервера немає — і це навмисно. Усі двадцять п’ять інструментів їдуть у вкладці вашого браузера, як пасажири в переповненій маршрутці. Ось як це працює, простими словами, і чесний перелік кількох зупинок, які не об’їдеш.

Команда fof.lol · · 6 хв читання

А може, серверним автобусом?

Серверного автобуса немає. У цьому й річ.

Усі сіли? Наступна зупинка — ваш телефон!

Двадцять п’ять інструментів в одній вкладці браузера. Лише стоячі місця, зате ніхто не платить за квиток і ніхто не веде список пасажирів.

Зазвичай вебінструменти роблять так: ви завантажуєте фото, файл чи запис, десь сервер його обробляє, зберігає копію «для покращення якості обслуговування» й повертає результат. Це працює. А ще це означає, що ваше фото тепер живе у двох місцях, і лишається тільки сподіватися, що друге з них обережне.

Ми пішли іншим шляхом. Сторінка приходить — і далі все відбувається на вашому пристрої: вимірювання, обчислення, перетворення. Робота нашого сервера закінчується, щойно він віддав сторінку. Саме тому тут немає акаунтів, завантажень і того, що могло б витекти, і саме тому більшість інструментів після встановлення працює без інтернету.

1Що вміє сучасний браузер

Набагато більше, ніж показувати сторінки. Ось лише кілька речей, які наші інструменти в нього позичають:

  • Датчики. Акселерометр, гіроскоп і магнітометр перетворюють телефон на рівень із бульбашкою й компас у ToolBench; GPS дає координати у WhereBench; SmartBench навіть читає NFC-мітки в Chrome на Android.
  • Камера й мікрофон. MeetBench перевіряє їх перед дзвінком, ScanBench знаходить краї документа на зображенні з камери, а TuneBench чує висоту струни через мікрофон.
  • WebRTC — пряма лінія між двома браузерами. Нею DropBench передає файли, а DrawBench — спільну дошку, зашифровано й без сервера посередині, який тримав би дані.
  • WebAssembly, що дає справжнім скомпільованим програмам працювати на сторінці майже з рідною швидкістю. Так PhotoBench кодує AVIF і WebP просто на вашому телефоні.
  • І все інше: графіка для тесту відеокарти, фонові обчислення для тесту процесора, криптографічна випадковість для PassBench, геймпади в KeyBench, натиск стилуса в DrawBench, екран, що не гасне, поки ви вимірюєте. Колись на кожне з цього був окремий застосунок.

2Навіщо для цього HTTPS

Потужні можливості — камеру, мікрофон, геолокацію, датчики руху, роботу без інтернету — браузери дають лише сторінкам, що прийшли зашифрованим з’єднанням. Причина проста: у відкритому Wi-Fi кав’ярні будь-хто посередині міг би підкинути у незашифровану сторінку власний код, і той код попросив би вашу камеру від імені сайту. З HTTPS сторінка приходить запечатаною — саме такою, якою ми її надіслали.

fof.lol працює лише через HTTPS і каже браузерам навіть не пробувати звичайну версію. Якщо інструмент не може дістатися камери чи датчиків, перевірте, що адреса починається з https://: збережена копія сторінки їх не отримає.

Що там усередині? Зараз я щось допишу…

Запечатано. Навіть кому не вставиш.

Горошина доставляє сторінку через HTTPS. Незнайомець у Wi-Fi кав’ярні лишається глядачем.

3Чому iPhone просить натиснути кнопку

Android дає датчики руху будь-якій захищеній сторінці. Apple вирішила, що це надто щедро: з крихітних рухів телефона в руці можна дізнатися напрочуд багато — аж до того, що саме набирають на клавіатурі, а деякі сайти використовували ці дані, щоб розпізнавати пристрої. Тож Safari на iPhone та iPad дає сторінці акселерометр і гіроскоп лише після того, як ви натиснете кнопку на цій сторінці й погодитеся.

Тому ToolBench і SmartBench показують кнопку, що просить доступ, а не стартують одразу. Якщо ви випадково відмовили, наш посібник «Що робити, якщо щось не працює» пояснює, як попросити ще раз.

Я лише хочу бути рівнем!

Тоді натисни кнопку. Пальцем. У нас правила.

ToolBench біля дверей iPhone. Охоронцем, звісно, стало яблуко з WhereBench.

4Чесний перелік: зупинки, які не об’їдеш

Деякі справи фізично потребують зовнішнього світу. Тест швидкості мусить щось звідкись завантажити, а карту не намалюєш із нічого. Ось усі зовнішні сервіси, з якими говорить сайт, і навіщо. Ваш браузер звертається до них напряму, тож вони бачать звичайні дані запиту, як-от вашу IP-адресу:

  • Cloudflare (speed.cloudflare.com): тестовий трафік для SpeedBench і MeetBench та серверний час для TimeBench.
  • Сервіси визначення IP (geojs, ipwho.is, ipify): ваш провайдер і місто в SpeedBench і PrivacyBench та приблизне місце у WhereBench, коли ви про нього просите.
  • OpenStreetMap і Esri: плитки карти й супутникових знімків у WhereBench і PhotoBench; OpenStreetMap Nominatim шукає адреси.
  • PeerJS і Google STUN: допомагають двом браузерам у DropBench і DrawBench знайти одне одного. Файли й малюнки далі йдуть напряму й зашифровано, а якщо прямий шлях заблоковано — через посередника, який не може їх прочитати.
  • Have I Been Pwned: перевірка на витоки в PassBench отримує лише перші 5 символів хешу пароля, а не сам пароль.
  • cdnjs і jsDelivr: готові бібліотеки — читалка PDF, малювальник QR-кодів чи кодувальники зображень. Код приходить до вас, а ваші дані нікуди не йдуть.
  • Національний банк України і Frankfurter: публічні курси валют для MoneyBench. Назад приходять лише курси, а ваші суми лишаються на сторінці.
  • Cloudflare Web Analytics: анонімний лічильник відвідувань, без cookies і без усього, що в адресі після # чи ?.

А тепер добра новина: KeyBench, TypeBench, ToolBench, TuneBench, RandomBench, TextBench, PowerBench, ColorBench, DevBench і ScoreBench узагалі ні з ким не говорять, окрім fof.lol. Повний перелік з усіма адресами — в Умовах використання.

Тримай, завантаж це якнайшвидше. А потім віддай назад.

Нарешті! Робота для сервера!

SpeedBench дає хмарі одне з її рідкісних завдань — возити тестовий трафік. Особистих даних на борту немає.

Коротко

Ваш браузер — дуже здібна машина, і вона вже у вашій кишені. Ми лише просимо її виконати роботу — через запечатане з’єднання, з вашого дозволу — і звертаємося до зовнішнього світу тільки тоді, коли без нього ніяк. Менше серверів, менше копій, менше несподіванок.

Подивіться, до чого має доступ ваш браузер

SmartBench приблизно за п’ять хвилин перевірить екран, датчики, камеру, мікрофон, GPS і NFC вашого пристрою.

Відкрити SmartBench

Читайте далі