| name | proxy-log-analyzer |
| description | 只读分析当前补环境框架的 run/proxy_log.json,提取 ENV_MISSING、Illegal invocation、对象为undefined、类型/结构异常,分类缺失项并给出修复位置和浏览器对比优先级。Use when the user asks to 看日志、分析 proxy_log、整理补环境清单、判断先补哪里;默认不修改代码。 |
Proxy 日志分析
目标
从 run/proxy_log.json 中提炼真正有用的补环境线索,判断问题类型、修复位置、浏览器采样优先级,并给出下一步建议。默认只分析,不修改文件。
基本流程
- 确认
run/proxy_log.json 是否存在且是否是本轮最新。
- 如果日志不存在或明显过期,优先自行运行
node main.js 生成新日志。
- 读取日志后只提炼关键项,不要原样复述整份日志。
- 按优先级整理:直接异常 >
ENV_MISSING > Illegal invocation > 高频 对象为undefined > 类型/结构/描述符异常。
- 给每个关键项映射修复位置,并标注是否需要真实浏览器对比。
重点筛选
ENV_MISSING
Illegal invocation
对象为undefined
- 返回值存在但明显不对:例如
[object Object] 应为 [object PluginArray],空对象应有 length/item/namedItem,URL/UA/cookie 与目标站不一致。
- 结构/原型/描述符相关访问:
toString、Symbol.toStringTag、constructor、__proto__、Object.getOwnPropertyDescriptor。
问题分类
- 框架代码问题:全局对象未挂载、代理顺序错误、dispatch 包装错误、原型链挂错、工具函数缺失。建议直接修项目代码。
- 浏览器值缺失:
location、document、navigator、screen、history 等 getter/setter 缺失或值不对。建议采样后补 config/config.js 和 tools/envFunc.js。
- 结构缺失:
plugins、mimeTypes、Storage、screen.orientation、DOM 元素、canvas/webgl 等。建议采样 tag、length、索引、方法行为、原型链。
- 描述符/原生函数问题:属性位置、可枚举/可配置/可写、函数
toString() 不像原生。建议采样 descriptor 并按项目 safeFunc/safeProto 模式修。
- 自动化痕迹检测:
webdriver、__webdriver_*、__selenium_*、callSelenium、_selenium。不要简单把所有 undefined 都当缺失。
对比优先级
不要要求所有日志都做浏览器对比,按三档输出:
必须对比
- 会导致异常、分支变化或签名变化的日志项。
- 准备修改的属性、方法、构造函数、原型链、描述符。
ENV_MISSING / Illegal invocation 对应的浏览器 API。
- 强检测字段:
location.href/origin/host/pathname/search/protocol、document.URL/referrer/cookie/domain/readyState/visibilityState、navigator.userAgent/platform/language/languages/webdriver/plugins/mimeTypes/hardwareConcurrency/deviceMemory/userAgentData、screen.width/height/availWidth/availHeight/colorDepth/pixelDepth/orientation、localStorage/sessionStorage。
- 结构、原型链、描述符检测项:
toStringTag、constructor、instanceof、__proto__、Object.getOwnPropertyDescriptor、函数 toString()。
建议对比
- 高频
对象为undefined。
ffglobal.memory 已有值但可能不符合当前目标站。
- 可能进入更深检测的 API:canvas、webgl、crypto、fetch、WebSocket、performance。
可暂缓
- 未阻塞、未修改、未影响分支的普通探测项。
- 自动化痕迹字段当前返回
undefined,且本轮不准备修改。
- 暂缓项要标注“未采样,不能判定真实一致”。
修复位置映射
tools/envFunc.js:补 getter / setter / method 行为。
config/config.js:补 ffglobal.memory 状态数据。
env/:补构造函数、原型链、静态常量、Symbol.toStringTag。
tools/globalThis.js:补浏览器全局对象挂载。
tools/proxyObj.js:补代理顺序、代理对象同步到 window。
run/sign.js:补或调整当前入口调用逻辑。本仓库当前 main.js 读取它。
main.js:只有入口拼接顺序或输出逻辑错误时才建议修改。
输出格式
分析完成后,按这个结构给结论:
- 本轮关键日志项。
- 问题类型:框架代码 / 浏览器值 / 结构 / 描述符 / 自动化痕迹。
- 修复位置建议。
- 对比优先级:必须 / 建议 / 可暂缓。
- 下一步:先采样什么,或先改哪个文件。
对没有采样的项,不要写“一致”;写“未采样,不能判定真实一致”。