2013-06-14 17 views
6

Obserwujemy bardzo słabą wydajność podczas korzystania z MITMProxy w Pythonie. Przesyłamy niestandardowe żądania, korzystając z biblioteki Python requests.Słaba wydajność MITMProxy

Nasz program wykorzystuje tryb skryptu na MITMProxy, aby utworzyć niestandardowe żądanie na podstawie żądania od klienta, a następnie zwrócić odpowiedź. Tak więc, w zasadzie dla każdego żądania złożonego do proxy, nowy obiekt żądania jest budowany z requests, a następnie przekazywany, a następnie zwracany.

Jak mogę zwiększyć wydajność MITMProxy podczas korzystania z niego w celu przekazywania wniosków?

+0

to jest bardzo trudno odpowiedzieć bez znajomości co wydajność otrzymujesz teraz, a co wydajność spodziewasz. Wydaje się, że sugerujesz, że problem z wydajnością występuje w MITMProxy. Co zrobiłeś, aby to potwierdzić (np. Wypróbowałem generator minimalnego obciążenia o znanej wysokiej wydajności, aby wykluczyć spowolnienie w twoim kodzie lub bibliotekach, z których korzystasz). –

+0

Jaka jest tu miara "wydajności" (zgaduję czas reakcji)? MITMProxy nie jest przeznaczony do zapewnienia wysokiej wydajności rozwiązania. W rzeczywistości, przeczytaj i przeczytaj, jak działa MITMProxy (http://mitmproxy.org/doc/howmitmproxy.html), a dowiesz się, dlaczego oczekiwanie wysokiej wydajności MITMProxy nie jest sprawiedliwe. MITMProxy może wewnętrznie wykonać kilka żądań (szczególnie dla ruchu https), wydaje się, że dodajesz do tego kolejną warstwę obiektów żądania. –

Odpowiedz

6

naprawiłem ten problem z Juanem jakiś czas temu, ale po otrzymaniu podobnych pytań ostatnio, pozwól mi odejść rozwiązanie tutaj odniesienie:

mitmproxy posiada pojedynczy przepływ prymitywne, więc kiedy skrypt inline jest obsługa coś, inne żądania blokują. Skrypty można uruchamiać za pomocą dekoratora libmproxy.script.concurrent. Aby uzyskać więcej informacji, spójrz na docs.

(Pełne ujawnienie: Jestem autorem tej funkcji)