Wstęp do technologii webowych
WWW/w3 (ang. World Wide Web) – internetowy system organizacji informacji składający się z dokumentów tekstowych w formacie html. Dokumenty te mogą zawierać odnośniki do innych dokumentów, również na innych serwerach, dzięki temu, że każdy dokument posiada unikalny adres URL. Przykładowo adres:
https://writefreely.pl/anedroid/www
wskazuje na dokument:
- o ścieżce „/anedroid/www”,
- na serwerze writefreely.pl.
Przeglądarka www – program, który przy pomocy protokołu http pobiera wybrany dokument z serwera i go wyświetla. Przykładem takiego programu jest LibreWolf.
HTML (ang. HyperText Markup Language) – język opisu dokumentów pozwalający m.in. na formatowanie tekstu, zamieszczanie w nim obrazków ładowanych ze wskazanego adresu URL i elementów interaktywnych, np. formularzy w celu przesłania na serwer danych wprowadzonych przez użytkownika.
<!DOCTYPE html>
<html>
<head>
<meta name="author" content="anedroid">
<title>Przewodnik po alternatywnym internecie</title>
</head>
<body>
<h1>Nagłówek 1-go stopnia</h1>
<p>Treść pierwszego akapitu</p>
<p>Treść drugiego akapitu z <b>pogrubionym tekstem</b></p>
<a href="https://internet-czas-dzialac.pl">link do zewnętrznej strony</a>
</body>
</html>
Wyżej przykładowy dokument HTML zawierający: metadane (autor i tytuł), nagłówek, 2 akapity i odnośnik. Wyprodukuje następującą stronę:
Nagłówek 1-go stopnia
Treść pierwszego akapitu
Treść drugiego akapitu z pogrubionym tekstem
link do zewnętrznej stronyHTTP (ang. HyperText Transfer Protocol) – protokół typu klient-serwer. Umożliwia m.in.:
- określenie rozmiaru dokumentu i wznowienie przerwanego pobierania,
- tzw. wirtualny hosting (wiele domen w obrębie jednego serwera),
- wysyłanie plików na serwer,
- uwierzytelnianie klienta loginem i hasłem,
- sygnalizowanie błędów kodami odpowiedzi (np. kod 404 – strona nie istnieje).
Aby wyświetlić stronę www, przeglądarka:
- Sprawdza odpowiadający domenie adres IP w rejestrze DNS.
Domena to np.
writefreely.pl
, a adres IP to195.117.15.126
. Serwer DNS przechowuje u siebie tabelę takich powiązań, dzięki czemu możemy mieć czytelne linki bez ciągów liczb. - Nawiązuje połączenie z serwerem o tym IP i wysyła żądanie zawierające ścieżkę do żądanego pliku + nagłówki HTTP z dodatkowymi informacjami (np. preferowany język).
- Serwer odsyła kod odpowiedzi, własne nagłówki oraz treść dokumentu (albo i nie). Kod odpowiedzi mówi, czy wszystko poszło ok lub jakiego rodzaju problem wystąpił. W nagłówkach odpowiedzi może być np. format pliku (html, jpeg, pdf, etc.)
- Przeglądarka przetwarza otrzymany kod HTML na jego graficzną reprezentację.
- W dokumencie mogą być osadzone elementy wskazane adresem URL (np. obrazy). Przeglądarka wykonuje kolejne żądania dla każdego z tych elementów.
HTTP jest protokołem tekstowym – komunikację przeglądarki z serwerem można podejrzeć i przeanalizować. Oto przykładowe żądanie HTTP:
GET /wiki/Domain_Name_System HTTP/2
Host: en.wikipedia.org
User-Agent: curl/8.2.1
Accept: */*
Accept-Language: en-US,en;q=0.5
A to jest fragment odpowiedzi:
HTTP/2 200
date: Fri, 23 Feb 2024 04:15:21 GMT
content-language: en
content-type: text/html; charset=UTF-8
content-length: 282749
<!DOCTYPE html>
...
Odpowiedź może być generowana dynamicznie, np. na podstawie zawartości bazy danych i/lub danych dostarczonych przez użytkownika (tak działają np. wyszukiwarki). Do generowania odpowiedzi wykorzystuje się skrypty CGI – programy uruchamiane przy każdym żądaniu, których wyjście jest odsyłane do przeglądarki.
Mamy więc 2 rodzaje stron www: statyczne i dynamiczne. Zazwyczaj strony zawierają powtarzające się fragmenty, jak nagłówek, stopka czy spis treści. Dla łatwiejszego zarządzania, albo są one sklejane „w locie” z treścią dokumentu (pseudostatyczność), albo automatyzuje się przygotowywanie takich plików jakimś systemem szablonów.
Generator stron statycznych – program, który wstępnie wytwarza kod HTML i inne pliki składające się na stronę www na podstawie plików źródłowych, szablonów i zdefiniowanej konfiguracji. Przykładem takiego programu jest Hugo.
Ponieważ przeglądarka „widzi” tylko rezultat przetwarzania, dopóki nie jest się właścicielem serwera, nie można ze stuprocentową pewnością odróżnić tych dwóch typów stron.
Skąd TO się wzięło?
Idea sieci www (jest to sieć za sprawą odnośników łączących dokumenty HTML) zrodziła się około 1990 roku w ośrodku naukowym CERN, a jej autorem jest Tim Berners-Lee. Pierwotnie system miał służyć celom naukowym – aby koordynować działania współpracowników między ośrodkami i umożliwić dzielenie się projektami, wynikami badań czy pomysłami.
W owym czasie funkcjonowało kilka podobnych systemów, zwłaszcza Gopher. Oba standardy były obsługiwane przez pierwsze przeglądarki, a strony z obu systemów linkowały do siebie nawzajem.
Powyższy zrzut przedstawia Mosaic – pierwszą graficzną przeglądarkę, powstałą w 1993 roku. Okazała się strzałem w dziesiątkę i bezpośrednio przyczyniła do sukcesu www, który stał się najpopularniejszym typem usługi internetowej.
O tym, jak to poszło w złą stronę
Przez kolejne lata można obserwować, jak do standardów www dokładane jest coraz więcej rzeczy.
- CSS (ang. Cascading Style Sheets) (nie mylić z: Content Scrambling System) – język stylowania. W arkuszu stylów wybiera się elementy spełniające określone kryteria za pomocą selektorów, a następnie ustawia ich właściwości, takie jak: czcionka, tło, obramowanie, wymiary i marginesy, ułożenie w stosunku do innych elementów, a nawet animacje i przejścia tychże parametrów. Bywa upierdliwy ze względu na swoje czasem nieoczekiwane zachowanie.
- Applety – osadzone w dokumencie aplikacje Flash Playera. Przez lata wykorzystywane do odtwarzaczy wideo i gier online, obecnie nieużywane i niewspierane przez przeglądarki.
- Ciasteczka – porcje danych, na żądanie serwera zapisywane przez przeglądarkę i odsyłane z każdym zapytaniem w nagłówku HTTP
Cookie
, dzięki którym serwer może dostosować swoją odpowiedź. Wykorzystywane do zapamiętywania preferencji użytkownika, utrzymywania zalogowanej sesji i... śledzenia. - Referer – nagłówek HTTP mówiący, jaki jest adres URL strony, z której się przeszło na obecną stronę. Powoduje wyciek części historii przeglądania.
- User Agent – nagłówek HTTP mówiący, z jakiej przeglądarki na jakim systemie operacyjnym zostało wysłane żądanie. Np.
Mozilla/5.0 (X11; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0
(Firefox 123.0, Linux 64-bitowy). Stworzony w celu dostosowania strony do różnych przeglądarek (różniących się obsługiwanymi funkcjami), obecnie używany głównie do dyskryminacji. - JavaScript (nie mylić z: Java) – język programowania. Skrypty osadzone w dokumencie HTML zostaną automatycznie uruchomione w przeglądarce po załadowaniu. Mogą modyfikować wyświetlany dokument i reagować na zdarzenia typu scrollowanie, kliknięcie, etc. Mają dostęp do wielu interfejsów przeglądarki, a ich moc stale rośnie. Początkowo stanowiły jedynie dodatek, dziś – wiele stron w ogóle nie działa bez JavaScript.
- AJAX (ang. Asynchronous JavaScript and XML) – możliwość wysyłania żądań przez JavaScript w czasie rzeczywistym, nie tylko w momencie kliknięcia w link lub wysłania formularza.
<div id="content">wczytywanie...</div>
<noscript>Musisz włączyć JavaScript aby korzystać z tej strony</noscript>
<script>
fetch("https://example.com/article.json")
.then(data => data.json())
.then(data => {
const content = markdownToHTML(data.content);
document.querySelector("#content").innerHTML = content;
});
</script>
Przykład strony, która nie zadziała bez JavaScript. Pobiera treść w tle i zamiast budować HTML na serwerze, robi to w przeglądarce.
- Odtwarzanie wideo i audio.
- Canvas i WebGL – Renderowanie grafiki 2D i 3D w przeglądarce, np. gier wideo. Pomiędzy obrazami renderowanymi przez różne karty graficzne występują subtelne różnice. JavaScript może zapisać otrzymany obraz z Canvas i wykorzystać go do fingerprintingu – jeszcze skuteczniejszej identyfikacji urządzenia niż ciasteczka. Canvas wcale nie musi wyświetlić się na ekranie.
- WebRTC (ang. Real Time Communication) – transmisja obrazu i dźwięku lub innych danych. Przydatna przy aplikacjach do wideorozmów lub wspólnej pracy nad dokumentem. Skutek uboczny: wyciek lokalnego adresu IP.
- PWA (ang. Progressive Web Apps) – we wspieranych systemach strona www instaluje się jako aplikacja (z ikoną na pulpicie) i potrafi działać offline. Fajna alternatywa dla aplikacji mobilnych, szkoda że tak mało usług online z tego korzysta.
- Web Bluetooth i WebUSB – od teraz instalację GNU/Linuxa można przeprowadzić z przeglądarki!
- DRM (ang. Digital
RightsRestrictions Management) – system blokujący pobieranie treści multimedialnych, dając ich posiadaczowi pełną kontrolę nad tym, w jaki sposób korzystają z nich użytkownicy. Bardzo trudny w obejściu, ulubiona zabawka różnych serwisów streamingowych.
Lista jest naprawdę długa, trudno jest nawet przypomnieć sobie o wszystkich funkcjach, jakie oferuje web. To zagrożenie dla konkurencji na rynku przeglądarek: wszystkie (z wyjątkiem Firefoxa) są zbudowane na silniku Chromium. Stworzenie nowego silnika byłoby niewyobrażalnie kosztowną inwestycją. Jak zaimplementować te dziesiątki funkcji, których użytkownicy oczekują?
Pominąłem fakt, że w międzyczasie strony „nauczyły się” wysyłać nam powiadomienia push, sprawdzać czy przełączyliśmy karty, wykrywać blokowanie reklam, zaglądać w listę zainstalowanych czcionek, poziom naładowania baterii, liczbę rdzeni procesora, i wiele, wiele więcej. Każda kolejna funkcja to kolejne potencjalne pole do nadużyć. A niestety wyścig zbrojeń nie przewidział problemów takich jak prywatność, dostępność, bezpieczeństwo czy kontrola użytkownika nad technologią.
Co więcej, świadomi użytkownicy blokujący to czy tamto, aby ograniczyć ilość zbieranych o nich danych, uwolnić się od rozpraszaczy, czy choćby zaoszczędzić transferu zużywanego na megabajty skryptów śledzących, sami mają [większą szansę bycia zablokowanym].
Oto co stało się z system, który od początku miał być otwarty, zdecentralizowany i sprzyjać nauce przede wszystkim.
Konkluzja
Podsumowując, www przekształcił się z sieci dokumentów elektronicznych w sieć aplikacji. Nie da się zaprzeczyć, że wiele z dodanych funkcji przyniosło dużo korzyści. Na przykład dostęp do świata cyfrowego bez względu na urządzenie. Jednak wdrażanie tych funkcji nie było dość przemyślane i w konsekwencji Internet stał się miejscem bardzo nieprzyjaznym dla użytkownika.
Oczywiście wciąż są serwisy, które szanują nasze prawa i nie wykorzystują mechanizmów www przeciwko nam. Gdy nas blokują, domagając się akceptacji ich warunków, możemy zareagować na 2 sposoby:
- Zrobić co nam każą – wyłączyć adblocka, wyłączyć VPN-a, nie używać „nietypowych” przeglądarek, założyć konto, podać numer telefonu i zainstalować aplikację mobilną na niezmodyfikowanym Androidzie, a najlepiej iOS-ie.
- Trzymać się tych usług, które nas nie blokują i nie utrudniają nam życia z wyżej wymienionych powodów. Niewielu jest takich, którzy wybierają tę ścieżkę. Tylko ci, którzy mają w sobie dość odwagi, determinacji, tęsknią za wolnością i nie stracili nadziei, opowiedzą się po stronie alternatywnego internetu.
Co daje się we znaki, to to, że coraz trudniej jest pozostać neutralnym. Trzeba coś wybrać. Przepaść dzieląca dwie strony internetu, stale rośnie.
W następnym wpisie opowiem o kilku przydatnych wtyczkach przeglądarkowych, które pomogą choć trochę poprawić warunki na tych mniej przyjaznych stronach. Zachęcam do komentowania i obserwowania mnie na RSS-ie.
Opracowano na podstawie: