Commit Graph

406 Commits

Author SHA1 Message Date
inceabdullah be2b9a962e
add websocket messages in HAR file (#5663)
* add websocket messages in HAR file

* use websocket_end instead of websocket_message

* remove requestID_to_entry

* remove request

* add base64-encoded data if it is binary

* har dumper: nits

Co-authored-by: Maximilian Hils <git@maximilianhils.com>
2022-10-21 02:44:01 +02:00
m4ci3k2 c0f25e0470
Make HAR files compatible with Firefox DevTools (#5666)
Firefox Developer Tools reject to load HAR files that do not have
`har.log.pages` element (see
<https://bugzilla.mozilla.org/show_bug.cgi?id=1691240>). Adding a
placeholder entry fixes it.

Co-authored-by: Maciej Zielenkiewicz <maciej.zielenkiewicz@connectpoint.pl>
2022-10-21 01:54:07 +02:00
BigSully b2303558b2
get real url in transparent mode (#5613)
flow.request.url shows the ip address rather than host name when mitmproxy works on transparent mode
flow.request.pretty_url can show the correct url
2022-10-14 07:44:01 +02:00
daycoder bbfb639835
Update options-simple.py (#5600)
Usage in the docstring is incorrect. Changes "--set addheader true" to "--set addheader=true"
2022-09-21 16:39:21 +02:00
Maximilian Hils c69239bb90 switch to stdlib logging
mitmproxy previously used a homegrown logging mechanism based around
`mitmproxy.ctx.log` and the `add_log` hook. This worked well for everything
we control, but does not work outside the mitmproxy universe.
For now we have simply ignored logging in e.g. tornado or h2, but with the
upcoming introduction of mitmproxy_wireguard we now have a dependency
on some Rust/PyO3 code for which we definitely want logs, but which also
cannot easily be changed to use our homegrown logging (PyO3 does the heavy
lifting to add interoperability with stdlib logging). Long story short,
we want to introduce a log handler for stdlib logging.

Now there are two ways how such a handler could operate:

 1. We could build a handler that forwards all stdlib log events
    into our homegrown mechanism.
 2. We embrace stdlib's logging as the correct way to do things,
    and get rid of our homegrown stuff.

This PR follows the second approach by removing the `add_log` hook and
rewriting the `TermLog` and `EventStore` addons to listen for stdlib log records.
This means that all `mitmproxy.ctx.log.info` events are now simply `logging.info` etc.

One upside of this approach is that many parts of the codebase now don't depend
on the existence of `mitmproxy.ctx` and we can use off-the-shelf things like pytest's
`caplog`. We can also now better colorize log output and/or add timestamps.
2022-09-17 17:28:35 +02:00
Francisco Boni f9899fdd44
Improve http_manipulate_cookies.py example (#5578)
Improve the example helper functions to use the get_all functions recommended
in the Header class docs for use with cookies data. This will avoid errors when
dealing with multiple headers.

cf655a664f/mitmproxy/http.py (L148)
cf655a664f/mitmproxy/http.py (L91)
2022-09-11 15:58:29 +02:00
JannisBush 6110a2a1bb
Fix wsgi HTTPS example (#5385) 2022-05-30 14:41:10 +00:00
Pedro Augusto de Paula Barbosa 4771e42b44
Fix typo in http-trailers.py (#5384) 2022-05-30 09:53:44 +02:00
Maximilian Hils b3587b52b2 make it black! 2022-04-28 19:11:10 +02:00
Maximilian Hils fdde9ba3b3 use Python 3.9+ typing 2022-04-26 13:53:23 +02:00
Maximilian Hils b31ad66225 `autoflake --in-place **/*.py` 2022-04-26 13:52:46 +02:00
Maximilian Hils e83ec8390a `pyupgrade --py39-plus **/*.py` 2022-04-26 13:51:11 +02:00
Will Monge a863f529ab
Example: manipulate http cookies (#5278)
* added example on how to manipulate (outbound and inbound) cookies for http flows

* added entry to the CHANGELOG
2022-04-22 12:40:23 +02:00
Maximilian Hils 648d3bc0f9
add `wsreplay.py`, close #5012 2022-03-30 15:14:29 +02:00
Gabriel Corona 66dd158560
Add domain fronting example (#5217)
Co-authored-by: Maximilian Hils <git@maximilianhils.com>
2022-03-29 18:24:59 +02:00
Maximilian Hils 9d1e3107e8 `pyupgrade --keep-runtime-typing --py38-plus` 2022-03-29 15:29:37 +02:00
Maximilian Hils beb49ab121 don't use #noqa for imports 2022-03-29 13:51:08 +02:00
Agustin Bacigalup 33bba38b03
Add httpdump.py example (#5190)
* add httpdump.py example

* update CHANGELOG.md

* delete print() statement

* fix flake8?
2022-03-23 13:04:38 +00:00
Eldad Marciano cba67aa94c
an ntlm upstream addon for http \ https (#5100)
* an ntlm upstream addon for http \ https

Ntlm upstream proxy for http https all http methods

* fix filename

* lint!

Co-authored-by: Maximilian Hils <git@maximilianhils.com>
2022-03-15 20:44:09 +00:00
EndUser509 a0cf273484
Merge pull request #5099 from EndUser509/save_streamed_data2
Save streamed data
2022-03-15 21:34:49 +01:00
Robert Xiao cee4b72459 Support async hooks. Fixes #4207. 2022-02-04 17:30:20 +01:00
Maximilian Hils 96f77453cc
fix `change_upstream_proxy.py` example, fix #4981 (#5007) 2021-12-20 21:10:06 +00:00
Maximilian Hils 3cb87f5a2f split `tls_handshake` hook into client/server and success/fail variants 2021-11-22 10:23:21 +01:00
Maximilian Hils a72f61ef57 Merge remote-tracking branch 'origin/main' into ignore-after-clienthello 2021-11-22 09:54:08 +01:00
Marius 301f8cf79d
Create search.py (#4900)
* Create search.py

* Address linter findings

* Address linter findings
2021-11-16 12:47:34 +01:00
mame82 480052f58b
Grpc contentview (#4851)
* Partial gRPC contentview prototype, not linted, no tests, not as add-on

* Linted (flake8)

* Save dev state

* Rewrote of protobuf parser, use decoding strategy, reduced rendered data. Parser uses  generators

* minor cleanup

* fix: preferred encoding was provided as function instead of value

* flake8: line length

* Backlinked message tree objects, temporary debug out

* Partial implementation of gRPC definitions. Save state to fix a cras (data invalidate in edit mode)

* hack: deal with missing exception handling for generator based content views

* gRPC/Protoparser descriptions (with test code)

* replaced manual gzip decoding with mitmproxy.net.encoding.decode

* Refactored typing imports

* Reafctoring

* distinguish request vs response definitions, separate view config from parser config

* Code cleaning, moved customized protobuf definitions to example addon

* final cleanup

* changelog

* Stubs for tests

* Fixed render_riority of addon example

* Started adding tests

* Work on tests

* mypy

* Added pseudo encoder to tests, to cover special decodings

* Example addon test added

* finalized tests, no 100 percent coverage possible, see comments un uncovered code

* minor adjustments

* fixup tests

* Typos

Co-authored-by: Maximilian Hils <git@maximilianhils.com>
2021-10-12 13:32:56 +02:00
Maximilian Hils c43a2ef8dc improve flowfilter api: raise on invalid input, add `~all` 2021-10-08 17:45:47 +02:00
Maximilian Hils 79896e23b7 contentview example: be explicit about passed metadata 2021-10-07 15:21:46 +02:00
Maximilian Hils 7fd887a553 move tls hook data to `mitmproxy.tls` 2021-09-04 16:37:39 +02:00
Maximilian Hils 9f39e2f387 tests++ 2021-09-04 16:03:06 +02:00
Maximilian Hils 98a3e33477 tls: add `tls_handshake`, ignore-after-clienthello
this fixes #4702
2021-09-04 00:24:41 +02:00
Maximilian Hils d518622976
Update examples/contrib/README.md 2021-08-22 14:57:20 +02:00
Alexander Prinzhorn edbb3d6791
update ws injection example, fixes #4751 (#4761)
* update ws injection example, fixes #4751

* Update websocket-inject-message.py

* Revert "Update websocket-inject-message.py"

This reverts commit 86b4cda2f4.

Co-authored-by: Maximilian Hils <github@maximilianhils.com>
Co-authored-by: Maximilian Hils <git@maximilianhils.com>
2021-08-18 11:37:28 +00:00
KORraNpl 52c81c287e Fix DeprecationWarning in har_dump.py 2021-08-11 20:32:39 +02:00
Maximilian Hils c7e8b82420 update streaming example 2021-08-02 13:57:12 +02:00
Maximilian Hils bb40ab9044 `WebSocketMessage.kill()` -> `.drop()` 2021-07-15 14:57:43 +02:00
Alexander Prinzhorn eef6522a5e remove websocket_error event, fixes #4674 2021-07-12 16:35:25 +02:00
Maximilian Hils d6975e0b80 add next_layer docs + example, minor fixes 2021-06-20 02:15:09 +02:00
Maximilian Hils 15adb2cd79
Update tls_passthrough.py 2021-06-18 08:49:48 +02:00
Brad Dixon c6ba97eab6
Use emoji and characters as markers. Add ~marker filter syntax. (#4587)
* Use emoji and characters as markers. Add ~marker filter syntax.

* Add a test to please our CI overlords. :)
2021-05-27 11:40:41 +02:00
Maximilian Hils fe6f0d368b inject -> inject.tcp/inject.websocket 2021-03-16 15:01:33 +01:00
Maximilian Hils ac9852122f add websocket.timestamp_end 2021-03-16 14:52:15 +01:00
Maximilian Hils 6c07dba752 re-add WebSocket injection example 2021-03-14 00:49:24 +01:00
Peter Dave Hello 123342ea0b
Improve Markdown syntax(styling) (#4496)
* Improve Markdown syntax

- Add missing blank lines
- Remove trailing spaces
- Remove additional blank lines
- Fix indentation consistency and correctness

* Update addons-examples.md

Co-authored-by: Maximilian Hils <github@maximilianhils.com>
2021-03-11 19:13:02 +01:00
Maximilian Hils e1f938f05b tests++ 2021-03-09 00:55:47 +01:00
Maximilian Hils eb65bc748b merge WebSocketFlow into HTTPFlow, add WebSocket UI 2021-03-08 19:36:18 +01:00
Maximilian Hils 748fc93699
Merge pull request #4422 from mhils/pdoc
Docs: Add API Reference Using Pdoc
2021-02-13 00:18:49 +01:00
Maximilian Hils 805aed4f6a docs++ 2021-02-13 00:13:37 +01:00
Anatoli Babenia cff98a30e2
Fix HAR dump (#4439)
* Fix `KeyError: 'Unknown options: hardump'` in HAR test_simple

The reason was an invalid import of `connections` which is gone
in d159897d98, but the loading error
was silently ignored (#4438) resulting in a misleading exception
at a later stage.

This still doesn't make the test suite run, because it is better
to fix one error at a time.

The way to run tests from examples.

    ln -sr test/conftest.py examples
    pytest examples/contrib/test_har_dump.py -k simpl

The way to see the execution flow with silenced exceptions.

    from hunter import trace, Q
    trace(Q(stdlib=False), ~Q(filename_contains='site-packages'))

* Fix `TypeError: invoke() takes 3 positional arguments but 4 were given`

* Fix `TypeError: 'bool' object is not callable`
2021-02-11 21:07:09 +01:00
Maximilian Hils 0ab59e5524 docs++ 2021-02-05 22:04:45 +01:00