25 lines
749 B
Python
25 lines
749 B
Python
import re
|
|
|
|
from proxy.common import MessagePayload
|
|
from typing import TYPE_CHECKING
|
|
|
|
if TYPE_CHECKING:
|
|
from mitmproxy import http
|
|
from queue import SimpleQueue
|
|
|
|
|
|
class DanmakuWebsocketAddon:
|
|
def __init__(self, queue: "SimpleQueue[MessagePayload]"):
|
|
self._queue = queue
|
|
|
|
def websocket_message(self, flow: "http.HTTPFlow"):
|
|
re_c = re.search('webcast\d-ws-web-.*\.douyin\.com', flow.request.host)
|
|
if re_c:
|
|
message = flow.websocket.messages[-1]
|
|
if message.from_client:
|
|
return
|
|
payload = MessagePayload(message.content)
|
|
payload.request_url = flow.request.url
|
|
payload.request_query = flow.request.query
|
|
self._queue.put(payload)
|