呜啦!日常碎碎念,偶尔掉落优质前端博文推荐、学习资源等
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
#优质博文 #React #LLM #前端 #AI #逆向工程
How to Steal Any React Component
网页做的还挺有趣的,介绍如何使用 React 的内部数据结构(通过 Fiber)和 LLM 来重建生产 React 应用程序中的组件,而无需原始源代码。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
How to Steal Any React Component
网页做的还挺有趣的,介绍如何使用 React 的内部数据结构(通过 Fiber)和 LLM 来重建生产 React 应用程序中的组件,而无需原始源代码。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 核心原理:理解浏览器中的两棵树
• DOM 树:浏览器渲染的 HTML 结构,可以通过开发者工具查看。
• React Fiber 树:React 维护的内部结构,记录了组件层次、属性 (Props) 和状态 (State)。
• 切入点:从 React 16 开始,React 将 Fiber 节点挂载在 DOM 元素上,通过遍历 DOM 即可获取组件的内部信息。
2. 数据采集:建立属性与输出的映射
• 组件归类:利用 Fiber 节点的 type 属性(内存引用)识别相同类型的组件。
• 样本收集:记录同一个组件在不同 Props 下产生的不同 HTML 输出,为 LLM 提供训练样本。
• 获取源码线索:通过 type.toString() 提取混淆后的源代码,辅助 LLM 理解业务逻辑。
3. 组件重建:LLM 与自动化验证
• LLM 提示词:向模型提供 Props 示例、HTML 输出和压缩后的源码,要求其写出干净的 React 代码。
• 验证循环 (Verification Loop):自动渲染 LLM 生成的组件,对比其 HTML 输出与原站点的差异,并根据 Diff 反馈给 LLM 进行修复。
4. 组装策略:拓扑排序与局限性
• 拓扑排序 (Topological Sort):根据依赖关系,先还原最底层的叶子组件(如 Button、Avatar),再逐步向上还原复杂的父组件(如 LoginForm)。
• 处理失效情况:针对 JS 动画导致的 DOM 状态不匹配或复杂的内部交互状态,如果 LLM 无法还原,则退而求其次使用 HTML 快照 (Snapshot)。
• 最终集成:将还原的组件与 CSS、静态资源 (Assets) 整合,构建出功能完整的 React 项目