MemoryError: произошел сбой mitmproxy

MemoryError: произошел сбой mitmproxy

Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: MemoryError
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: mitmproxy has crashed!
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: Please lodge a bug report at: https://github.com/mitmproxy/mitmproxy
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: 192.168.50.117:60549: Traceback (most recent call last):
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: File "/usr/local/lib/python3.6/site-packages/mitmproxy/proxy/server.py", line 121, in handle
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: root_layer()
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: File "/usr/local/lib/python3.6/site-packages/mitmproxy/proxy/modes/transparent_proxy.py", line 19, in call
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: layer()
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: File "/usr/local/lib/python3.6/site-packages/mitmproxy/proxy/protocol/tls.py", line 285, in call
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: layer()
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: File "/usr/local/lib/python3.6/site-packages/mitmproxy/proxy/protocol/http1.py", line 83, in call
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: layer()
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: File "/usr/local/lib/python3.6/site-packages/mitmproxy/proxy/protocol/http.py", line 190, in call
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: if not self._process_flow(flow):
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: File "/usr/local/lib/python3.6/site-packages/mitmproxy/proxy/protocol/http.py", line 397, in _process_flow
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: self.read_response_body(f.request, f.response)
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: MemoryError
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: Exception in response:[Errno 12] Cannot allocate memory
Jul 16 13:02:40 cubedev-PowerEdge-R330 bash[21256]: message repeated 37 times: [ Exception in response:[Errno 12] Cannot allocate memory]

Действия для воспроизведения поведения:

Проблема наблюдается при подключении 2 клиентов к mitmdump. Сбой наблюдается в течение 10 минут

Информация о системе

mitmdump --version Mitmproxy: 5.1.1 Python: 3.6.0 OpenSSL: OpenSSL 1.1.1g 21 апреля 2020 г. Платформа: Linux-4.15.0-45-generic-x86_64-with-debian-stretch-sid


person Nikhil Dinesh    schedule 16.07.2020    source источник


Ответы (1)


mitmproxy обрабатывает все запросы/ответы в памяти, поэтому, если вы делаете большую загрузку, mitmproxy требует как минимум такого же объема оперативной памяти.

Вы можете настроить mitmproxy для потоковой передачи (прямой передачи) больших запросов и тел ответов, используя опцию stream_large_bodies:

mitmproxy --set stream_large_bodies=10m

Это обеспечивает потоковую передачу всех тел размером более 10 МБ (AFAIR, потоковое тело не будет обрабатываться каким-либо фильтром и также не захватывается).

Кроме того, вы должны сохранить собранные запросы/ответы, используя опцию -w.

person Robert    schedule 22.07.2020
comment
Спасибо Роберт за ваш ответ. Позвольте мне сначала попробовать это, и я придумаю результаты. - person Nikhil Dinesh; 26.07.2020
comment
Это может быть обходным путем для утечки памяти MITM. По крайней мере, размер оперативной памяти не будет расти быстрее. Спасибо, Роберт за ответ. - person Nikhil Dinesh; 28.07.2020