An interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers.
This report summarizes scanner evidence for mitmproxy/mitmproxy, a Python project with 45,397 GitHub stars. SynthScan examined 146,010 lines of code across 1018 source files, recording 842 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 7.8 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 530 finding(s).
Are imports declared and package/API names verified? 129 finding(s).
Are wrappers, guards, and repeated structures necessary? 523 finding(s).
Which changes need focused human review? 842 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 842 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/filename_matching.py | 8 | def check_src_files_have_test(): | CODE |
| LOW | test/filename_matching.py | 33 | def check_test_files_have_src(): | CODE |
| LOW | test/mitmproxy/test_command.py | 687 | def test_verify_arg_signature(): | CODE |
| LOW | test/mitmproxy/test_flow.py | 119 | async def test_load_http_flow_reverse(self): | CODE |
| LOW | test/mitmproxy/test_command_lexer.py | 23 | def test_partial_quoted_string(test_input, valid): | CODE |
| LOW | test/mitmproxy/test_log.py | 14 | def test_dont_pick_up_mutations(): | CODE |
| LOW | test/mitmproxy/test_http.py | 197 | def test_host_update_also_updates_header(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 308 | def test_pretty_url_authority(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 350 | def test_get_cookies_withequalsign(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 559 | def test_get_cookies_with_parameters(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 574 | def test_get_cookies_no_value(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 585 | def test_get_cookies_twocookies(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 945 | def test_content_length_update(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 957 | def test_content_length_not_added_for_response_with_transfer_encoding(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 995 | def test_update_content_length_header(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 1077 | def test_decode_noop_on_empty_content(self): | CODE |
| LOW | test/mitmproxy/test_certs.py | 66 | def test_create_no_common_name(self, tstore): | CODE |
| LOW | test/mitmproxy/test_certs.py | 244 | def test_aki_falls_back_when_issuer_has_no_ski(self): | CODE |
| LOW | test/mitmproxy/test_certs.py | 394 | def test_from_store_with_passphrase(self, tdata, tstore): | CODE |
| LOW | test/mitmproxy/test_certs.py | 416 | def test_add_cert_with_no_private_key(self, tdata, tstore): | CODE |
| LOW | test/mitmproxy/test_certs.py | 425 | def test_add_cert_private_public_mismatch(self, tdata, tstore): | CODE |
| LOW | test/mitmproxy/test_certs.py | 445 | def test_add_cert_chain_invalid(self, tdata, tstore, caplog): | CODE |
| LOW | test/mitmproxy/test_certs.py | 517 | def test_crl_distribution_points(self, tdata, filename, crls): | CODE |
| LOW | test/mitmproxy/contentviews/test___init__.py | 85 | def test_view_failure_explicit(self): | CODE |
| LOW | test/mitmproxy/contentviews/test__utils.py | 44 | def test_make_metadata_websocket(self): | CODE |
| LOW | test/mitmproxy/contentviews/test__utils.py | 62 | def test_get_data_regular_content(self): | CODE |
| LOW | test/mitmproxy/contentviews/test__utils.py | 77 | def test_get_data_http_decode_error(self): | CODE |
| LOW | test/mitmproxy/contentviews/test__utils.py | 112 | def test_byte_pairs_to_str_pairs(): | CODE |
| LOW | test/mitmproxy/contentviews/test__api.py | 59 | def test_syntaxhighlight_matches(self): | CODE |
| LOW | test/mitmproxy/contentviews/test__registry.py | 9 | def test_register_triggers_on_change(): | CODE |
| LOW | test/mitmproxy/contentviews/test__registry.py | 20 | def test_replace_view_triggers_on_change_and_logs(caplog): | CODE |
| LOW | test/mitmproxy/contentviews/test__registry.py | 50 | def test_get_view_unknown_name(caplog): | CODE |
| LOW | test/mitmproxy/contentviews/test__registry.py | 63 | def test_render_priority_error(caplog): | CODE |
| LOW | test/mitmproxy/tools/test_main.py | 35 | def test_options_includes_addon_options(tdata, capsys): | CODE |
| LOW | test/mitmproxy/tools/test_main.py | 49 | def test_options_without_scripts(capsys): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 49 | def test_all_handlers_have_auth(): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 114 | def test_javascript_mime_type(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 146 | def test_flows_dump_filter_error(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 257 | def test_flow_update_http_version_only(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 308 | def test_flow_content_returns_raw_content_when_decoding_fails(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 335 | def test_update_flow_content_multipart(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 374 | def test_flow_contentview_websocket(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 461 | def test_websocket_filter_application(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 543 | def test_websocket_filter_command_error(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 593 | def test_login_with_token_header(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 598 | def test_login_with_token_param(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 603 | def test_login_with_malformed_auth_header(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 607 | def test_login_with_invalid_auth_header(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 616 | def test_unauthorized_websocket(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 626 | def test_auth_cookie_port_suffix_modification(self): | CODE |
| LOW | test/mitmproxy/tools/console/test_flowview.py | 40 | async def test_content_missing_returns_error(console): | CODE |
| LOW | test/mitmproxy/tools/console/test_flowview.py | 58 | async def test_empty_content_request_and_response(console): | CODE |
| LOW | test/mitmproxy/tools/console/test_flowview.py | 85 | async def test_content_view_fullcontents_true_uses_unlimited_limit(console): | CODE |
| LOW | test/mitmproxy/tools/console/test_statusbar.py | 62 | def test_shorten_message_narrow(): | CODE |
| LOW | test/mitmproxy/tools/console/test_statusbar.py | 67 | async def test_console_quickhelp_option(console, monkeypatch): | CODE |
| LOW | test/mitmproxy/tools/console/test_statusbar.py | 86 | async def test_console_quickhelp_toggle(console, monkeypatch): | CODE |
| LOW | test/mitmproxy/tools/console/test_statusbar.py | 115 | async def test_console_quickhelp_hotkey(console): | CODE |
| LOW | test/mitmproxy/tools/console/test_statusbar.py | 126 | async def test_console_quickhelp_prompts_visible_when_disabled(console, monkeypatch): | CODE |
| LOW | test/mitmproxy/tools/console/test_integration.py | 15 | def test_keybindings_home_end(console): | CODE |
| LOW | test/mitmproxy/tools/console/test_contentview.py | 22 | async def test_contentview_flowview(console, monkeypatch): | CODE |
| 276 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/mitmproxy/test_optmanager.py | 165 | except exceptions.OptionsError: | CODE |
| HIGH | test/mitmproxy/tools/web/test_app.py | 582 | except Exception: | CODE |
| HIGH | test/mitmproxy/net/dns/test_https_records.py | 86 | except struct.error: | CODE |
| HIGH | test/mitmproxy/proxy/layers/test_tls_fuzz.py | 25 | except ValueError: | CODE |
| HIGH | test/mitmproxy/proxy/layers/test_dns.py | 33 | except struct.error: | CODE |
| HIGH | test/mitmproxy/proxy/layers/test_dns.py | 46 | except struct.error: | CODE |
| HIGH | test/mitmproxy/addons/test_proxyserver.py | 120 | except asyncio.CancelledError: | CODE |
| HIGH | test/mitmproxy/io/test_io.py | 28 | except exceptions.FlowReadException: | CODE |
| HIGH | test/mitmproxy/io/test_io.py | 40 | except exceptions.FlowReadException: | CODE |
| HIGH | mitmproxy/command.py | 181 | except Exception: | CODE |
| HIGH | mitmproxy/version.py | 39 | except Exception: | CODE |
| HIGH | mitmproxy/http.py | 976 | except ValueError: | CODE |
| HIGH | mitmproxy/http.py | 1197 | except OSError: # pragma: no cover | CODE |
| HIGH | mitmproxy/contentviews/_view_graphql.py | 66 | except ValueError: | CODE |
| HIGH | mitmproxy/tools/web/webaddons.py | 153 | except webbrowser.Error: | CODE |
| HIGH | mitmproxy/net/free_port.py | 20 | except OSError: | CODE |
| HIGH | mitmproxy/net/http/cookies.py | 339 | except ValueError: | CODE |
| HIGH | mitmproxy/net/dns/domain_names.py | 165 | except struct.error: | CODE |
| HIGH | mitmproxy/net/dns/https_records.py | 56 | except ValueError: | CODE |
| HIGH | mitmproxy/proxy/server.py | 604 | except KeyboardInterrupt: | CODE |
| HIGH | mitmproxy/proxy/server.py | 323 | except OSError: | CODE |
| HIGH | mitmproxy/proxy/server.py | 347 | except KeyError: # pragma: no cover | CODE |
| HIGH | mitmproxy/proxy/mode_servers.py | 248 | except OSError: # pragma: no cover | CODE |
| HIGH | mitmproxy/proxy/layers/tls.py | 455 | except (SSL.ZeroReturnError, SSL.SysCallError): | CODE |
| HIGH | mitmproxy/proxy/layers/http/__init__.py | 1039 | except KeyError: | CODE |
| HIGH | mitmproxy/coretypes/serializable.py | 106 | except dataclasses.FrozenInstanceError: | CODE |
| HIGH | mitmproxy/platform/windows.py | 113 | except (EOFError, OSError): | CODE |
| HIGH | mitmproxy/addons/next_layer.py | 315 | except ValueError: | CODE |
| HIGH | mitmproxy/addons/next_layer.py | 326 | except ValueError: | CODE |
| HIGH | mitmproxy/addons/next_layer.py | 336 | except ValueError: | CODE |
| HIGH | mitmproxy/addons/proxyauth.py | 103 | except Exception: | CODE |
| HIGH | mitmproxy/addons/view.py | 656 | except ValueError: | CODE |
| HIGH | mitmproxy/addons/clientplayback.py | 171 | except asyncio.CancelledError: | CODE |
| HIGH | mitmproxy/utils/typecheck.py | 28 | except TypeError: | CODE |
| HIGH | mitmproxy/utils/human.py | 42 | except ValueError: | CODE |
| HIGH | mitmproxy/utils/debug.py | 94 | except RuntimeError: | CODE |
| HIGH | mitmproxy/utils/strutils.py | 159 | except ValueError: | CODE |
| HIGH | release/selftest.py | 22 | except KeyError: | CODE |
| HIGH | examples/contrib/webscanner_helper/mapping.py | 138 | except KeyError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/tools/console/test_quickhelp.py | 44 | CODE | |
| LOW | test/mitmproxy/proxy/tutils.py | 193 | CODE | |
| LOW | test/mitmproxy/proxy/tutils.py | 324 | CODE | |
| LOW | test/mitmproxy/proxy/test_tunnel.py | 24 | CODE | |
| LOW | test/mitmproxy/proxy/layers/http/test_http_fuzz.py | 430 | CODE | |
| LOW | test/mitmproxy/proxy/layers/http/test_http.py | 541 | CODE | |
| LOW | test/mitmproxy/proxy/layers/quic/test__stream_layers.py | 64 | CODE | |
| LOW | mitmproxy/addonmanager.py | 243 | CODE | |
| LOW | mitmproxy/command.py | 174 | CODE | |
| LOW | mitmproxy/flowfilter.py | 383 | CODE | |
| LOW | mitmproxy/flowfilter.py | 422 | CODE | |
| LOW | mitmproxy/flowfilter.py | 453 | CODE | |
| LOW | mitmproxy/certs.py | 284 | CODE | |
| LOW | mitmproxy/types.py | 414 | CODE | |
| LOW | mitmproxy/optmanager.py | 564 | CODE | |
| LOW | mitmproxy/optmanager.py | 364 | CODE | |
| LOW | mitmproxy/optmanager.py | 412 | CODE | |
| LOW | mitmproxy/connection.py | 147 | CODE | |
| LOW | mitmproxy/http.py | 1174 | CODE | |
| LOW | mitmproxy/contentviews/_view_xml_html.py | 104 | CODE | |
| LOW | mitmproxy/contentviews/_view_xml_html.py | 209 | CODE | |
| LOW | mitmproxy/contentviews/_view_http3.py | 25 | CODE | |
| LOW | mitmproxy/contentviews/_view_mqtt.py | 60 | CODE | |
| LOW | mitmproxy/contentviews/_view_mqtt.py | 87 | CODE | |
| LOW | mitmproxy/contentviews/_view_mqtt.py | 193 | CODE | |
| LOW | mitmproxy/contentviews/_view_image/view.py | 21 | CODE | |
| LOW | mitmproxy/contentviews/_view_image/image_parser.py | 13 | CODE | |
| LOW | mitmproxy/contentviews/_view_image/image_parser.py | 63 | CODE | |
| LOW | mitmproxy/tools/main.py | 45 | CODE | |
| LOW | mitmproxy/tools/main.py | 56 | CODE | |
| LOW | mitmproxy/tools/web/app.py | 82 | CODE | |
| LOW | mitmproxy/tools/web/app.py | 580 | CODE | |
| LOW | mitmproxy/tools/web/app.py | 719 | CODE | |
| LOW | mitmproxy/tools/web/static_viewer.py | 51 | CODE | |
| LOW | mitmproxy/tools/console/options.py | 165 | CODE | |
| LOW | mitmproxy/tools/console/statusbar.py | 157 | CODE | |
| LOW | mitmproxy/tools/console/window.py | 285 | CODE | |
| LOW | mitmproxy/tools/console/searchable.py | 25 | CODE | |
| LOW | mitmproxy/tools/console/palettes.py | 97 | CODE | |
| LOW | mitmproxy/tools/console/flowview.py | 68 | CODE | |
| LOW | mitmproxy/tools/console/common.py | 245 | CODE | |
| LOW | mitmproxy/tools/console/common.py | 274 | CODE | |
| LOW | mitmproxy/tools/console/common.py | 313 | CODE | |
| LOW | mitmproxy/tools/console/common.py | 479 | CODE | |
| LOW | mitmproxy/tools/console/common.py | 726 | CODE | |
| LOW | mitmproxy/tools/console/quickhelp.py | 52 | CODE | |
| LOW | mitmproxy/tools/console/consoleaddons.py | 395 | CODE | |
| LOW | mitmproxy/tools/console/consoleaddons.py | 468 | CODE | |
| LOW | mitmproxy/tools/console/commandexecutor.py | 14 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/base.py | 81 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/base.py | 329 | CODE | |
| LOW | mitmproxy/tools/console/commander/commander.py | 76 | CODE | |
| LOW | mitmproxy/tools/console/commander/commander.py | 177 | CODE | |
| LOW | mitmproxy/net/http/cookies.py | 67 | CODE | |
| LOW | mitmproxy/net/http/cookies.py | 139 | CODE | |
| LOW | mitmproxy/net/http/multipart.py | 11 | CODE | |
| LOW | mitmproxy/net/http/multipart.py | 48 | CODE | |
| LOW | mitmproxy/net/http/validate.py | 66 | CODE | |
| LOW | mitmproxy/net/http/headers.py | 39 | CODE | |
| LOW | mitmproxy/net/http/http1/read.py | 166 | CODE | |
| 81 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/conftest.py | 1 | CODE | |
| LOW | test/mitmproxy/coretypes/test_serializable.py | 1 | CODE | |
| LOW | test/mitmproxy/addons/test_proxyserver.py | 1 | CODE | |
| LOW | test/mitmproxy/addons/test_next_layer.py | 1 | CODE | |
| LOW | test/helper_tools/gen_sample_flows.py | 14 | CODE | |
| LOW | mitmproxy/dns.py | 1 | CODE | |
| LOW | mitmproxy/log.py | 1 | CODE | |
| LOW | mitmproxy/flow.py | 1 | CODE | |
| LOW | mitmproxy/types.py | 16 | CODE | |
| LOW | mitmproxy/optmanager.py | 1 | CODE | |
| LOW | mitmproxy/ctx.py | 1 | CODE | |
| LOW | mitmproxy/contentviews/_api.py | 1 | CODE | |
| LOW | mitmproxy/contentviews/__init__.py | 18 | CODE | |
| LOW | mitmproxy/contentviews/__init__.py | 20 | CODE | |
| LOW | mitmproxy/contentviews/__init__.py | 22 | CODE | |
| LOW | mitmproxy/contentviews/_registry.py | 1 | CODE | |
| LOW | mitmproxy/contentviews/_compat.py | 1 | CODE | |
| LOW | mitmproxy/contentviews/_view_image/__init__.py | 1 | CODE | |
| LOW | mitmproxy/tools/main.py | 1 | CODE | |
| LOW | mitmproxy/tools/web/webaddons.py | 1 | CODE | |
| LOW | mitmproxy/tools/web/__init__.py | 1 | CODE | |
| LOW | mitmproxy/tools/web/app.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/options.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/signals.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/statusbar.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/palettes.py | 6 | CODE | |
| LOW | mitmproxy/tools/console/__init__.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/flowlist.py | 5 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 2 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 3 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 4 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 5 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 6 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 7 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 8 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 9 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 10 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 11 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 12 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 13 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/base.py | 16 | CODE | |
| LOW | mitmproxy/net/local_ip.py | 1 | CODE | |
| LOW | mitmproxy/net/http/multipart.py | 1 | CODE | |
| LOW | mitmproxy/net/http/url.py | 1 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 1 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 2 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 3 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 4 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 5 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 6 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 7 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 8 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 9 | CODE | |
| LOW | mitmproxy/proxy/mode_servers.py | 13 | CODE | |
| LOW | mitmproxy/proxy/context.py | 7 | CODE | |
| LOW | mitmproxy/proxy/mode_specs.py | 23 | CODE | |
| LOW | mitmproxy/proxy/layers/__init__.py | 1 | CODE | |
| LOW | mitmproxy/proxy/layers/__init__.py | 2 | CODE | |
| LOW | mitmproxy/proxy/layers/__init__.py | 3 | CODE | |
| 54 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/conftest.py | 55 | def set_level(self, level: int | str, logger: str | None = None) -> None: | CODE |
| LOW | test/mitmproxy/proxy/tutils.py | 464 | def set_layer(next_layer: layer.NextLayer) -> None: | CODE |
| LOW | test/mitmproxy/proxy/layers/quic/test__stream_layers.py | 463 | def set_layer(next_layer: layer.NextLayer) -> None: | CODE |
| LOW | mitmproxy/addonmanager.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/dns.py | 580 | def set_state(self, state: serializable.State) -> None: | CODE |
| LOW | mitmproxy/certs.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/flow.py | 161 | def set_state(self, state: serializable.State) -> None: | CODE |
| LOW | mitmproxy/flow.py | 285 | __all__ = [ | CODE |
| LOW | mitmproxy/tcp.py | 64 | def set_state(self, state: serializable.State) -> None: | CODE |
| LOW | mitmproxy/tcp.py | 72 | __all__ = [ | CODE |
| LOW | mitmproxy/connection.py | 359 | __all__ = ["Connection", "Client", "Server", "ConnectionState"] | CODE |
| LOW | mitmproxy/udp.py | 61 | def set_state(self, state: serializable.State) -> None: | CODE |
| LOW | mitmproxy/udp.py | 69 | __all__ = [ | CODE |
| LOW | mitmproxy/master.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/http.py | 360 | def set_content(self, value: bytes | None) -> None: | CODE |
| LOW | mitmproxy/http.py | 407 | def set_text(self, text: str | None) -> None: | CODE |
| LOW | mitmproxy/http.py | 767 | def _update_host_and_authority(self) -> None: | CODE |
| LOW | mitmproxy/http.py | 941 | def _set_urlencoded_form(self, form_data: Sequence[tuple[str, str]]) -> None: | CODE |
| LOW | mitmproxy/http.py | 980 | def _set_multipart_form(self, value: list[tuple[bytes, bytes]]) -> None: | CODE |
| LOW | mitmproxy/http.py | 1242 | def set_state(self, state: serializable.State) -> None: | CODE |
| LOW | mitmproxy/http.py | 1289 | __all__ = [ | CODE |
| LOW | mitmproxy/websocket.py | 84 | def set_state(self, state: WebSocketMessageState) -> None: | CODE |
| LOW | mitmproxy/contentviews/_api.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/contentviews/__init__.py | 48 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/contentviews/__init__.py | 188 | __all__ = [ | CODE |
| LOW | mitmproxy/contentviews/_registry.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/contentviews/_view_image/__init__.py | 3 | __all__ = ["image"] | CODE |
| LOW | mitmproxy/tools/web/webaddons.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/tools/web/__init__.py | 3 | __all__ = ["master"] | CODE |
| LOW | mitmproxy/tools/web/master.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/tools/web/app.py | 63 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/tools/web/app.py | 467 | def update_filter(self, name: str, expr: str) -> None: | CODE |
| LOW | mitmproxy/tools/console/options.py | 235 | def update_help_text(self, txt: str) -> None: | CODE |
| LOW | mitmproxy/tools/console/__init__.py | 3 | __all__ = ["master"] | CODE |
| LOW | mitmproxy/tools/console/master.py | 192 | def set_palette(self, *_) -> None: | CODE |
| LOW | mitmproxy/tools/console/consoleaddons.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/tools/console/flowlist.py | 107 | def set_flowlist_layout(self, *_) -> None: | CODE |
| LOW | mitmproxy/tools/console/commands.py | 66 | def set_focus(self, index: int) -> None: | CODE |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 15 | __all__ = [ | CODE |
| LOW | mitmproxy/tools/console/grideditor/base.py | 153 | def set_current_value(self, val) -> None: | CODE |
| LOW | mitmproxy/tools/console/grideditor/base.py | 448 | def set_data_update(self, vals, flow) -> None: | CODE |
| LOW | mitmproxy/tools/console/commander/commander.py | 71 | def set_text(self, text: str) -> None: | CODE |
| LOW | mitmproxy/net/encoding.py | 242 | __all__ = ["encode", "decode"] | CODE |
| LOW | mitmproxy/net/http/validate.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/net/http/http1/__init__.py | 11 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/server.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 58 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/proxy/layers/__init__.py | 14 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/http/_http2.py | 707 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/http/_http3.py | 306 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/http/_http_h2.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/proxy/layers/http/_http_h3.py | 317 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/http/_events.py | 154 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/http/_http1.py | 499 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/quic/__init__.py | 21 | __all__ = [ | CODE |
| LOW | mitmproxy/coretypes/multidict.py | 87 | def set_all(self, key: KT, values: list[VT]) -> None: | CODE |
| LOW | mitmproxy/coretypes/serializable.py | 98 | def set_state(self, state: State) -> None: | CODE |
| LOW | mitmproxy/platform/__init__.py | 40 | __all__ = ["original_addr", "init_transparent_mode"] | CODE |
| LOW | mitmproxy/platform/windows.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/addons/next_layer.py | 60 | logger = logging.getLogger(__name__) | CODE |
| 27 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/tools/web/test_app.py | 582 | except Exception: | CODE |
| MEDIUM | test/mitmproxy/tools/web/test_app.py | 564 | def test_process_list(self): | CODE |
| LOW | test/mitmproxy/tools/console/test_defaultkeys.py | 19 | except Exception as e: | CODE |
| LOW | test/mitmproxy/proxy/tutils.py | 205 | except Exception: | CODE |
| LOW | test/mitmproxy/proxy/tutils.py | 224 | except Exception: | CODE |
| LOW | test/mitmproxy/addons/test_clientplayback.py | 39 | except Exception as e: | CODE |
| LOW | test/helper_tools/hunt_memory_leaks.py | 58 | except Exception: | CODE |
| LOW | mitmproxy/addonmanager.py | 50 | except Exception: | CODE |
| MEDIUM | mitmproxy/addonmanager.py | 45 | def safecall(): | CODE |
| LOW | mitmproxy/command.py | 181 | except Exception: | CODE |
| LOW | mitmproxy/version.py | 39 | except Exception: | CODE |
| LOW | mitmproxy/dns.py | 168 | except Exception: | CODE |
| LOW | mitmproxy/dns.py | 210 | except Exception: | CODE |
| MEDIUM | mitmproxy/dns.py | 153 | def _data_json(self) -> str | HTTPSRecordJSON: | CODE |
| LOW | mitmproxy/flowfilter.py | 228 | except Exception: | CODE |
| LOW | mitmproxy/contentviews/__init__.py | 89 | except Exception as e: | CODE |
| LOW | mitmproxy/contentviews/_registry.py | 58 | except Exception: | CODE |
| LOW | mitmproxy/contentviews/_view_http3.py | 36 | except Exception as e: | CODE |
| LOW | mitmproxy/contentviews/_view_http3.py | 42 | except Exception as e: | CODE |
| LOW | mitmproxy/tools/web/app.py | 322 | except Exception as e: | CODE |
| LOW | mitmproxy/tools/web/app.py | 495 | except Exception as e: | CODE |
| LOW | mitmproxy/tools/web/app.py | 789 | except Exception as e: | CODE |
| LOW | mitmproxy/tools/web/app.py | 813 | except Exception as err: | CODE |
| LOW | mitmproxy/tools/web/app.py | 873 | except Exception: | CODE |
| LOW | mitmproxy/tools/console/master.py | 149 | except Exception: | CODE |
| LOW | mitmproxy/tools/console/master.py | 184 | except Exception: | CODE |
| LOW | mitmproxy/net/encoding.py | 75 | except Exception as e: | CODE |
| LOW | mitmproxy/net/encoding.py | 133 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/server.py | 436 | except Exception: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 132 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 147 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 203 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 296 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 319 | except Exception: # pragma: no cover | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 368 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 459 | except Exception: | CODE |
| MEDIUM | mitmproxy/proxy/mode_servers.py | 129 | def start(self) -> None: | CODE |
| LOW | mitmproxy/addons/proxyauth.py | 103 | except Exception: | CODE |
| LOW | mitmproxy/addons/clientplayback.py | 191 | except Exception: | CODE |
| LOW | mitmproxy/addons/asgiapp.py | 140 | except Exception as e: | CODE |
| LOW | mitmproxy/addons/script.py | 53 | except Exception as e: | CODE |
| LOW | mitmproxy/addons/script.py | 127 | except Exception as e: | CODE |
| LOW | mitmproxy/addons/command_history.py | 47 | except Exception as e: | CODE |
| LOW | mitmproxy/addons/command_history.py | 60 | except Exception as e: | CODE |
| LOW | mitmproxy/addons/command_history.py | 75 | except Exception as e: | CODE |
| LOW | mitmproxy/io/io.py | 59 | except Exception: | CODE |
| LOW | mitmproxy/contrib/wbxml/ASCommandResponse.py | 42 | except Exception as e: | CODE |
| LOW | release/release.py | 32 | except Exception as e: | CODE |
| LOW | release/selftest.py | 49 | except Exception as e: | CODE |
| MEDIUM | release/selftest.py | 34 | def make_request(): | CODE |
| LOW | examples/contrib/webscanner_helper/mapping.py | 152 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | test/mitmproxy/contentviews/test__view_mqtt.py | 27 | b"""{"body":{"parameters":null},"header":{"from":"56:6F:5E:6A:01:05","messageId":"connected","type":"event"} | CODE |
| HIGH⚡ | test/mitmproxy/contentviews/test__view_mqtt.py | 28 | """[PUBLISH] '{"body":{"parameters":null},"header":{"from":"56:6F:5E:6A:01:05",""" | STRING |
| HIGH⚡ | test/mitmproxy/contentviews/test__view_mqtt.py | 35 | b"""\x00l{"body":{"parameters":null},"header":{"from":"56:6F:5E:6A:01:05","messageId":"disconnected","type": | CODE |
| HIGH⚡ | test/mitmproxy/contentviews/test__view_mqtt.py | 42 | '{"body":{"parameters":null},"header":{"from":"56:6F:5E:6A:01:05","messageId":"disconnected","type":"eve | CODE |
| HIGH | test/mitmproxy/contentviews/test__view_json.py | 15 | assert json_view.prettify(b'{"foo": true, "nullvalue": null}', meta) | CODE |
| HIGH | mitmproxy/tools/console/master.py | 259 | self.window.push(name) | CODE |
| HIGH | examples/contrib/test_jsondump.py | 10 | example_dir = tutils.test_data.push("../examples") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | test/mitmproxy/addons/test_tlsconfig.py | 304 | san = tssl_client.quic.tls._peer_certificate.extensions.get_extension_for_class( | CODE |
| CRITICAL | mitmproxy/tools/web/static/vendor-BS4xPthR.js | 38 | `;this.styleTag.textContent=o;let f=t.head||t;this.styleTag.parentNode!=f&&f.insertBefore(this.styleTag,f.firstChild)}}s | CODE |
| CRITICAL | mitmproxy/tools/console/window.py | 141 | self.master.view.focus.sig_change.connect(self.view_changed) | CODE |
| CRITICAL | mitmproxy/tools/console/window.py | 142 | self.master.view.focus.sig_change.connect(self.focus_changed) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/addons/test_tlsconfig.py | 174 | # so we just return our local IP as subject. | COMMENT |
| LOW | test/mitmproxy/addons/test_view.py | 109 | # These all just call update | COMMENT |
| LOW | test/mitmproxy/addons/test_view.py | 159 | # These all just call update | COMMENT |
| LOW | test/mitmproxy/addons/test_view.py | 174 | # These all just call update | COMMENT |
| LOW | test/mitmproxy/addons/test_view.py | 189 | # These all just call update | COMMENT |
| MEDIUM | mitmproxy/tools/web/static/vendor-BS4xPthR.js | 9 | `).replace(El,"")}function xm(l,a){return a=vm(a),vm(l)===a}function df(){}function wt(l,a,u,O,m,b){switch(u){case"child | CODE |
| MEDIUM | mitmproxy/tools/web/static/vendor-BS4xPthR.js | 55 | }`,{label:"class",detail:"definition",type:"keyword"}),Yi('import {${names}} from "${module}"\n${}',{label:"import",deta | CODE |
| LOW | mitmproxy/tools/console/flowview.py | 387 | # The alternative would be to just use the header's UTF-8 representation and maybe | COMMENT |
| MEDIUM | mitmproxy/net/http/headers.py | 74 | # > 9. [snip] the comprehensive UTF-8 encoding is suggested. | COMMENT |
| MEDIUM | mitmproxy/proxy/layers/http/_events.py | 30 | # explicit constructors below to facilitate type checking in _http1/_http2 | COMMENT |
| LOW | mitmproxy/coretypes/multidict.py | 193 | # We just return the first element if | COMMENT |
| MEDIUM | web/src/js/ducks/flows/index.ts | 167 | // but performance is not important here and adding the flow may generally be a bit more robust. | COMMENT |
| MEDIUM | docs/src/assets/asciinema-player.js | 73 | !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e(require("react"));else if("functio | CODE |
| LOW | examples/addons/http-modify-form.py | 8 | # If there's already a form, one can just add items to the dict: | COMMENT |
| LOW | examples/addons/http-modify-form.py | 11 | # One can also just pass new form data. | COMMENT |
| MEDIUM | …amples/contrib/webscanner_helper/proxyauth_selenium.py | 46 | """This Addon can be used in combination with web application scanners in order to help them to authenticate | STRING |
| MEDIUM | examples/contrib/webscanner_helper/urlinjection.py | 13 | """Abstract class for an generator of the injection content in order to inject the URL index.""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | mitmproxy/contrib/wbxml/ASCommandResponse.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| HIGH | mitmproxy/contrib/wbxml/ASWBXMLCodePage.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| HIGH | mitmproxy/contrib/wbxml/ASWBXMLByteQueue.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| HIGH | mitmproxy/contrib/wbxml/InvalidDataException.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| HIGH | mitmproxy/contrib/wbxml/GlobalTokens.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| HIGH | mitmproxy/contrib/wbxml/ASWBXML.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | mitmproxy/net/http/cookies.py | 291 | Args: c: A Set-Cookie string delta: Time delta in seconds Returns: A refreshed Set-Cook | STRING |
| HIGH | mitmproxy/net/http/url.py | 22 | URL-parsing function that checks that - port is an integer 0-65535 - host is a valid IDNA-encoded h | STRING |
| HIGH | mitmproxy/net/http/http1/read.py | 250 | Parse an HTTP request head (request line + headers) from an iterable of lines Args: lines: The input l | STRING |
| HIGH | mitmproxy/net/http/http1/read.py | 284 | Parse an HTTP response head (response line + headers) from an iterable of lines Args: lines: The input | STRING |
| HIGH | mitmproxy/proxy/layers/quic/_client_hello_parser.py | 35 | Check if the supplied bytes contain a full ClientHello message, and if so, parse it. Args: - msgs: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/test_certs.py | 21 | # d = certs.DNTree() | COMMENT |
| LOW | mitmproxy/certs.py | 361 | critical=not is_valid_commonname, | COMMENT |
| LOW | mitmproxy/tools/console/flowview.py | 381 | # X-Authors: Made with ❤ in Hamburg | COMMENT |
| LOW | mitmproxy/net/http/http1/read.py | 81 | # Content-Length or Transfer-Encoding header fields received in | COMMENT |
| LOW | mitmproxy/net/http/http1/read.py | 121 | else: | COMMENT |
| LOW | mitmproxy/net/http/http1/read.py | 141 | # 5. If a valid Content-Length header field is present without | COMMENT |
| LOW | mitmproxy/platform/linux.py | 1 | import socket | COMMENT |
| LOW | mitmproxy/addons/tlsconfig.py | 121 | COMMENT | |
| LOW | examples/addons/wsgi-flask-app.py | 21 | addons = [ | COMMENT |
| LOW | examples/contrib/change_upstream_proxy.py | 1 | from mitmproxy import http | COMMENT |
| LOW | examples/contrib/httpdump.py | 1 | #!/usr/bin/env python | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/proxy/test_mode_servers.py | 107 | # Set timeout to 0 for immediate timeout (fastest test) | COMMENT |
| LOW | mitmproxy/proxy/layers/tls.py | 84 | # Check if ClientHello is complete | COMMENT |
| LOW | mitmproxy/proxy/layers/tls.py | 151 | # Check if ClientHello is complete | COMMENT |
| LOW | mitmproxy/addons/tlsconfig.py | 638 | # Check if a request has a magic CRL token at the end | COMMENT |
| LOW | release/docker/docker-entrypoint.sh | 23 | # Set HOME to /home/mitmproxy for config dir fix (mitmproxy/mitmproxy#7597) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mitmproxy/proxy/layers/tls.py | 630 | For example, we need to check if the client does ALPN or not. | STRING |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 580 | # Step 1: Determine the expected body size. This can either come from a known content-length header, | COMMENT |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 602 | # Step 2: Do we need to abort this? | COMMENT |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 631 | # Step 3: Do we need to stream this? | COMMENT |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 742 | # so we need to check if the response is done yet or not. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/scripts/api-events.py | 78 | print("# This file is autogenerated, do not edit manually.") | CODE |
| MEDIUM | examples/contrib/test_jsondump.py | 24 | # Create a dummy flow for testing | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mitmproxy/proxy/layers/http/__init__.py | 580 | # Step 1: Determine the expected body size. This can either come from a known content-length header, | COMMENT |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 602 | # Step 2: Do we need to abort this? | COMMENT |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 631 | # Step 3: Do we need to stream this? | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …st/mitmproxy/contentviews/test_xml_html_data/test.html | 8 | <p>Lorem ipsum dolor<p>sit amet, consectetur <p>adipiscing elit, sed<p>do eiusmod tempor<p> incididunt ut<p> labore et d | CODE |
| LOW | …xy/contentviews/test_xml_html_data/test-formatted.html | 9 | Lorem ipsum dolor | CODE |
| LOW | mitmproxy/tools/web/static/vendor-BS4xPthR.js | 13 | `),tn}X0(()=>{Ae.current=void 0,me.current=void 0,ie.current=Xt});const Wi=Te.useMemo(()=>Te.createElement(A,{...Xt,ref: | CODE |
| LOW | mitmproxy/tools/web/static/vendor-BS4xPthR.js | 43 | `:i=="r"?"\r":i=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSe | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/net/data/verificationcerts/generate.py | 19 | CODE | |
| LOW | mitmproxy/contentviews/_view_javascript.py | 41 | CODE | |
| LOW | mitmproxy/io/compat.py | 468 | CODE | |
| LOW | mitmproxy/contrib/click/__init__.py | 43 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mitmproxy/proxy/layers/dns.py | 71 | def handle_request( | CODE |