mirror of
https://github.com/zhigang1992/mitmproxy.git
synced 2026-04-24 04:14:57 +08:00
add websockets support to mitmproxy
This commit is contained in:
@@ -198,7 +198,7 @@ class Response(_HTTPMessage):
|
||||
1,
|
||||
StatusCode(101)
|
||||
)
|
||||
headers = netlib.websockets.WebsocketsProtocol.server_handshake_headers(
|
||||
headers = netlib.websockets.server_handshake_headers(
|
||||
settings.websocket_key
|
||||
)
|
||||
for i in headers.fields:
|
||||
@@ -310,7 +310,7 @@ class Request(_HTTPMessage):
|
||||
1,
|
||||
Method("get")
|
||||
)
|
||||
for i in netlib.websockets.WebsocketsProtocol.client_handshake_headers().fields:
|
||||
for i in netlib.websockets.client_handshake_headers().fields:
|
||||
if not get_header(i[0], self.headers):
|
||||
tokens.append(
|
||||
Header(
|
||||
|
||||
@@ -139,7 +139,7 @@ class WebsocketFrameReader(basethread.BaseThread):
|
||||
except exceptions.TcpDisconnect:
|
||||
return
|
||||
self.frames_queue.put(frm)
|
||||
log("<< %s" % frm.header.human_readable())
|
||||
log("<< %s" % repr(frm.header))
|
||||
if self.ws_read_limit is not None:
|
||||
self.ws_read_limit -= 1
|
||||
starttime = time.time()
|
||||
|
||||
@@ -173,12 +173,13 @@ class PathodHandler(tcp.BaseHandler):
|
||||
retlog["cipher"] = self.get_current_cipher()
|
||||
|
||||
m = utils.MemBool()
|
||||
websocket_key = websockets.WebsocketsProtocol.check_client_handshake(headers)
|
||||
self.settings.websocket_key = websocket_key
|
||||
|
||||
valid_websockets_handshake = websockets.check_handshake(headers)
|
||||
self.settings.websocket_key = websockets.get_client_key(headers)
|
||||
|
||||
# If this is a websocket initiation, we respond with a proper
|
||||
# server response, unless over-ridden.
|
||||
if websocket_key:
|
||||
if valid_websockets_handshake:
|
||||
anchor_gen = language.parse_pathod("ws")
|
||||
else:
|
||||
anchor_gen = None
|
||||
@@ -225,7 +226,7 @@ class PathodHandler(tcp.BaseHandler):
|
||||
spec,
|
||||
lg
|
||||
)
|
||||
if nexthandler and websocket_key:
|
||||
if nexthandler and valid_websockets_handshake:
|
||||
self.protocol = protocols.websockets.WebsocketsProtocol(self)
|
||||
return self.protocol.handle_websocket, retlog
|
||||
else:
|
||||
|
||||
@@ -20,7 +20,7 @@ class WebsocketsProtocol:
|
||||
lg("Error reading websocket frame: %s" % e)
|
||||
return None, None
|
||||
ended = time.time()
|
||||
lg(frm.human_readable())
|
||||
lg(repr(frm))
|
||||
retlog = dict(
|
||||
type="inbound",
|
||||
protocol="websockets",
|
||||
|
||||
Reference in New Issue
Block a user