mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-22 15:37:45 +00:00
re-add WebSocket injection example
This commit is contained in:
parent
c842abff2d
commit
6c07dba752
31
examples/addons/websocket-inject-message.py
Normal file
31
examples/addons/websocket-inject-message.py
Normal file
@ -0,0 +1,31 @@
|
||||
"""
|
||||
Inject a WebSocket message into a running connection.
|
||||
|
||||
This example shows how to inject a WebSocket message into a running connection.
|
||||
"""
|
||||
import asyncio
|
||||
|
||||
from mitmproxy import ctx, http
|
||||
|
||||
|
||||
# Simple example: Inject a message as a response to an event
|
||||
|
||||
def websocket_message(flow):
|
||||
last_message = flow.websocket.messages[-1]
|
||||
if b"secret" in last_message.content:
|
||||
last_message.kill()
|
||||
ctx.master.commands.call("inject", [flow], not last_message.from_client, "ssssssh")
|
||||
|
||||
|
||||
# Complex example: Schedule a periodic timer
|
||||
|
||||
async def inject_async(flow: http.HTTPFlow):
|
||||
msg = "hello from mitmproxy! "
|
||||
while flow.server_conn.connected:
|
||||
ctx.master.commands.call("inject", [flow], False, msg)
|
||||
await asyncio.sleep(1)
|
||||
msg = msg[1:] + msg[:1]
|
||||
|
||||
|
||||
def websocket_start(flow: http.HTTPFlow):
|
||||
asyncio.create_task(inject_async(flow))
|
@ -168,6 +168,7 @@ class Proxyserver:
|
||||
event = TcpMessageInjected(f, tcp.TCPMessage(from_client, message_bytes))
|
||||
else: # pragma: no cover
|
||||
ctx.log.warn(f"Cannot inject message into {f.__class__.__name__}, skipping.")
|
||||
continue
|
||||
|
||||
try:
|
||||
self.inject_event(f, event)
|
||||
|
Loading…
Reference in New Issue
Block a user