Rejestruj ruch HTTP i HTTPS w przeglądarce, odszyfrowując ten ostatni


14

Czy istnieje sposób, aby zapisać całą komunikację przeglądarki HTTP i HTTPS (w tym żądanie, odpowiedź, pełne nagłówki i treść) do plików na moim komputerze?

Komunikacja HTTPS musi być zapisana w postaci odszyfrowanej.

Idealnie szukałbym czegoś takiego jak rozszerzenie do przeglądarki Firefox lub Google Chrome.

Musi działać w systemie Linux.

Odpowiedzi:


4

HAR jest archiwum HTTP i jest dokładnie tym, co chcesz zapisać (zawiera niezaszyfrowane HTTPS).

Na szczęście jest to teraz podstawowa funkcja wszystkich głównych przeglądarek (nie było to, kiedy zadałeś pytanie). Nie potrzebujesz już rozszerzeń stron trzecich.

W przeglądarce Firefox (v41 +):

  • Uruchom Firefox Developer Tools w trybie sieci (menu w prawym górnym rogu> Deweloper> Sieć lub ctrl-shift-Q)
  • Odtwórz scenariusz docelowy
  • Zapisz zrzut, klikając siatkę prawym przyciskiem myszy i wybierając „Zapisz wszystko jako HAR”
  • Wyeksportuj zrzut do pliku HAR

Inna przeglądarka:

W najnowszej wersji wszystkich przeglądarek możesz łatwo zapisać HAR:

https://toolbox.googleapps.com/apps/har_analyzer/


6

HTTPFox to rozszerzenie Firefoksa, które wykona zadanie.

=== EDYCJA ===

Kliknij prawym przyciskiem myszy panel żądań i kliknij „Kopiuj wszystkie wiersze”. Następnie możesz zapisać go w dowolnym edytorze - na przykład w arkuszu kalkulacyjnym Openoffice. Zobacz obraz, który podałem.

Odpowiedź


Nie wydaje mi się Właśnie zainstalowałem HttpFox 0.8.9 i nie widzę żadnego sposobu na zapisanie całego zarejestrowanego ruchu w plikach. Pamiętaj, że mam tysiące żądań HTTP (S) i nie chcę klikać tysiąc razy, aby zapisać je wszystkie. Wyjaśnij, w jaki sposób chcesz zapisać wszystkie dane za pomocą HttpFox.
pkt

Tak myślę, szefie. Zobacz edycję mojej odpowiedzi.
slotishtype

1
@slotistype: Dziękujemy za obraz wyjaśniający. Nie wiedziałem wcześniej o kopiowaniu wszystkich wierszy , więc wypróbowałem to, co sugerowałeś. Znalezienie go za pomocą dostarczonego obrazu było bardzo łatwe. Niestety nie kopiuje treści żądania HTTP i odpowiedzi, więc nie jest to rozwiązanie mojego pytania.
pts

@pts my bad. Właśnie to zauważyłem. Nie znam innego narzędzia, chyba że zainstalujesz coś poza firefoxem. Powodzenia
slotishtype

FYI HttpFox ma zakładkę Treść , w której mogę przeglądać treść odpowiedzi - z wyjątkiem niektórych żądań, dla których jest napisane Error loading content (NS_ERROR_DOCUMENT_NOT_CACHED). Ale potrzebuję odpowiedzi wszystkich żądań, więc HttpFox nie może być rozwiązaniem tego problemu.
pkt.

3

Skrzypek jest zdecydowanie czymś, co należy rozważyć, nawet jeśli nie jest to rozszerzenie, ale osobna aplikacja.


1
Przepraszamy, Fiddler nie działa dla mnie. ponieważ wymaga Microsoft Windows. Mam Ubuntu. Rozszerzenie przeglądarki, jak pierwotnie zapytałem, prawdopodobnie działałoby na wielu systemach operacyjnych.
pkt

3

Znalazłem tę odpowiedź, chcąc to zrobić, i żadna z odpowiedzi tutaj mi nie odpowiadała, ponieważ musiałem zrzucić ciała odpowiedzi HTTPS, podobnie jak OP. Dla tych, którzy lądują tutaj tak jak ja, oto co znalazłem.

W końcu wylądowałem na mitmproxy , który nie jest rozszerzeniem Firefoksa, ale osiąga cel rejestrowania całego ruchu Firefox. To wszystko Python, więc zainstalowałem go z pip install mitmproxy- jeśli chcesz, użyj menedżera pakietów.

