[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-ulixee--secret-agent":3,"tool-ulixee--secret-agent":61},[4,18,26,36,44,52],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",141543,2,"2026-04-06T11:32:54",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":10,"last_commit_at":58,"category_tags":59,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,60],"视频",{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":77,"owner_twitter":76,"owner_website":78,"owner_url":79,"languages":80,"stars":114,"forks":115,"last_commit_at":116,"license":117,"difficulty_score":32,"env_os":118,"env_gpu":118,"env_ram":118,"env_deps":119,"category_tags":124,"github_topics":126,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":139,"updated_at":140,"faqs":141,"releases":172},4508,"ulixee\u002Fsecret-agent","secret-agent","The web scraper that's nearly impossible to block - now called @ulixee\u002Fhero","SecretAgent 是一款专为网页数据采集（爬虫）打造的现代化无头浏览器。它致力于解决传统自动化工具在抓取数据时容易被网站识别并拦截的痛点，通过模拟真实用户行为，显著降低被封禁的风险。\n\n这款工具特别适合需要稳定获取网页数据的开发者、数据分析师及研究人员使用。与主要面向测试的工具不同，SecretAgent 从底层架构上就为爬虫场景进行了优化。其核心亮点在于直接在 Node.js 环境中重构了完全合规的 DOM，让开发者无需处理复杂的上下文切换即可操作页面元素；同时，它基于强大的 Chrome 引擎渲染，支持灵活模拟各类主流浏览器特征，并能有效规避包括 TLS 指纹在内的全链路检测技术。\n\n值得一提的是，SecretAgent 已升级至 2.0 版本并更名为\"Hero\"（@ulixee\u002Fhero），目前正处于 Alpha 测试阶段，提供了更平滑的迁移路径。如果你正在寻找一个难以被阻挡、开发体验流畅的数据采集方案，SecretAgent 及其继任者 Hero 值得尝试。","## SecretAgent 2.0 === Hero\n\n> :bell: SecretAgent 2.0 is named \"[Hero](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fhero)\" and currently in alpha testing. We're ready for developers to begin to switch over - it's a pretty easy transition ([migration guide](https:\u002F\u002Fulixee.org\u002Fdocs\u002Fhero\u002Fhelp\u002Fmigration-guide)). Follow along with development of Hero [here](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fhero) or check out the latest npm packages `@ulixee\u002Fhero-playground`.\n\n---\n\n# SecretAgent\n\nSecretAgent is a web browser that's built for scraping.\n\n- [x] **Built for scraping** - it's the first modern headless browsers designed specifically for scraping instead of just automated testing.\n- [x] **Designed for web developers** - We've recreated a fully compliant DOM directly in NodeJS allowing you bypass the headaches of previous scraper tools.\n- [x] **Powered by Chrome** - The powerful Chrome engine sits under the hood, allowing for lightning fast rendering.\n- [x] **Emulates any modern browser** - BrowserEmulators make it easy to disguise your script as practically any browser.\n- [x] **Avoids detection along the entire stack** - Don't be blocked because of TLS fingerprints in your networking stack.\n\nCheck out our [website for more details](https:\u002F\u002Fsecretagent.dev).\n\n## Installation\n\n```shell script\nnpm i --save secret-agent\n```\n\nor\n\n```shell script\nyarn add secret-agent\n```\n\n## Usage\n\nSecretAgent provides access to the W3C DOM specification without the need for Puppeteer's complicated evaluate callbacks and multi-context switching:\n\n```js\nconst agent = require('secret-agent');\n\n(async () => {\n  await agent.goto('https:\u002F\u002Fexample.org');\n  const title = await agent.document.title;\n  const intro = await agent.document.querySelector('p').textContent;\n  await agent.close();\n})();\n```\n\nBrowse the [full API docs](https:\u002F\u002Fsecretagent.dev\u002Fdocs).\n\n## Contributing\n\nWe'd love your help in making SecretAgent a better tool. Please don't hesitate to send a pull request.\n\n## License\n\n[MIT](LICENSE.md)\n","## SecretAgent 2.0 === Hero\n\n> :bell: SecretAgent 2.0 被命名为“[Hero](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fhero)”，目前处于 Alpha 测试阶段。我们已准备好让开发者开始迁移——迁移过程相当简单（[迁移指南](https:\u002F\u002Fulixee.org\u002Fdocs\u002Fhero\u002Fhelp\u002Fmigration-guide)）。您可以通过 [这里](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fhero) 关注 Hero 的开发进展，或查看最新的 npm 包 `@ulixee\u002Fhero-playground`。\n\n---\n\n# SecretAgent\n\nSecretAgent 是一款专为网页抓取而构建的浏览器。\n\n- [x] **专为抓取设计**——它是首款现代无头浏览器，专门针对抓取任务而非单纯的自动化测试而设计。\n- [x] **面向 Web 开发者**——我们在 Node.js 中直接重现了一个完全符合标准的 DOM，让您无需再为以往的抓取工具所困扰。\n- [x] **基于 Chrome 内核**——强大的 Chrome 引擎作为其核心，带来闪电般的渲染速度。\n- [x] **可模拟任何现代浏览器**——通过浏览器模拟器，您可以轻松地将您的脚本伪装成几乎任何浏览器。\n- [x] **全栈规避检测**——避免因网络栈中的 TLS 指纹而导致被封禁。\n\n更多详情请访问我们的 [官网](https:\u002F\u002Fsecretagent.dev)。\n\n## 安装\n\n```shell script\nnpm i --save secret-agent\n```\n\n或者\n\n```shell script\nyarn add secret-agent\n```\n\n## 使用\n\nSecretAgent 提供对 W3C DOM 规范的直接访问，无需像 Puppeteer 那样使用复杂的 evaluate 回调和多上下文切换：\n\n```js\nconst agent = require('secret-agent');\n\n(async () => {\n  await agent.goto('https:\u002F\u002Fexample.org');\n  const title = await agent.document.title;\n  const intro = await agent.document.querySelector('p').textContent;\n  await agent.close();\n})();\n```\n\n浏览完整的 [API 文档](https:\u002F\u002Fsecretagent.dev\u002Fdocs)。\n\n## 参与贡献\n\n我们非常欢迎您的帮助，共同让 SecretAgent 成为更优秀的工具。请随时提交 Pull Request。\n\n## 许可证\n\n[MIT](LICENSE.md)","# SecretAgent 快速上手指南\n\nSecretAgent 是一款专为网页抓取（Scraping）打造的现代无头浏览器。它基于 Chrome 引擎，直接在 Node.js 中提供完全合规的 DOM 环境，无需像 Puppeteer 那样处理复杂的上下文切换，能有效规避 TLS 指纹检测并模拟各类主流浏览器。\n\n> **注意**：SecretAgent 2.0 已更名为 **[Hero](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fhero)** 并处于 Alpha 测试阶段。新项目建议关注 Hero 的迁移指南，本指南基于当前稳定的 SecretAgent 版本。\n\n## 环境准备\n\n- **操作系统**：Windows、macOS 或 Linux\n- **运行时**：Node.js (建议 v14 及以上版本)\n- **包管理器**：npm 或 yarn\n\n## 安装步骤\n\n使用 npm 安装：\n\n```shell script\nnpm i --save secret-agent\n```\n\n或使用 yarn 安装：\n\n```shell script\nyarn add secret-agent\n```\n\n> 💡 **国内加速提示**：若下载缓慢，可配置淘宝镜像源：\n> `npm config set registry https:\u002F\u002Fregistry.npmmirror.com`\n\n## 基本使用\n\nSecretAgent 允许你直接通过 W3C DOM 标准操作页面，代码简洁直观。以下是最简单的抓取示例：\n\n```js\nconst agent = require('secret-agent');\n\n(async () => {\n  await agent.goto('https:\u002F\u002Fexample.org');\n  const title = await agent.document.title;\n  const intro = await agent.document.querySelector('p').textContent;\n  \n  console.log('标题:', title);\n  console.log('内容:', intro);\n  \n  await agent.close();\n})();\n```\n\n更多详细 API 文档请访问：[SecretAgent Docs](https:\u002F\u002Fsecretagent.dev\u002Fdocs)","某电商数据团队需要每日从多个采用反爬机制的竞争网站抓取实时价格与库存信息，以支撑动态定价策略。\n\n### 没有 secret-agent 时\n- 常规爬虫脚本极易被目标网站识别为自动化程序，导致请求刚发出就返回 403 禁止访问或直接重定向到验证码页面。\n- 为了绕过检测，开发人员不得不花费大量时间维护复杂的 TLS 指纹伪装代码，并频繁切换代理 IP，稳定性极差。\n- 使用传统无头浏览器（如旧版 Puppeteer）时，因 DOM 环境不真实或 JavaScript 执行上下文分离，常导致关键动态内容无法渲染或提取失败。\n- 每次网站更新反爬策略，整个抓取链路就会中断，团队需紧急修复脚本，严重延误数据分析时效。\n- 多上下文切换和复杂的回调函数使得代码逻辑支离破碎，调试困难，新成员难以接手维护。\n\n### 使用 secret-agent 后\n- secret-agent 内置的浏览器模拟器能完美伪装成任何现代真实浏览器，轻松通过网站的自动化检测，直接获取目标数据。\n- 其底层自动处理了网络栈的 TLS 指纹问题，无需手动配置复杂的加密参数，从根本上避免了因指纹特征被封禁的风险。\n- 基于 Chrome 引擎并在 NodeJS 中重建了完全合规的 DOM 环境，确保页面动态内容完整渲染，数据提取准确无误。\n- 即使目标网站升级防御策略，secret-agent 的自适应能力也能保证抓取任务持续稳定运行，大幅降低运维成本。\n- 开发者可直接使用标准的 W3C DOM API 编写代码，消除了繁琐的回调与上下文切换，脚本简洁清晰，开发效率显著提升。\n\nsecret-agent 通过提供近乎真实的浏览器环境和全栈防检测能力，将高难度的反爬对抗转化为简单标准的数据抓取流程。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fulixee_secret-agent_d8c88802.png","ulixee","Ulixee","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fulixee_47a4c73b.png","Ulixee turns every website into an open API. It's built on a decentralized blockchain, meaning there are no logins, no throttle limits, and no restrictions.",null,"info@ulixee.org","https:\u002F\u002Fulixee.org","https:\u002F\u002Fgithub.com\u002Fulixee",[81,85,89,92,96,100,104,108,111],{"name":82,"color":83,"percentage":84},"TypeScript","#3178c6",89.3,{"name":86,"color":87,"percentage":88},"Vue","#41b883",4.3,{"name":90,"color":91,"percentage":10},"JavaScript","#f1e05a",{"name":93,"color":94,"percentage":95},"Go","#00ADD8",1.3,{"name":97,"color":98,"percentage":99},"SCSS","#c6538c",1.2,{"name":101,"color":102,"percentage":103},"HTML","#e34c26",0.6,{"name":105,"color":106,"percentage":107},"Dockerfile","#384d54",0.1,{"name":109,"color":110,"percentage":107},"Shell","#89e051",{"name":112,"color":113,"percentage":107},"CSS","#663399",729,48,"2026-04-05T06:02:48","MIT","未说明",{"notes":120,"python":121,"dependencies":122},"该工具基于 Node.js 运行，非 Python 项目。它使用 Chrome 引擎作为底层支持，专为网页抓取设计，能够模拟现代浏览器并避免被检测。当前 2.0 版本已更名为 'Hero' 并处于 Alpha 测试阶段。","不适用",[64,123],"@ulixee\u002Fhero-playground",[125,13,16],"插件",[127,128,129,130,131,132,133,134,135,136,137,138],"scraping","automated","browser","chromium","secretagent","proxy","mitm","mitmproxy","stealth","playwright","puppeteer","devtools","2026-03-27T02:49:30.150509","2026-04-07T00:48:54.666780",[142,147,152,157,162,167],{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},20507,"如何在 Secret Agent 中对 iframe 或子框架执行 JavaScript？","可以通过获取 `agent.frameEnvironments` 数组来访问所有框架（包括主窗口和 iframe）。遍历该数组，对每个框架对象调用 `.use()` 方法注册插件（如 ExecuteJsPlugin），然后直接在该框架对象上调用 `.executeJs()` 执行代码。注意：确保使用的是支持该功能的版本（如 1.5.11+），早期版本可能存在导出问题。示例代码逻辑为：先 `const frames = await agent.frameEnvironments;`，然后循环中 `frame.use(Plugin)` 接着 `frame.executeJs(...)`。","https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fissues\u002F321",{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},20508,"遇到 'spawn ENOMEM' 错误导致 UnhandledErrorOrRejection 怎么办？","该错误通常表示系统内存不足（Out of Memory），导致无法生成新的浏览器进程。虽然维护者难以复现特定环境下的此问题，但通用解决方案是增加服务器的可用内存，或者限制并发运行的 Agent 实例数量。如果问题持续，尝试重启服务器释放内存，或检查是否有其他进程占用了大量内存。","https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fissues\u002F106",{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},20509,"运行脚本后进程挂起不退出，或者提示 'createBrowser is not a function' 是怎么回事？","这通常是因为浏览器实例关闭后，Secret Agent 的核心进程没有自动完全关闭。如果在代码中只调用了 `browser.close()` 而没有调用 `SecretAgent.shutdown()`，且没有其他活动窗口，进程可能会挂起。解决方案是在脚本结束前显式调用 `SecretAgent.shutdown()`，或者升级到新版本，新版本优化了当最后一个浏览器窗口关闭时自动触发完全关闭的逻辑。","https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fissues\u002F35",{"id":158,"question_zh":159,"answer_zh":160,"source_url":161},20510,"频繁访问 URL 时出现 'ERR_HTTP2_ERROR: Protocol error' 错误如何处理？","这是一个已知的协议错误，通常在旧版本中频繁出现并可能导致进程挂起。维护者确认该问题在新版本中已得到修复或缓解（不再导致进程挂起）。如果遇到此错误，首要解决方案是将 `@secret-agent\u002Fcore` 及相关包升级到最新版本。升级后，即使偶尔出现该错误日志，也不会阻塞程序运行。","https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fissues\u002F174",{"id":163,"question_zh":164,"answer_zh":165,"source_url":166},20511,"能否为不同的标签页（Tab）设置不同的代理 IP？","目前代理设置是在 `SecretAgent` 实例级别进行的，而不是针对单个标签页或请求对象。`Tab.Request` 或页面内的请求对象会继承创建该 Agent 时设置的代理、User-Agent 和 Referer 等上下文信息。如果需要为不同标签页使用不同代理，必须创建多个独立的 `SecretAgent` 实例，每个实例配置不同的代理，然后在各自的实例中打开标签页。","https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fissues\u002F92",{"id":168,"question_zh":169,"answer_zh":170,"source_url":171},20512,"在 Ubuntu 上运行时，iframe 内容无法加载或 innerHTML 为空是什么原因？","如果在 Ubuntu 等 Linux 环境下发现 iframe 内容为空，而本地正常，这通常不是 Secret Agent 的 Bug，而是目标网站进行了反爬虫检测。许多网站会检测无头浏览器环境或特定的指纹特征，从而故意阻止 iframe 内容的渲染或返回空数据。建议检查目标网站的反爬策略，尝试调整指纹配置，或者确认是否被目标站点针对性地屏蔽了帧加载。","https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fissues\u002F270",[173,178,183,187,192,197,202,207,211,215,219,224,229,234,239,244,249,254,259,264],{"id":174,"version":175,"summary_zh":176,"released_at":177},126481,"v1.6.5","## 变更内容\n* chore(deps): 由 @dependabot 在 https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fpull\u002F425 中将 shelljs 从 0.8.4 升级至 0.8.5\n* chore(deps): 由 @dependabot 在 https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fpull\u002F430 中将 nanoid 从 3.1.23 升级至 3.2.0\n* chore(deps): 由 @dependabot 在 https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fpull\u002F432 中将 trim-off-newlines 从 1.0.1 升级至 1.0.3\n* chore(deps-dev): 由 @dependabot 在 https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fpull\u002F437 中将 node-sass 从 6.0.0 升级至 7.0.0\n* chore(deps): 由 @dependabot 在 https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fpull\u002F439 中将 follow-redirects 从 1.14.7 升级至 1.14.8\n* 用户资料修复：解决 FileChooser 干扰及性能问题，由 @blakebyrnes 在 https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fpull\u002F455 中完成\n* Cookie 修复，由 @blakebyrnes 在 https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fpull\u002F467 中完成\n* chore(deps): 由 @dependabot 在 https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fpull\u002F463 中将 urijs 从 1.19.10 升级至 1.19.11\n* chore(deps): 由 @dependabot 在 https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fpull\u002F458 中将 plist 从 3.0.4 升级至 3.0.5\n* chore(deps): 由 @dependabot 在 https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fpull\u002F449 中将 simple-get 从 3.1.0 升级至 3.1.1\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcompare\u002Fv1.6.4...v1.6.5","2022-05-25T16:22:12",{"id":179,"version":180,"summary_zh":181,"released_at":182},126482,"v2.0.0-alpha.2","\n","2022-06-03T01:56:42",{"id":184,"version":185,"summary_zh":181,"released_at":186},126483,"v2.0.0-alpha.1","2022-06-03T01:56:53",{"id":188,"version":189,"summary_zh":190,"released_at":191},126484,"v1.6.4","\r\n\r\n* **中间人攻击:** 查询公网 IP 时应使用 HTTPS ([5a68228](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F5a6822851a71aff940900ea4f41365c997314ee2)","2022-01-24T16:25:34",{"id":193,"version":194,"summary_zh":195,"released_at":196},126485,"v1.6.3","\r\n### Bug修复\r\n\r\n* **client:** 等待所有命令队列刷新完毕 ([95664f5](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F95664f570b6b7e233ea6b6227ad5f363cce52287))\r\n* **core:** 清理事件监听器内存 ([6f7d7bb](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F6f7d7bb449714876ab9a90ec4697c012d8c7bff3))\r\n* **core:** 页面导航时资源未解析 ([2539d78](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F2539d7809d0709d709cff9bba48f411361e8ebc9))\r\n\r\n","2022-01-14T13:57:59",{"id":198,"version":199,"summary_zh":200,"released_at":201},126486,"v1.6.2","\r\n### Bug 修复\r\n\r\n* **客户端:** reload 应当返回资源 ([83b80b5](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F83b80b5b3d70bc06344fb64d31fed1434ac98114)), 关闭 [#393](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fissues\u002F393)\r\n* **核心:** 直接跳转到哈希值的导航已修复 ([c02f61b](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fc02f61b549d34c438614ab8f63c8fce17af60d2c)), 关闭 [#404](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fissues\u002F404)\r\n\r\n\r\n### 功能特性\r\n\r\n* **客户端:** 在 waitForLocation 中返回资源 ([253b33b](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F253b33b3528952432528949ab0dc2c8b4cf9a50c))\r\n* **核心:** 对话框应当从命令行中运行 ([52a737f](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F52a737ff7ca380b00a1f156aa7dacf5e9af0bcfb)), 关闭 [#397](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fissues\u002F397)\r\n\r\n","2021-12-20T13:56:35",{"id":203,"version":204,"summary_zh":205,"released_at":206},126487,"v1.6.1","\r\n\r\n### Bug 修复\r\n\r\n* **core:** 处理重定向时的框架导航 ([de3ea24](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fde3ea248a0fda5b8d08c7de961bac4f9fdc0b83e))\r\n* **core:** 当元素不存在时正确处理 detached 状态 ([5b46bd9](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F5b46bd97cf1ca1aa3bc0fed625064764726872f4))\r\n* **puppet:** 提取导航加载器 ([77d8e2e](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F77d8e2e34286469a2df1d9e00e631c6e773760eb))\r\n* **replay:** 修复回放 data 属性的功能 ([9440995](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F944099560870c8479f0be59426fa194daf17ab4d))\r\n\r\n### 功能改进\r\n\r\n* **plugins:** 添加可执行 JavaScript 的框架 ([65258a3](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F65258a3fa6ad23f7263bd0f90d86bebf751d8e94))\r\n\r\n## 重大变更\r\n如果你有一个使用 PuppetFrames 的 CorePlugin，其加载器结构已稍作调整，以提高稳定性。`waitForLoad` 现已更名为 `waitForLifecycleEvent`，并且现在可以正确接受超时值。每个加载器现在都是一个独立的对象（NavigationLoader），用于跟踪特定 URL 的加载状态。\r\n\r\n\r\n\r\n","2021-12-14T17:10:01",{"id":208,"version":209,"summary_zh":181,"released_at":210},126488,"v1.5.15","2021-11-24T14:26:42",{"id":212,"version":213,"summary_zh":181,"released_at":214},126489,"v1.5.14","2021-11-15T16:19:09",{"id":216,"version":217,"summary_zh":181,"released_at":218},126490,"v1.5.13","2021-10-25T21:23:20",{"id":220,"version":221,"summary_zh":222,"released_at":223},126491,"v1.5.12","\r\n### Bug修复\r\n\r\n* **mitm:** 处理在设置之前解析证书的情况 ([4ea9566](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F4ea956633443ce195174a1c05844c147a0a6731a))\r\n* **mitm:** 在POST请求后重新加载waitForLocation ([fb3e3d7](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Ffb3e3d7819cdf472d00370f5bcbdbd262e961a67))\r\n\r\n\r\n","2021-09-26T21:00:49",{"id":225,"version":226,"summary_zh":227,"released_at":228},126492,"v1.5.11","\r\n\r\n### 错误修复\r\n\r\n* **插件：** 修复动态插件及类型定义 ([98ed6f8](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F98ed6f839915aff76bdaf31bc98addeddc309f17))","2021-09-20T13:31:22",{"id":230,"version":231,"summary_zh":232,"released_at":233},126493,"v1.5.10","### 错误修复\n\n* **插件：** 未及时调用初始化函数 ([1ecebed](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F1ecebed990f70fc61250b779b15b8dcbc1e4c2c7))\n* **用户配置文件：** 处理空数据库 ([c9abf9a](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fc9abf9ab846df0d9df3ccd3b952379e8f79d9dfe))","2021-09-11T16:03:56",{"id":235,"version":236,"summary_zh":237,"released_at":238},126494,"v1.5.9","### 错误修复\n\n* **插件：** 导出 ClientPlugin\u002FCorePlugin ([882674c](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F882674c9397d878922ce9863429f5e156d3df9e4))\n* **插件：** iframe 内容窗口错误 ([7381189](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F7381189f44cf28738e50dab40546b9b83141c31d))\n\n\n### 功能特性\n\n* **核心：** 仅使用有效的 sinceCommandIds ([75056c3](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F75056c3ba343b89de8be0536743343b1a3bea238))\n* **文档：** 调整文档 ([39632b5](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F39632b5a51b97eb708fa8f26ac7d247725474926))\n* **插件：** 移除针对 Chrome 的编解码器覆盖 ([17a16a5](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F17a16a515de3dfa65d6624f5c3f5244a744755d1))\n\n","2021-09-08T20:10:57",{"id":240,"version":241,"summary_zh":242,"released_at":243},126495,"v1.5.8","\r\n\r\n\r\n### Bug 修复\r\n\r\n* **core:** 抛出无效选择器异常，修复等待 x\u002Fy 问题 ([2025f27](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F2025f27d749011730609202cbf5798496a3fccc1))\r\n* **plugins:** 修复版本号排序不正确的问题 ([b9e7620](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fb9e76205c9c615f2639ca39e0f1e589c8bf15adf))\r\n\r\n\r\n### 功能特性\r\n\r\n* **replay:** 使用旧脚本作为启动 core 的路径 ([c1f893d](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fc1f893de9a871d3e94450a721ac7c05fcc17ceee))","2021-08-30T14:46:00",{"id":245,"version":246,"summary_zh":247,"released_at":248},126496,"v1.5.7","\r\n\r\n### Bug Fixes\r\n\r\n* **mitm:** disable upstream proxy for dns lookup ([bacfb10](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fbacfb1020ff7e27c91dc53894ecb6572ff97b878))\r\n* track frame network events before create ([56f924d](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F56f924d9c2d815e09f1b1cd80ca9e3af41734450))\r\n\r\n\r\n### Features\r\n\r\n* move back to pipeTransport ([e13f048](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fe13f048b22776bf847bddb870f921d148f243b10))\r\n\r\n","2021-08-26T23:34:08",{"id":250,"version":251,"summary_zh":252,"released_at":253},126497,"v1.5.6","\r\n### Bug Fixes\r\n\r\n* **core:** handle single page app location changes ([da27e1d](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fda27e1d9affeccd838d72b53ea3dfc15654c098a))\r\n* **puppet:** always shut down chrome ([b16ed81](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fb16ed81715ef02630ab0f8f48f12c60b7a0f12ee))\r\n* **puppet:** catch errors in indexedDb export ([a787b1d](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fa787b1d94da81cb3ed768fb0b1587d96739a23e7))\r\n* allow no rectangle for screenshot ([e4d5597](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fe4d559717831afb277ca47b83c840c78dcf8fa08))\r\n\r\n\r\n\r\n","2021-08-15T21:29:56",{"id":255,"version":256,"summary_zh":257,"released_at":258},126498,"v1.5.5","\r\n### Bug Fixes\r\n\r\n* **client:** allow plugins in handlers ([5371d99](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F5371d99dbb7968b55b895444203e7b204acfa19c))\r\n* **core:** fix headed browser size\u002Fviewport docs ([c1623be](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fc1623be023d8aa02a554231cd98d2ce6cb00216f))\r\n* **mitm:** certs message invalid ([b6b0a5c](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fb6b0a5c63f6ddab0f5a4523bf9698b75e4620485)), closes [#309](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fissues\u002F309)\r\n* change userAgent example to remove asterisk ([f268ae8](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Ff268ae8ab65510a008e6b4112330c89b23e9ff8c))\r\n* cherrypick bug fixes from hero ([a3e8fbf](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fa3e8fbfa42570df605487f53b5b0cc784eaf6423))\r\n\r\n### Features\r\n\r\n* **plugins:** chrome 88 emulator data ([f537be2](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Ff537be23fa2d101f275d01671e3f0d12ac1374a6))\r\n","2021-07-29T15:43:55",{"id":260,"version":261,"summary_zh":262,"released_at":263},126499,"v1.5.4","\r\n### Bug Fixes\r\n\r\n* **mitm:** http2 session frame emulator data ([1e61a91](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F1e61a91dad0f575ddbdde9dc66acba7e8de62df6))\r\n* fixed paths ([6a28d80](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F6a28d8069111356e0b63d23003187ecd08a365b8))\r\n* fixed some unclear documentation related to plugins ([9868428](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F98684285e5218808f506fad1cdf68c0e4662e017))\r\n* useragent was not correctly parsing mac os 11 ([3a177ed](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F3a177edb690f0f6373942720f3fdf304a2aad596))\r\n* **core:** fix interact with elements in iframes ([c0c7a6e](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fc0c7a6e0b93fddf418edf1298bb2d1419ebd65ed))\r\n* **puppet:** clean data dir on close ([6c2b85f](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F6c2b85f007656192a8c103c2aa6752a0de3ab091))\r\n* **puppet:** retry on failure to delete chrome dir ([ccb07b3](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Fccb07b3a9f77e51ce35fbd20dd6a5b8c7310eaf4))\r\n\r\n\r\n### Features\r\n\r\n* args can now be passed into ExecuteJsPlugin ([0ed06f0](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002F0ed06f0e98a3076c04e5a1aedd5e0dfc53ac6392))\r\n* first stab at documenting plugins + simplified plugin architecture ([fcaa3cf](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Ffcaa3cfdca98b6f85128c196369d63ae40642df1))\r\n* register Core plugins through agent.use ([eb08964](https:\u002F\u002Fgithub.com\u002Fulixee\u002Fsecret-agent\u002Fcommit\u002Feb0896454ed1e265459fc174a937f666c975844d))\r\n\r\n","2021-07-14T13:46:54",{"id":265,"version":266,"summary_zh":181,"released_at":267},126500,"v1.5.3","2021-07-01T14:06:49"]