From 1f222a2a94a7803c9c5312abf53ff1e7639ee929 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 5 Jun 2022 15:38:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BF=A1=E6=81=AF=E7=9A=84=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=8F=8A=E9=83=A8=E5=88=86=E4=BF=A1=E6=81=AF=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/http_server.py | 35 ++++++++++++++++++++++++++++++++++- proxy_script.py | 11 ++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/handler/http_server.py b/handler/http_server.py index 5529e23..c2fccb1 100644 --- a/handler/http_server.py +++ b/handler/http_server.py @@ -1,6 +1,9 @@ +import json + from flask import Flask, request, Response from handler.common import MESSAGE_QUEUE, MessagePayload import logging +# 不要日志,当它不存在 log = logging.getLogger('werkzeug') log.setLevel(logging.ERROR) @@ -12,4 +15,34 @@ app.config['JSON_AS_ASCII'] = False def message_from_mitmproxy(): payload = MessagePayload(request.data, request.headers.get("X-MITM-TS", "")) MESSAGE_QUEUE.put(payload) - return Response(status=204) \ No newline at end of file + return Response(status=204) + + +@app.post("/user_info") +def user_info_from_mitmproxy(): + try: + user_info = json.loads(request.data) + except json.JSONDecodeError: + return Response(status=403) + print(user_info) + if "user" not in user_info: + # 这个请求有问题 + return Response(status=403) + user = user_info['user'] + #有用的信息 + { + # 抖音加密的用户id,也就是url上的id字符串 + "sec_user_id": user.get('sec_uid', ""), + # 用户真实的数字id + "user_id": user.get('uid', 0), + # 开播状态,1是开播了 + "live_status": user.get('live_status', 0), + # 和西瓜视频一样,每次开播,room_id都会变化,需要动态拿取 + "room_id": user.get('room_id', 0), + "nickname": user.get('nickname', ""), + # 多平台粉丝数,包含西瓜视频等关联字节公司下的账号粉丝总数 + "mp_fans_count": user.get('mplatform_followers_count', 0), + # 近期加的归属地 + "ip_location": user.get('ip_location', ""), + } + return Response(status=204) diff --git a/proxy_script.py b/proxy_script.py index 8ee8c68..5bf8232 100644 --- a/proxy_script.py +++ b/proxy_script.py @@ -9,6 +9,15 @@ session = requests.session() class Writer: + def response(self, flow: http.HTTPFlow): + # /aweme/v1/web/user/profile/other/ 他人主页获取他人信息 + if '/aweme/v1/web/user/profile/other' in flow.request.path: + response_json_content = flow.response.content + session.post("http://127.0.0.1:5000/user_info", headers={ + "X-MITM-TS": str(time.time()), + "X_REFERER": flow.request.url + }, data=response_json_content, timeout=(1, 1)) + def websocket_message(self, flow: http.HTTPFlow): re_c = re.search('webcast\d-ws-web-.*\.douyin\.com', flow.request.host) if re_c: @@ -18,7 +27,7 @@ class Writer: content = message.content session.post("http://127.0.0.1:5000/message", headers={ "X-MITM-TS": str(time.time()), - "X_REFERER": flow.request.host + "X_REFERER": flow.request.url }, data=content, timeout=(1, 1))