first commit: DuoPlus云手机协议注册工具 - 完整实现
This commit is contained in:
80
analyze_requests.py
Normal file
80
analyze_requests.py
Normal file
@@ -0,0 +1,80 @@
|
||||
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 和其他参数
|
||||
- 保存完整的请求头和请求体格式
|
||||
""")
|
||||
Reference in New Issue
Block a user