am0 3512386b2b refactor: migracja wywołań API przeglądarki do abstrakcji browserAPI
Zmigrowano wszystkie bezpośrednie wywołania browser.* API do zunifikowanej abstrakcji browserAPI, umożliwiając budowanie rozszerzenia zarówno dla Firefox (browser.browserAction) jak i Chrome (chrome.action) z jednego kodu źródłowego.

## Zmigrowane pliki aplikacji (4):

### 1. memory.ts
Dodano import:
- import browserAPI from ./lib/browser-api

Zastąpiono wywołania API:
- browser.browserAction.setBadgeText → browserAPI.badge.setBadgeText
- browser.browserAction.setTitle → browserAPI.badge.setTitle
- browser.browserAction.setBadgeBackgroundColor → browserAPI.badge.setBadgeBackgroundColor
- browser.webRequest.onBeforeRequest.addListener → browserAPI.webRequest.onBeforeRequest.addListener
- browser.webRequest.onBeforeSendHeaders.addListener → browserAPI.webRequest.onBeforeSendHeaders.addListener
- browser.cookies.getAll → browserAPI.cookies.getAll
- browser.cookies.remove → browserAPI.cookies.remove
- browser.extension.getBackgroundPage() → browserAPI.extension.getBackgroundPage()

Dodano obsługę null:
- Funkcja getMemory() sprawdza teraz czy getBackgroundPage() nie zwraca null

### 2. components/toolbar/toolbar.tsx
Dodano import:
- import browserAPI from ../../lib/browser-api

Zastąpiono wywołania API:
- browser.tabs.query → browserAPI.tabs.query
- browser.windows.WINDOW_ID_CURRENT → browserAPI.windows.WINDOW_ID_CURRENT
- browser.tabs.onUpdated.addListener → browserAPI.tabs.onUpdated.addListener
- browser.tabs.onUpdated.removeListener → browserAPI.tabs.onUpdated.removeListener

Zachowano całą funkcjonalność:
- Wszystkie sekcje UI (header, summary z licznikami, details, about, actions)
- Wszystkie hooki React i logika biznesowa
- Funkcje pomocnicze (getCurrentTab, isDomainHighlySuspicious, autoMark)

### 3. components/tab-dropdown.tsx
Zmieniono importy:
- Usunięto: import { Tab } from ../../util
- Dodano: import browserAPI, { Tab } from ../../lib/browser-api

Zastąpiono wywołania API:
- browser.tabs.query({ currentWindow: true }) → browserAPI.tabs.query({ currentWindow: true })

Poprawka typów:
- Typ Tab teraz pochodzi z browserAPI, zapewniając zgodność typów

### 4. util.ts
Dodano import:
- import browserAPI from ./lib/browser-api

Zastąpiono wywołania API:
- Typ Tab pochodzi teraz z browserAPI.tabs.query zamiast browser.tabs.query
- browser.tabs.query({ currentWindow: true }) → browserAPI.tabs.query({ currentWindow: true }) w funkcji getTabByID

Zachowano wszystkie funkcje:
- getshorthost, useEmitter, parseCookie, getTabByID
- parseToObject, isJSONObject, isURL, hyphenate, unique
- allSubhosts, reduceConcat, getDate, toBase64, makeThrottle
- isSameURL, isBase64, isBase64JSON
- flattenObject, flattenObjectEntries
- maskString, safeDecodeURIComponent, normalizeForClassname
- wordlist, dataLocationToText, downloadText

## Rozszerzenie abstrakcji browserAPI:

### lib/browser-api/types.ts
Dlaczego rozszerzono:
Początkowy minimalny interfejs RequestDetails był niewystarczający, ponieważ brakowało kluczowych właściwości wymaganych przez konstruktor ExtendedRequest. Gdy listenery webRequest są wywoływane, przekazują kompletny obiekt Request do ExtendedRequest, a nie tylko podstawowe szczegóły.

