Files
duoplus/analyze_requests.py

80 lines
3.2 KiB
Python

import json
from mitmproxy import http
from mitmproxy.tools.main import mitmdump
import sys
from colorama import init, Fore, Style
# 初始化 colorama
init(autoreset=True)
class RequestAnalyzer:
"""分析 DuoPlus 注册相关的网络请求"""
def __init__(self):
self.target_domain = "my.duoplus.cn"
self.captured_requests = []
def request(self, flow: http.HTTPFlow) -> None:
"""处理请求"""
if self.target_domain in flow.request.pretty_host:
request_info = {
"method": flow.request.method,
"url": flow.request.pretty_url,
"headers": dict(flow.request.headers),
"body": None
}
# 尝试解析请求体
if flow.request.content:
try:
request_info["body"] = json.loads(flow.request.content.decode('utf-8'))
except:
request_info["body"] = flow.request.content.decode('utf-8', errors='ignore')
# 打印关键请求
if any(keyword in flow.request.pretty_url for keyword in ['auth', 'register', 'captcha', 'verify']):
print(f"\n{Fore.CYAN}[REQUEST] {flow.request.method} {flow.request.pretty_url}")
print(f"{Fore.YELLOW}Headers: {json.dumps(dict(flow.request.headers), indent=2, ensure_ascii=False)}")
if request_info["body"]:
print(f"{Fore.GREEN}Body: {json.dumps(request_info['body'], indent=2, ensure_ascii=False)}")
def response(self, flow: http.HTTPFlow) -> None:
"""处理响应"""
if self.target_domain in flow.request.pretty_host:
# 打印关键响应
if any(keyword in flow.request.pretty_url for keyword in ['auth', 'register', 'captcha', 'verify']):
print(f"\n{Fore.MAGENTA}[RESPONSE] {flow.response.status_code} for {flow.request.pretty_url}")
# 尝试解析响应体
if flow.response.content:
try:
response_body = json.loads(flow.response.content.decode('utf-8'))
print(f"{Fore.GREEN}Response: {json.dumps(response_body, indent=2, ensure_ascii=False)}")
except:
print(f"{Fore.RED}Response (raw): {flow.response.content.decode('utf-8', errors='ignore')[:200]}...")
# 创建分析器实例
analyzer = RequestAnalyzer()
def request(flow: http.HTTPFlow) -> None:
analyzer.request(flow)
def response(flow: http.HTTPFlow) -> None:
analyzer.response(flow)
if __name__ == "__main__":
print(f"""
{Fore.CYAN}=== DuoPlus 网络请求分析工具 ===
{Fore.YELLOW}使用方法:
1. 安装 mitmproxy: pip install mitmproxy
2. 运行代理: mitmdump -s analyze_requests.py -p 8080
3. 配置浏览器使用 127.0.0.1:8080 作为HTTP代理
4. 访问 https://my.duoplus.cn/sign-up 并执行注册操作
5. 查看控制台输出的请求和响应信息
{Fore.GREEN}提示:
- 关注包含 'auth', 'register', 'captcha', 'verify' 的请求
- 记录验证码相关的 app_id 和其他参数
- 保存完整的请求头和请求体格式
""")