Przejdź do głównej zawartości

Reguły przepisywania i punkty przerwania

Przechwytywanie pozwala „patrzeć“, reguły i punkty przerwania pozwalają „zmieniać“. Trace Eagle czyni cię właścicielem twojego ruchu: zmieniaj żądania bez pisania kodu, używając prostych, bezpośrednich reguł typu wskaż-i-kliknij, aby automatycznie przepisać tysiące przepływów; albo użyj punktów przerwania, aby wstrzymać i edytować przepływy pojedynczo; tylko dla złożonej logiki, której reguły naprawdę nie są w stanie wyrazić, musisz sięgnąć po skrypty / wtyczki.


1. Reguły przepisywania (proste wskaż-i-kliknij, automatyczne zmiany)

Dział zatytułowany „1. Reguły przepisywania (proste wskaż-i-kliknij, automatyczne zmiany)”

Najgorszym sposobem na rozpoczęcie zmieniania żądań jest pisanie skryptu. Tutaj nie musisz: wybierz akcję ze ściągawki i wpisz wartość, i już masz regułę: prostą, intuicyjną, stosowaną w chwili, w której ją tworzysz.

Reguły są po jednej w wierszu, w postaci <match> <action>://<value> (na przykład *.example.com resHeaders://X-Debug: 1). Puste wiersze i komentarze # są ignorowane, każdy wiersz jest walidowany osobno, a zmiany są stosowane natychmiast po zapisaniu; reguły można organizować w nazwane grupy i przełączać grupa po grupie. Interfejs zawiera klikalną ściągawkę: kliknij raz, aby wstawić pasujący przykład, a potem po prostu edytuj wartość, bez zapamiętywania składni.

Reguły przepisywania: po lewej jedna reguła na wiersz, z obsługą grup i komentarzy, po prawej klikalna ściągawka akcji (przekierowanie / mock / edycja nagłówków / odcisk / punkt przerwania itp.)

  • Dokładna domena: traceeagle.com (może zawierać prefiks ścieżki traceeagle.com/path)
  • Poddomena z symbolem wieloznacznym: *.traceeagle.com (dopasowuje domenę główną plus wszystkie poddomeny)
  • Wyrażenie regularne wobec całego URL: regex://…
  • Dokładny pełny URL: $https://host/path
  • Port: :8080
  • Negacja: poprzedź dowolne dopasowanie znakiem !

Kierunek żądania

  • Przekierowanie / przekazanie: zmień docelowy adres IP połączenia (host), zmapuj na inny pełny URL (map-remote, może wskazywać na lokalny serwer deweloperski), przekieruj przez nadrzędne proxy http/socks5, albo przywróć charakterystyki żądań sieciowych klienta do takich, jak u standardowego klienta (wierne odwzorowanie).
  • Mockowanie fałszywych danych: mock://200 lub mock://200|<body>, zwraca gotową odpowiedź bez odpytywania serwera, ratunek, gdy frontend czeka na API backendu.
  • Edycja linii żądania / nagłówków: metoda, User-Agent, Referer, uwierzytelnianie Basic, X-Forwarded-For, Content-Type / kodowanie znaków, Cookie, scalanie parametrów zapytania, znajdź-i-zamień w URL.
  • Edycja treści żądania: pełne zastąpienie / znajdź-i-zamień / dopisanie na końcu / dopisanie na początku / zrzut do lokalnego pliku.

Kierunek odpowiedzi

  • Edycja statusu / nagłówków: zmiana kodu statusu, dodanie lub usunięcie dowolnego nagłówka odpowiedzi, Set-Cookie, otwarcie CORS jednym kliknięciem, wymuszenie pobrania jako załącznika, kontrola cache (wyłączenie cache lub ustawienie max-age), wyłączenie Cookie/kompresji/keep-alive, znajdź-i-zamień w wartościach nagłówków.
  • Edycja treści odpowiedzi: pełne zastąpienie / znajdź-i-zamień / dopisanie na końcu / dopisanie na początku / płytkie scalenie JSON.
  • Wstrzykiwanie według typu: tylko gdy Content-Type pasuje, wstrzyknij lub zastąp skrypty, style albo fragmenty w HTML / JS / CSS.