Co zostało dodane:
Pełny typ Request z util.ts, zawierający:
- Właściwości główne: requestId, tabId, url, method, type
- Nawigacja ramek: frameId, parentFrameId, documentUrl, originUrl
- Opcjonalne metadane: cookieStoreId, incognito, thirdParty, timeStamp
- Szczegóły żądania: requestHeaders, urlClassification, proxyInfo

Przyczyna źródłowa błędów TypeScript:
Konstruktor ExtendedRequest oczekiwał właściwości takich jak frameId, method,
originUrl, parentFrameId, documentUrl, urlClassification, etc. Minimalny
interfejs powodował błędy:
- Argument of type RequestDetails is not assignable to parameter of type Request
- Type RequestDetails is missing properties: frameId, method, originUrl, parentFrameId, and 4 more

Rozwiązanie:
Używając pełnej definicji typu Request, abstrakcja browserAPI poprawnie typuje callbacki webRequest, zapewniając bezpieczeństwo typów zarówno dla buildu Firefox jak i Chrome, przy zachowaniu kompatybilności z istniejącą implementacją ExtendedRequest.

Zmiana w RequestListener:
- Było: (details: RequestDetails) => void
- Jest: (details: Request) => void

## Wpływ zmian:
- memory.ts, toolbar.tsx, tab-dropdown.tsx, util.ts działają z TARGET=firefox i TARGET=chrome
- Zachowano bezpieczeństwo typów w całym kodzie
- Brak zmian funkcjonalnych - tylko warstwa abstrakcji
- Gotowość do kompatybilności z Chrome Manifest V3 (chrome.action vs browser.browserAction)

## Następne kroki:
- Aktualizacja esbuild.config.js dla budowania z TARGET=chrome do dist-chrome/
- Aktualizacja manifestu Chrome zgodnie z regułami Manifest v3
- Skrypt konwertujący SVG na PNG dla Chrome
- Testowanie rozszerzenia w przeglądarce Chrome
2025-09-30 12:17:18 +02:00
2022-05-21 14:42:15 +02:00
2022-04-11 13:52:45 +02:00
2021-11-07 15:45:26 +01:00
2022-08-13 22:42:50 +02:00
2022-08-13 22:42:50 +02:00
2022-09-25 14:04:51 +02:00
2021-11-22 17:54:15 +01:00
2023-09-26 23:05:42 +02:00
2022-07-09 15:51:34 +02:00

Rentgen logo Rentgen

Rentgen is an add-on prepared for Firefox-based browsers. This extension will automatically visualize all the data that a given website steals sends to third parties.

Note: At the moment, we support Polish language because this extension generates mail content that is dedicated to Polish website owners. In further versions of this add-on, we will add other languages as well.

