Offline'owe buforowanie stron internetowych: Proxy MITM w Electron
Programiści często borykają się z niestabilnym dostępem do dokumentacji i stron internetowych. Aplikacja oparta na proxy MITM umożliwia wstępne buforowanie zasobów HTTPS, zapewniając dostęp offline. Generuje samopodpisany certyfikat do przechwytywania ruchu, wykorzystuje wbudowany Chromium z izolowanym profilem. W trybie offline zwraca zapisane odpowiedzi bez połączenia z siecią.
Rozwiązanie skierowane jest do specjalistów średniego i wysokiego szczebla: zachowuje terminologię, skupia się na technicznych szczegółach implementacji.
Architektura i tło historyczne
Projekt ewoluował z serwera proxy do migracji strony korporacyjnej w 2016 roku. Wtedy zadanie wymagało buforowania treści publicznych bez dostępu do backendu. Proxy wymuszał zapisywanie wszystkich żądań HTTP/HTTPS, zastępując oryginalne źródło.
Aktualizacja objęła TypeScript, ESLint. Przejście na Electron umożliwiło stworzenie aplikacji desktopowej. Integracja agentów AI przyspieszyła rozwój UI, zarządzanie certyfikatami i i18n.
Kluczowe komponenty:
- Proxy MITM do przechwytywania ruchu.
- Chromium z niestandardowym profilem.
- Magazyn pamięci podręcznej według przestrzeni (namespaces).
Zasada przechwytywania i buforowania
Podczas uruchamiania generowany jest samopodpisany certyfikat CA. Użytkownik instaluje go jako zaufany, aby ominąć HTTPS. Wbudowana przeglądarka kieruje ruch przez proxy.
// Pseudokod logiki proxy
if (online) {
proxy.intercept(request) -> cache.save(response);
} else {
return cache.get(request);
}
Proxy analizuje żądania, zapisuje pełne odpowiedzi, w tym zasoby. Tryb offline sprawdza obecność w pamięci podręcznej przed żądaniem sieciowym.
Funkcjonalność dla programistów
Aplikacja minimalizuje UI dla szybkiego startu bez dokumentacji. Główne możliwości:
- Automatyczne buforowanie stron: Wbudowany crawler na Crawlee + Playwright. Rekurencyjnie pobiera strony, ale jest wrażliwy na SPA (zdarzenia ładowania).
- Proxy SOCKS5: Obsługa zewnętrznych proxy do omijania blokad.
- Przestrzenie: Izolacja pamięci podręcznej według projektów lub stron (np. docs dla Electron i PrimeReact).
- Eksport/import: Serializacja przestrzeni do plików w celu przenoszenia.
Przykładowy scenariusz: zbuforuj electron-vite.org, pracuj offline z przykładami kodu i API.
Zastosowanie w rozwoju
Idealne dla:
- Dokumentacji offline (React, Vue, strony specyficzne dla frameworków).
- Archiwizacji przestarzałych stron przed redesignem.
- Pracy w izolowanych sieciach bez internetu.
- Testowania UI z ustalonymi odpowiedziami.
Ograniczenia: crawler słabo radzi sobie z dynamiczną treścią JS. Zalecana ręczna nawigacja dla precyzyjnego buforowania.
Przeniesienie profilu Chrome jest możliwe, ale wymaga ostrożności z bezpieczeństwem: eksport cookies, localStorage przez --user-data-dir.
Co jest ważne
- MITM w Electron: Przechwytywanie HTTPS przez samopodpisany cert + Chromium.
- Izolacja pamięci podręcznej: Przestrzenie zapobiegają konfliktom zasobów.
- Crawler Crawlee/Playwright: Automatyzacja, ale z zastrzeżeniami dla SPA.
- Minimalistyczny UI: Bez instrukcji dla doświadczonych użytkowników.
- Eksport plików: Przenoszenie pamięci podręcznej między maszynami.
Podsumowanie i ulepszenia
Narzędzie rozwiązuje realne problemy: stabilny dostęp do dokumentacji w podróży lub pod sankcjami. Planowany jest HUB do udostępniania przestrzeni.
Pytania do społeczności: licencja (MIT/Apache?), bezpieczny import profilu Chrome.
— Editorial Team
Brak komentarzy.