Sieć i protokół

  • Zrzut do pliku: oprócz treści żądania / odpowiedzi, do lokalnego pliku można jednym kliknięciem zrzucić także całe surowe żądanie / odpowiedź, na potrzeby archiwizacji albo analizy offline.
  • Symulacja słabej sieci: opóźnienie żądania / odpowiedzi (milisekundy), ograniczanie przepustowości (z gotowymi ustawieniami 2G / 3G / 4G).
  • Przepisywanie ramek WebSocket: zamiana old=>new według kierunku (w obie strony / klient do serwera / serwer do klienta).
  • Przepisywanie surowego TCP / UDP: zamiana według kierunku w strumieniach bajtów spoza HTTP / datagramach SOCKS5 UDP.

Wartości reguł mogą używać zmiennych dynamicznych, takich jak ${url} ${host} ${port} ${method} ${status} ${now} ${random} ${randomUUID} ${req.headers.X} ${res.headers.X}, plus własnych nazwanych wartości {name} (zdefiniuj wspólną wartość raz, odwołuj się do niej wszędzie). Nazwane wartości {name} są używane głównie w przepisywaniu żądań / odpowiedzi; wartości zamiany w przepisywaniu ramek WebSocket obsługują ${...}.


Dla przepływów wymagających precyzyjnej kontroli, przypadek po przypadku, użyj punktu przerwania, aby wstrzymać i wyświetlić edytor przed wysłaniem żądania lub przed powrotem odpowiedzi.

  • Wyzwalane regułą: użyj reguły breakpoint://req|res|both, aby precyzyjnie oznaczyć, które przepływy przechwytywać.
  • Globalny przełącznik przechwytywania: włącz przechwytywanie dla całej sesji, a następnie opcjonalnie zawęź zakres regułami filtrowania przechwytywania (filtruj według domeny / metody / etapu); bez reguł przechwytywane jest wszystko.
  • Etap żądania: metoda, URL (host podąża za URL-em), nagłówki, treść.
  • Etap odpowiedzi: kod statusu, nagłówki odpowiedzi, treść odpowiedzi.
  • Bezpośrednie odrzucenie: Abort odrzuca to żądanie / odpowiedź (klient otrzymuje błąd bramy).
  • Przepływy pasujące do wielu trafień ustawiają się w kolejce do obsłużenia: możesz wznowić każdy z nich (Resume), odrzucić (Abort) albo wznowić wszystkie naraz. Przepływy pozostawione długo bez obsługi są automatycznie wznawiane bez zmian, więc ruch nigdy nie utyka na stałe.

Dla logiki, której reguły nie są w stanie wyrazić, przekaż ją skryptowi lub wtyczce:

  • Skrypty JavaScript: zdefiniuj onRequest(req) / onResponse(resp) i edytuj pola bezpośrednio, aby wprowadzić zmiany. Wbudowane funkcje pomocnicze obejmują logowanie, synchroniczne wywołania wychodzące do innych usług, przechowywanie danych między żądaniami (na potrzeby liczników / buforowanych tokenów), kodowanie/dekodowanie Base64 i więcej.
  • Wychodzące wtyczki HTTP: użyj reguły plugin://name, aby przekazać żądanie / odpowiedź własnej usłudze wtyczki do przetworzenia (wywoływanej przez HTTP), a wtyczka zwróci przepisaną treść (albo zamockuje ją bezpośrednio). Niezależne od języka, odpowiednie dla zespołów do wdrożenia własnego przetwarzania w dowolnym języku.

Przepływ przechodzi kolejno przez: reguły żądania, skrypty żądania, wtyczki żądania, punkt przerwania żądania, przekazanie / mock, reguły odpowiedzi, skrypty odpowiedzi, wtyczki odpowiedzi, punkt przerwania odpowiedzi. Schemat jest prosty: najpierw automatyczne reguły, potem skrypty, potem wtyczki, a dopiero na końcu ręcznie wkracza punkt przerwania, każdy robi swoje, nie wchodząc sobie w drogę.


Powrót do Przechwytywanie przez proxy · Powiązane: Komponowanie i odtwarzanie