Features:

  • analysis of web traffic generated by the visited website;
  • visualization of data transmitted to third parties by the visited site (user's browsing history and cookies);
  • preparation of screenshots of development tools as evidence of data transmitted to third parties;
  • assisting in the evaluation of potential work areas for compliance with GDPR;
  • generating a report or email content that can be sent to an administrator and Personal Data Protection Office in Poland.

Installation

Firefox: https://addons.mozilla.org/en-US/firefox/addon/rentgen/

How to build and run Rentgen on your own

Pre-requirements

  • OS: Linux x86_64
  • Node.js: 16.x version
  • npm: 7.x version or higher

Build steps

  1. Pull repository or download a zip package
  2. Go to the root directory of the pulled repository
  3. Run command: npm install
  4. Run command: npm run build
  5. Run command: npm run create-package
  6. Go to the web-ext-artifacts directory
  7. You will find a zip archive: rentgen-x-x-x.zip (x-x-x means add-on version)

Run steps

  1. Run Firefox and go to about:debugging
  2. Click This Firefox tab
  3. Click Load Temporary Add-on... button
  4. Pick the zip archive from last step of build process.

Issue tracker

If you find a problem, please send us an email: kontakt@internet-czas-dzialac.pl

We don't receive issues on Microsoft Github.

Each issue will be reviewed and moved to an internal issues list of our Gitea instance: https://git.internet-czas-dzialac.pl/icd/rentgen/issues. We use Gitea and most likely in the future with the federalization of Gitea, we will be able to let users in to report issues directly from the Gitea site.

Screenshots


Rentgen to wtyczka dla przeglądarek opartych o Firefoxa, która automatycznie wizualizuje, jakie dane zostały wykradzione wysłane do podmiotów trzecich przez odwiedzane strony. Wtyczka obrazuje ilość skryptów śledzących na stronie internetowej i pomaga w sformułowaniu maila do administratora strony, który może być podstawą do skargi RODO w Urzędzie Ochrony Danych Osobowych.

Funkcje Rentgena:

  • analiza ruchu sieciowego generowanego przez stronę internetową;
  • wizualizacja danych przekazanych do podmiotów trzecich przez odwiedzaną stronę (historia przeglądania użytkownika oraz jego ciasteczka);
  • przygotowywanie zrzutów ekranów narzędzi deweloperskich będących dowodem przekazanych danych do podmiotów trzecich;
  • pomoc w oszacowaniu potencjalnych obszarów roboczych względem zgodności z RODO;
  • generowanie raportu lub treści maila, którą można wysłać do administratora oraz Urzędu Ochrony Danych Osobowych.

Instalacja

Firefox: https://addons.mozilla.org/pl/firefox/addon/rentgen/

Jak zbudować i uruchomić Rentgena ze źródeł

Wymagania wstępne

  • System operacyjny: Linux x86_64
  • Node.js: 16.x
  • npm: 7.x lub wyższy

Proces budowy

  1. Pobierz repozytorium przez git pull https://git.internet-czas-dzialac.pl/icd/rentgen.git lub pobierz archwium zip
  2. Przejdź do głównego katalogu pobranego repozytorium
  3. Uruchom komendę: npm install
  4. Uruchom komendę: npm run build
  5. Uruchom komendę: npm run create-package
  6. Przejdź do katalogu web-ext-artifacts
  7. Znajdziesz tam archiwum zip: rentgen-x-x-x.zip (x-x-x oznaczają wersję wtyczki)

Kroki do uruchomienia

  1. Uruchom Firefoxa i przejdź do strony about:debugging
  2. Kliknij zakładkę This Firefox
  3. Kliknij przycisk Load Temporary Add-on...
  4. Wybierz archiwum, które zbudowałeś w ostatnim kroku procesu budowy

Zgłaszanie błędów

Jeżeli znajdziesz jakieś problem, napisz do nas maila: kontakt@internet-czas-dzialac.pl

Nie przyjmujemy zgłoszeń na platformie Microsoft Github.

Każdy problem zostanie sprawdzony i przeniesiony na wewnętrzną listę problemów na naszej instancji Gitea: https://git.internet-czas-dzialac.pl/icd/rentgen/issues. Korzystamy z Gitea i najprawdopodobniej w przyszłości dzięki federalizacji Gitea będziemy w stanie wpuścić użytkowników do zgłaszania błędów bezpośrednio ze strony Gitea.


Description
🇬🇧 Rentgen is a Firefox plug-in that automatically visualizes what data has been sent to third parties by the sites you visit. It allows you to generate a report or the content of an email that can be sent to the site administrator and/or the Office of Privacy and Data Protection. ⸺ 🇵🇱 Rentgen to wtyczka dla Firefoxa, która automatycznie wizualizuje, jakie dane zostały wysłane do podmiotów trzecich przez odwiedzane strony. Pozwala wygenerować raport lub treść maila, który można wysłać do administratora strony i/lub UODO.
https://addons.mozilla.org/en-US/firefox/addon/rentgen Readme 18 MiB
2022-09-25 14:04:51 +02:00
Languages
TypeScript 82.6%
SCSS 12%
JavaScript 4.3%
HTML 1.1%