Zacząłem mitmproxyod wstępnej konfiguracji / debugowania, a następnie mitmdumpzrzuciłem strumień, gdy tylko go uruchomiłem i poprawiłem.

Właśnie ustawiłem Firefoksa na używanie 127.0.0.1:8080jako serwera proxy (8080 jest domyślnym portem mitmproxy) i widziałem cały mój ruch Firefoxa przechodzący przez mitmproxy. Aby włączyć ruch HTTPS, musisz zaakceptować certyfikat, który tworzy mitmproxy - po skonfigurowaniu proxy wystarczy przejść do „magicznego adresu” http://mitm.it w przeglądarce Firefox, kliknąć przycisk „Inne”, zaznaczyć pola zaufać certyfikatu i naciśnij OK.

Aby zrzucić niezaszyfrowaną treść odpowiedzi, musiałem użyć bardzo prostego skryptu wbudowanego :

from libmproxy.model import decoded

def response(context, flow):
    with decoded(flow.response):  # automatically decode gzipped responses.
        with open("body.txt","ab") as f:
            f.write(flow.response.content)

Gist tutaj - pobierz go jako save_response.pyi używaj z mitmdump -s save_response.py. Ciała odpowiedzi zaczną się gromadzić body.txt.

mitmproxy ma również wiele przydatnych filtrów , które możesz określić, aby mitmdump pobierał tylko to, czego potrzebujesz.


2

httpFox, httpScoop (tylko Mac) i httpWatch (IE, Firefox, tylko Windows) to wszystkie narzędzia, których używam do tego celu. Dodatkowo możesz także spróbować Fiddlera (jak wcześniej sugerowano), a jeśli używasz komputera Mac, możesz wypróbować Charlesa Proxy. Moim osobistym ulubionym jest httpWatch (możesz łatwo filtrować nagłówki, treść, adres URL itp.), Ale jest to kosztowne, więc może nie być opcją.

Możesz także przyjrzeć się projektowi HAR (HAR oznacza HTTP Archive) i jest standardowym podejściem do rejestrowania transakcji HTTP, nagłówków, treści itp. Wiele wymienionych narzędzi jest w stanie wyeksportować twoje pliki HAR do przeglądania za pomocą he HAR Viewer (z którym zapoznasz się, jeśli spojrzałeś na funkcję wodospadu w Firebug). W rzeczywistości możesz użyć Firebug do wygenerowania tych plików / dzienników również za pomocą NetExport.

FWIW httpScoop to dobra metoda debugowania / śledzenia ruchu HTTP w sieci bezprzewodowej, napisałem o tym jakiś czas temu: http://blog.adtools.co.uk/trace-debug-mobile-application-http- request-using-macos /


Które z wymienionych narzędzi mogą zapisać zrzut całej zarejestrowanej komunikacji na dysk? httpFox nie może. httpScoop jest przeznaczony tylko dla komputerów Mac i poprosiłem o rozwiązanie dla systemu Linux. httpWatch jest tylko dla systemu Windows i poprosiłem o rozwiązanie dla systemu Linux. Fiddler jest przeznaczony tylko dla systemu Windows i poprosiłem o rozwiązanie dla systemu Linux. Charles Proxy jest przeznaczony tylko dla komputerów Mac i poprosiłem o rozwiązanie dla systemu Linux. Dziękujemy za wzmiankę o Firebug + NetExport, które potencjalnie mogą działać.
pkt.

Firebug + NetExport działa jak urok dla mnie w systemie Linux. Eksportują ruch SSL niezaszyfrowany (tak jak chciałem). Z przyjemnością przyjmę twoją odpowiedź, ale najpierw usuń wszystkie inne propozycje (lub przenieś je do osobnej odpowiedzi).
pkt

1

Wireshark może być używany do przechwytywania pakietów sieciowych, w tym rzeczy w warstwie protokołu http, i zapisywania ich na komputerze. Może również przechwytywać informacje https, ale wątpię, czy można je skonfigurować tak, aby cokolwiek odszyfrować.


1
Dziękujemy za sugestię Wireshark, ale jest to bezużyteczne jako odpowiedź na moje pytanie, ponieważ nie zapisuje odszyfrowanego strumienia HTTPS.
pkt

2
Wireshark może odszyfrować ruch SSL od jednej z ostatnich wersji, jeśli masz certyfikat prywatnego serwera .
cweiske

1
Nie mam certyfikatu prywatnego serwera.
pkt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.