Nagłówki żądań HTTP na twoich warunkach
Zdefiniuj regułę — nazwa nagłówka, wartość, wzorzec adresu URL — a Chrome zastosuje ją do pasujących żądań. W trakcie pracy włączaj i wyłączaj pojedyncze reguły albo wyłącz wszystko naraz głównym przełącznikiem. Twoje reguły zostają na miejscu; nic nie jest usuwane.
Wymaga Chrome lub przeglądarki opartej na Chromium
Jak naprawdę wygląda reguła
Trzy pola. To cały model: bez skryptów, bez pliku konfiguracyjnego, bez proxy, które trzeba utrzymywać.
X-Debug-Mode: verbose — Wzorzec adresu URL: https://staging.example.com/*
Authorization: Bearer eyJhbGciOi… — Wzorzec adresu URL: https://api.example.com/v2/*
X-Feature-Flag: new-checkout — Wzorzec adresu URL: https://*.example.com/*
Każdy wiersz to jedna reguła. Przełącznik po prawej wyłącza tylko tę jedną; główny przełącznik w okienku wyłącza wszystkie reguły naraz, zostawiając je nienaruszone.
Co robi
- Dodawanie i nadpisywanie nagłówków — Ustaw nagłówek, którego nie ma, albo zastąp ten, który przeglądarka i tak by wysłała. Z punktu widzenia reguły to ta sama operacja.
- Dopasowanie wzorcem adresu URL — Ogranicz każdą regułę dokładnie do tych źródeł i ścieżek, których chcesz, żeby nagłówek przeznaczony tylko na staging nigdy nie trafił na produkcję.
- Przełącznik przy każdej regule — Wyłącz jedną regułę, żeby sprawdzić przypuszczenie, i włącz ją z powrotem. Bez edycji, bez przepisywania, bez zakomentowanych wierszy.
- Główny przełącznik — Jedna kontrolka wyłącza wszystkie reguły naraz — przydatne tuż przed odtworzeniem błędu na czystym stanie. Twoje reguły nie są usuwane.
- Reguły, które idą z tobą — Reguły są zapisywane w synchronizowanym magazynie Chrome, więc przetrwają ponowne uruchomienie i pojawią się na pozostałych komputerach, na których jesteś zalogowany do tego samego profilu Chrome.
- Manifest V3 — Zbudowane na declarativeNetRequest, więc reguły stosuje sam Chrome. Rozszerzenie nie staje na drodze twojego ruchu i nie czyta żądań.
O uprawnieniach
Chrome ostrzeże cię, że to rozszerzenie może «odczytywać i zmieniać wszystkie twoje dane na wszystkich stronach». To ostrzeżenie powstaje na podstawie uprawnień, o które rozszerzenie prosi, a nie tego, co faktycznie robi. Oto każde uprawnienie, o które prosi, i dlaczego.
- declarativeNetRequest — API, które stosuje twoje reguły nagłówków. Chrome ocenia reguły wewnętrznie i sam modyfikuje żądanie — rozszerzenie nigdy nie otrzymuje treści twoich żądań.
- storage — Zapisuje twoje reguły, żeby przetrwały ponowne uruchomienie przeglądarki i synchronizowały się między profilami Chrome, na które jesteś zalogowany. Zapisywane są wyłącznie twoje reguły.
- <all_urls> — To właśnie ono wywołuje straszące ostrzeżenie. To ty decydujesz, do jakich adresów URL pasują twoje reguły, więc zbioru hostów nie da się znać z góry — rozszerzenie musi móc działać na każdym adresie, jaki wpiszesz do reguły. Zawężenie tego oznaczałoby dostarczanie sztywnej listy witryn i odmowę działania wszędzie indziej.
Czego nie robi
- Nie czyta treści stron ani DOM.
- Nie czyta ani nie zapisuje twojej historii przeglądania.
- Nie zbiera analityki, danych o użyciu ani żadnych identyfikatorów.
- Nie wysyła własnych żądań sieciowych i nie ładuje zdalnego kodu.
- Nie wysyła niczego na nasze serwery ani do osób trzecich.
Ograniczenia, które warto znać przed instalacją
Lepiej przeczytać to tutaj, niż odkryć w połowie debugowania.
- Tylko ta przeglądarka — Reguły dotyczą żądań wysyłanych przez tę przeglądarkę. Wywołania między serwerami, curl, Postman, twój runner CI i wychodzące żądania twojego backendu pozostają nietknięte.
- Tylko nagłówki żądań — Nagłówki odpowiedzi nie są modyfikowane. Jeśli musisz zmienić to, co wraca z serwera, to nie jest narzędzie do tego.
- Niektórych nagłówków nie da się ustawić — Chrome chroni szereg nagłówków przed modyfikacją przez rozszerzenia. Reguły wycelowane w nie są po cichu odrzucane: bez błędu, bez ostrzeżenia. Jeśli reguła wygląda poprawnie, a nic nie robi, zwykle to jest powód.
Pytania
Czy zbiera jakiekolwiek dane o mnie?
Nie. Żadnej analityki, telemetrii, identyfikatorów ani SDK reklamowych czy atrybucyjnych. Rozszerzenie nie wysyła własnych żądań sieciowych. Jedyne, co przechowuje, to tworzone przez ciebie reguły, w magazynie samego Chrome.
Dlaczego potrzebuje dostępu do wszystkich stron?
Ponieważ to ty wybierasz, do jakich adresów URL pasują twoje reguły, zbiór hostów nie jest znany z góry. To właśnie dzięki temu uprawnieniu reguła napisana dziś zadziała na adresie, o którym nigdy nie słyszeliśmy. Rozszerzenie nie czyta treści stron ani historii przeglądania.
Czy może modyfikować nagłówki odpowiedzi?
Nie — tylko nagłówki żądań. Modyfikowanie odpowiedzi to inna możliwość, której to rozszerzenie nie ma.
Dlaczego moja reguła nic nie robi?
Zwykłą przyczyną jest to, że Chrome chroni akurat ten nagłówek przed ustawianiem przez rozszerzenia i po cichu odrzuca zmianę. Jeśli nie, sprawdź, czy wzorzec adresu URL naprawdę pasuje do żądania, czy przełącznik reguły jest włączony i czy główny przełącznik nie jest wyłączony.
Czy wpływa na żądania wysyłane poza przeglądarką?
Nie. Dotyczy wyłącznie żądań wysyłanych przez tę przeglądarkę. Wszystko, co idzie między serwerami — w tym żądania twojego własnego backendu — wychodzi bez zmian.
Gdzie przechowywane są moje reguły?
W chrome.storage.sync, czyli w magazynie samego Chrome. To znaczy, że przetrwają ponowne uruchomienia i zsynchronizują się na pozostałe komputery, na których jesteś zalogowany do tego samego profilu Chrome. Nigdy nie są wysyłane do nas.