Skip to content

使用python实时从edge浏览器中抓取最新Sec-MS-GEC的一种方法 #299

@jianchang512

Description

@jianchang512

如果仅仅是自己本地使用,可以使用 python mitmproxy 模块 监听edge浏览器大声朗读获取 Sec-MS-GEC

基本原理

  1. pip install mitmproxy
  2. edge浏览器 中设置 Internal 本地代理地址 127.0.0.1 8080
  3. 创建一个本地html文件,里面使用n个p标签创建超长文本,然后js循环每5s将第一段文本移动到末尾,目的是保证可以一直处于朗读中。
  4. edge浏览器中手动开启大声朗读,选择一个音色,将语速降到最低
  5. 写一个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))

  1. 启动监听 mitmdump -s record.py

如此可确保实时获取到最新的 sec,如下

image

需要导入mitproxy证书到系统根信任证书,否则无法监听ssl
证书在 C :\Users\用户名.mitmproxy\mitmproxy-ca-cert.cer

有兴趣的可以照此原理搞个api给大伙用

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions