算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
web-js-env-patcher【设计与创意】面向网页端 JavaScript 的 Node.js 补环境 Skill。用于 env.js/runner.js、缺失环境追踪、RuyiTrace/Proxy 日志分析、Trace API 首轮覆盖与 runtime contract、浏览器对象模型与 native-like、addon/xbs native-first、私有状态泄露阻断、对象形状审计、iframe/Worker/DOM-CSSOM/Performance/WebAPI 行为矩阵、Canvas/WebGL/WebGPU/Audio/字体/DOM 几何真实值回放、XHR/fetch no-send 语义审计、TLS 指纹兼容 Session bridge、curl_cffi 同 Session、动态资源刷新、Cookie 生成链路…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
本 Skill 只处理网页端浏览器 JavaScript 在 Node.js 中运行所需的环境分析、证据采集、WebAPI 实现和验证。
本 Skill 分三层:
SKILL.md 负责范围、决策、硬规则和主流程。references/ 负责场景细节、schema、采样方法和验收标准;只在触发对应场景时读取。scripts/ 负责确定性采集和门禁;脚本结果不能替代浏览器真实证据或工程判断。不要一次性加载全部 references。先根据下方路由确定需要读取的文件。
references/intake-template.md、references/workflow.md、references/delivery-templates.md。references/browser-acquisition.md。references/ruyi-tooling.md。references/camoufox-tooling.md。isTrusted:读取 references/trusted-input-and-isTrusted.md。references/captcha-flow-and-verify-handoff.md。references/fingerprint-baseline-consistency.md。references/trust-matrix.md、references/case-patterns.md。source → entry → builder → writer:读取 references/crypto-entry-location.md、references/hook-templates.md。references/dynamic-resource-freshness.md。references/cookie-generation-analysis.md。references/session-request-chain.md。references/tls-request-validation.md。references/env-debug-loop.md。references/trace-api-coverage.md。references/trace-runtime-conformance.md。vm 或 jsEnv:读取 references/runtime-frameworks.md。references/xbs-isolated-vm-api.md。references/node-version-recovery.md。references/addon-api.md。references/env-object-model.md。document.all、brand 和 native-like:读取 references/env-native-protection.md。references/node-leakage-and-silent-failure.md。references/env-module-levels.md。references/native-capability-gap.md。references/webapi-env-detection-matrix.md。_ / __ 私有状态泄露:读取 references/object-shape-private-state.md。references/fingerprint-value-replay.md。references/fixture-validation.md。references/wasm-worker-postmessage.md。references/high-strength-browser-detection.md、references/high-intensity-env-diff.md。references/xhr-fetch-session-bridge.md。references/xhr-fetch-semantics-audit.md。references/code-change-memory.md。references/code-style.md。references/stage-markdown-reports.md。references/final-project-summary.md。references/cleanup.md。references/validation.md。先确认信息:至少确认目标页面、目标 API、方法、加密参数名与位置、成功请求样本、已知 JS、取证模式、最终 TLS 客户端或“不发真实请求”。信息不足时只输出已知信息、缺失项和下一步,不启动取证、下载 JS、运行旧代码或写 env。
取证模式先于取证动作:打开网页、抓包、Hook、断点、截图、下载资源或采集 Trace 前,先确认 ruyiPage + RuyiTrace、仅 ruyiPage、Camoufox + MCP、仅 Camoufox、CloakBrowser、手动取证或 AI 决定。不得先用普通 Playwright / Puppeteer / 系统浏览器失败后再切换。
固定 fingerprint baseline:第一次成功取证后生成 case/notes/fingerprint-baseline.json 和 baselineId。后续网络、Trace、Hook、指纹和 Node audit 必须使用同一 profile / seed / 代理 / 语言 / 时区 / UA / Client Hints / screen / WebGL。切换工具或 baseline 前必须暂停确认。
验证码和登录前置确认:任何取证前先判断是否为验证码、风控验证、challenge 或 WAF 接口。需要登录时不索要账号、密码、验证码或 MFA;让用户在已确认工具中完成并回复成功。验证码 Trace 必须覆盖触发、展示、交互、提交和 verify 返回。
请求样本不等于最终 baseline:cURL/HAR 只提供 URL、方法、结构、参数位置和业务字段线索。若样本浏览器族与取证 baseline 冲突,默认以取证 baseline 的 UA、Client Hints、Header、TLS/HTTP2、Cookie 和指纹为准,并记录冲突。
参数和链路先确认:列出 Query、Header、Body、Cookie 中全部可疑动态参数,让用户确认本次范围;入口定位必须输出 source → entry → builder → writer。非登录 Cookie 失效时先分析生成 / 刷新链,不默认索要新 Cookie。
动态资源不得固定化:HTML、bundle、chunk、challenge JS、403 页面和内联 seed 默认只是分析快照。记录资源 freshness;影响最终参数时必须在同一 Session 内运行时刷新。
Trace 命中必须首轮规划:存在 RuyiTrace、Node trace、Hook 环境日志或 missing-env.json 时,在第一版 env / signer probe 前生成 trace-api-inventory.json 和 env-coverage-matrix.md。P0/P1 必须首轮实现、同 baseline 采样、明确暂不挂载或进入 native gap;不得等报错或 writer 分支失败后再补。missed-from-trace 必须作为流程缺陷记录。
Trace 必须形成可执行 closure:第一轮 env、每次环境修改、动态资源刷新或 baseline 变化后,重新生成 v3 Trace runtime contract,并让当前最终入口在 audit-only/no-send 模式输出 Node audit。必须比较 realm、receiver、descriptor、brand、prototype、ownKeys、结果 / 异常和原始状态时间线;不得从分组 observation 反推顺序。自动发现多份 Trace 时显式选择当前 baseline,禁止跨历史采集静默合并。手写 matched、同名 target、证据文本、关键词或 Top API 列表都不算观测;P0/P1 mismatch 或网络访问会阻断。
框架由用户决定:正式补环境前确认不使用框架(默认)、xbs isolated-vm、Node vm 或 jsEnv。Trace 复杂度只决定风险和优先级,不自动选择框架。isolated-vm 必须验证随包二进制、Node ABI、window.xbs 和 xbs.dom.createDocument;jsEnv 未提供真实项目和文档时不得虚构 API。
Node 泄露和 native 能力前置:运行目标 JS 前隔离 process、Buffer、require、module、global、Node navigator、Storage、performance 和宿主网络 / 消息 WebAPI。补环境初始化即检测 addon.node 或 xbs;可用时函数、访问器、构造函数、集合对象、plugins/mimeTypes、document.all 等必须 native-first。ABI 不兼容先按版本恢复流程处理,用户拒绝或恢复失败后才允许有记录的 fallback。
真实浏览器对象模型默认开启:关键 WebAPI 从第一版就处理 descriptor、getter/setter、构造行为、prototype、instanceof、toString、brand 和非法 receiver,不得用普通对象或简单函数糊住。iframe/Worker 必须拥有独立全局、构造器图、公开对象和生命周期;只允许共享有浏览器证据的底层同源状态,不得复用主 Realm wrapper。探测 Proxy 只能用于诊断,最终交付应固化真实对象。
浏览器对象私有状态不得泄露:目标 JS 可见对象不得通过 _、__ 或自定义 Symbol 自有属性保存内部状态。优先 addon/xbs private API,其次模块级 WeakMap。对象形状必须以浏览器 baseline 与 Node audit 逐字段比较,不能只检查属性前缀或 target 名称。
指纹值必须有真实证据:优先使用同 baseline、未截断的 Trace 值;Trace 缺失、接近 4000/4096 截断、长度未知或 baseline 冲突时,用已确认浏览器工具补采。AI 猜值、随机值、默认值、mock、jsdom、node-canvas、headless-gl 不能作为最终回放值。长值记录完整长度、hash、分片和来源。
XHR/fetch 必须同时满足语义和 Session:真实请求时,XHR/fetch/sendBeacon 必须通过同一 TLS Session bridge,不能直接使用 Node 宿主网络,也不能返回默认 200 或 fixture 冒充成功。Python curl_cffi 场景由 final.py 持有唯一 Session 并服务 Node IPC。真实请求前生成完整 network-transcript/v3 并完成 no-send diff;URL、Header 实值/脱敏 hash、body/response hash、responseURL、响应头、actor/realm/epoch、全局事件顺序、reload 清理、Session 和多余请求任一缺失都阻断,双方同缺字段也不算 matched。
代码质量和 native gap 不得绕过:signer、probe、runner、diagnostic 只做编排,WebAPI 主体必须拆到 src/env/ 或 src/node-runtime/env/;isolated-vm 不得用大段 String.raw 聚合源码。真实请求前必须通过代码质量与 addon-first 门禁。纯 JS、addon、xbs 都无法可靠实现时,输出 native 能力缺口、建议 API、最小浏览器/native 测试和通过标准,不得伪造成功。
真实请求前统一总门禁:只要 case 的 Trace、阶段报告、notes、fixtures、transcript 或 runtime 出现浏览器环境/XHR/fetch 信号,必须执行 check_environment_closure.js --before-real-request。总门禁主动聚合 Trace-runtime、对象形状、WebAPI/Realm/消息/DOM 行为矩阵、XHR/fetch no-send、同 Session、代码质量和 addon-first;任一失败都不得发送真实请求或交付。
最终项目和清理:最终项目只能有一个可直接运行入口 result/final.js 或 result/final.py,内部完成环境安装、Session 创建、动态资源刷新、参数生成、可选请求和 finally 销毁。不得包含浏览器自动化、临时 server/bridge、Trace、HAR、Hook、截图、Profile 或测试缓存。每个阶段及时清理临时产物;登录态和 Cookie 等敏感材料删除前确认用户意图。
case/阶段报告/01-需求信息确认.md;只有用户明确要求不生成报告时才记录豁免。baselineId,收集成功请求、相关 JS 和动态资源 freshness。source → entry → builder → writer,确认目标参数真实写入请求的位置。case/notes/代码变更记忆.md。--require-live 和实际 --tls-client。result/最终项目总结.md,记录 hashes、mismatch 数、矩阵、回放来源、Session 链、风险和清理结果。以下命令是主入口;更细的命令参数按对应 reference 使用。
# Intake
node scripts/check_intake.js --input task.md --markdown
# 真实请求前统一环境闭环
node scripts/check_environment_closure.js --case-dir case --before-real-request --markdown
node scripts/check_environment_closure.js --case-dir case --before-real-request --require-live --tls-client curl_cffi --markdown
# 阶段报告与最终产物
node scripts/check_stage_reports.js --case-dir case --require-dynamic-fields --markdown
node scripts/check_final_artifact.js --case-dir case --markdown
Trace 场景的最小闭环:
node scripts/build_trace_runtime_contract.js --case-dir case --baseline-id <baselineId> --markdown
node scripts/run_trace_runtime_audit.js --case-dir case --entry case/result/final.js --markdown
node scripts/check_trace_api_coverage.js --case-dir case --require-runtime-closure --markdown
XHR/fetch 场景的最小闭环:
node scripts/check_xhr_fetch_semantics.js --case-dir case --require --require-no-send --out case/tmp/xhr-fetch-semantics-audit.json --markdown
node scripts/check_xhr_fetch_session_bridge.js --case-dir case --require-live --tls-client curl_cffi --markdown
根据触发场景生成,不得手工填写 matched 代替机器观测:
case/notes/fingerprint-baseline.json 与统一 baselineId。trace-api-inventory.json、env-coverage-matrix.md、trace-runtime-contract.json、node-trace-runtime-audit.json。probeSuiteVersion/probeSourceFile/probeSourceHash 且含实际 observation 的 browser-env-detection-baseline.json、node-env-detection-audit.json、webapi-env-detection-matrix.md。browser-object-shape-baseline.json、node-object-shape-audit.json、object-shape-audit.md。xhr-fetch-semantics-audit.json、xhr-fetch-session-bridge-audit/v2。baselineId、完整长度、SHA-256、截断状态和回放 key。阶段报告与最终总结至少记录:
traceSourceHash、contractHash、runtimeSourceHash、baselineId、probe version。result/。