-
-
Notifications
You must be signed in to change notification settings - Fork 988
使用python实时从edge浏览器中抓取最新Sec-MS-GEC的一种方法 #299
Copy link
Copy link
Closed
Description
如果仅仅是自己本地使用,可以使用 python mitmproxy 模块 监听edge浏览器大声朗读获取 Sec-MS-GEC
基本原理
- pip install mitmproxy
- edge浏览器 中设置 Internal 本地代理地址 127.0.0.1 8080
- 创建一个本地html文件,里面使用n个p标签创建超长文本,然后js循环每5s将第一段文本移动到末尾,目的是保证可以一直处于朗读中。
- edge浏览器中手动开启大声朗读,选择一个音色,将语速降到最低
- 写一个py脚本,捕获wss的url,从中找出 sec,核心代码
# 保存为 record.py
from mitmproxy import ctx, http
import urllib.parse
import json
import os
# 目标路径片段,用于检查URL
TARGET_PATH = "/consumer/speech/synthesize/readaloud/edge/v1"
LAST_SEC=""
def request(flow: http.HTTPFlow) -> None:
global LAST_SEC
# 检查请求 URL 是否包含目标路径
if TARGET_PATH in flow.request.path:
# 解析 URL 中的参数
url = flow.request.pretty_url
parsed_url = urllib.parse.urlparse(url)
params = urllib.parse.parse_qs(parsed_url.query)
# 提取并保存参数
trusted_token = params.get("TrustedClientToken", [""])[0]
sec_gec = params.get("Sec-MS-GEC", [""])[0]
sec_gec_version = params.get("Sec-MS-GEC-Version", [""])[0]
data={
"TrustedClientToken":trusted_token,
"Sec-MS-GEC":sec_gec,
"Sec-MS-GEC-Version":sec_gec_version
}
with open(f"token.json", "w") as f:
f.write(json.dumps(data))
- 启动监听
mitmdump -s record.py
如此可确保实时获取到最新的 sec,如下
需要导入mitproxy证书到系统根信任证书,否则无法监听ssl
证书在 C :\Users\用户名.mitmproxy\mitmproxy-ca-cert.cer
有兴趣的可以照此原理搞个api给大伙用
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
