基于Electron和Puppeteer实现AI网页内容自动读取
1. 项目背景与需求解析最近在开发AI Agent时遇到一个典型痛点如何让Claude直接读取浏览器中的网页内容这个问题看似简单实际操作却充满挑战。我最初尝试通过浏览器扩展直接获取页面内容但遇到了跨域限制、内容格式混乱等问题。经过多次尝试最终通过桌面版方案完美解决了这个需求。这个需求的核心价值在于当我们需要让AI处理网页信息时传统复制粘贴方式效率低下且容易丢失格式。而直接让Claude读取网页内容可以实现实时获取最新页面数据保持原始内容结构和格式实现自动化信息处理流程2. 技术方案选型与对比2.1 浏览器扩展方案的局限性最初尝试通过浏览器扩展实现具体方案是开发Chrome扩展注入内容脚本通过DOM API获取页面内容通过消息传递发送到后台脚本但实际测试发现以下问题跨域限制导致无法获取iframe内容动态加载内容难以完整捕获内容格式混乱需要大量清洗扩展权限申请流程复杂2.2 桌面版方案的突破点转向桌面版方案后技术路线调整为使用Electron构建跨平台应用集成Puppeteer实现无头浏览器功能通过本地服务桥接Claude API这个方案的优势在于完全控制浏览器环境绕过跨域限制支持完整页面截图可处理JavaScript渲染内容3. 详细实现步骤3.1 环境准备与依赖安装首先需要准备开发环境# 安装Node.js和npm brew install node # MacOS choco install nodejs # Windows # 创建项目目录 mkdir claude-webreader cd claude-webreader npm init -y # 安装核心依赖 npm install electron puppeteer dotenv3.2 主进程配置创建main.js作为Electron主入口const { app, BrowserWindow } require(electron) const path require(path) let mainWindow function createWindow() { mainWindow new BrowserWindow({ width: 1200, height: 800, webPreferences: { nodeIntegration: true, contextIsolation: false } }) mainWindow.loadFile(index.html) } app.whenReady().then(createWindow)3.3 网页内容获取实现使用Puppeteer的核心逻辑const puppeteer require(puppeteer) async function getPageContent(url) { const browser await puppeteer.launch() const page await browser.newPage() await page.goto(url, { waitUntil: networkidle2 }) // 获取纯净文本内容 const textContent await page.evaluate(() { return document.body.innerText }) // 获取完整HTML const htmlContent await page.content() await browser.close() return { textContent, htmlContent } }4. Claude API集成方案4.1 认证配置创建.env文件存储API密钥CLAUDE_API_KEYyour_api_key_here CLAUDE_API_VERSION2023-06-014.2 API调用封装实现Claude交互模块const axios require(axios) require(dotenv).config() async function queryClaude(prompt, content) { const response await axios.post( https://api.claude.ai/v1/completions, { prompt: ${prompt}\n\n${content}, max_tokens: 2000, temperature: 0.7 }, { headers: { Authorization: Bearer ${process.env.CLAUDE_API_KEY}, Content-Type: application/json } } ) return response.data.choices[0].text }5. 完整工作流实现5.1 用户界面设计创建renderer.js处理前端交互document.getElementById(fetch-btn).addEventListener(click, async () { const url document.getElementById(url-input).value const { textContent, htmlContent } await window.api.getPageContent(url) document.getElementById(output).value textContent const analysis await window.api.analyzeWithClaude( 请总结以下网页内容的核心要点, textContent ) document.getElementById(analysis).innerHTML analysis })5.2 进程间通信在preload.js中暴露APIconst { contextBridge, ipcRenderer } require(electron) contextBridge.exposeInMainWorld(api, { getPageContent: (url) ipcRenderer.invoke(get-page-content, url), analyzeWithClaude: (prompt, content) ipcRenderer.invoke(analyze-with-claude, prompt, content) })6. 打包与分发6.1 打包配置安装打包工具npm install electron-builder --save-dev配置package.json{ build: { appId: com.example.claudereader, win: { target: nsis }, mac: { target: dmg } } }6.2 构建命令执行打包npx electron-builder7. 实际应用案例7.1 新闻内容分析测试CNN首页新闻抓取输入https://edition.cnn.com自动提取主要新闻标题生成内容摘要识别关键实体人物、地点、组织7.2 技术文档处理处理GitHub文档页面的效果保持代码块格式完整正确解析Markdown结构提取API参数表格8. 性能优化技巧8.1 缓存策略实现本地缓存避免重复请求const cache new Map() async function getWithCache(url) { if(cache.has(url)) { return cache.get(url) } const content await getPageContent(url) cache.set(url, content) return content }8.2 并发控制限制同时打开的页面数量const { Semaphore } require(async-mutex) const semaphore new Semaphore(3) async function safeGetPage(url) { const [value, release] await semaphore.acquire() try { return await getPageContent(url) } finally { release() } }9. 安全注意事项重要处理用户提供的URL时务必注意验证URL格式防止SSRF攻击设置合理的超时限制使用沙箱环境执行不可信内容实现URL校验function isValidUrl(url) { try { new URL(url) return url.startsWith(http://) || url.startsWith(https://) } catch { return false } }10. 扩展可能性10.1 浏览器集成通过nativeMessaging实现与Chrome的深度集成注册本地消息主机处理浏览器扩展请求双向通信传递内容10.2 自动化工作流结合RPA场景定时监控页面变化价格追踪与提醒竞品内容分析这个方案从最初在浏览器扩展方案中受挫到最终通过桌面版完美实现整个过程让我深刻体会到技术选型的重要性。实际使用中发现对于需要深度控制浏览器环境的场景桌面应用确实提供了更灵活的实现空间。

相关新闻

RAG内存瓶颈破解:用Rust库turbovec实现向量索引8倍内存压缩

RAG内存瓶颈破解:用Rust库turbovec实现向量索引8倍内存压缩

1. 项目概述:当RAG遇上内存瓶颈最近在折腾一个私有化部署的RAG(检索增强生成)项目,场景很典型:企业内部知识库,文档量不小,有几十个GB的PDF、Word和内部系统导出的文本。最初的方案用的是基于Py…

2026/8/9 6:44:07 阅读更多 →
从数据到PPT:Python全流程实现趣味数据分析与自动化报告

从数据到PPT:Python全流程实现趣味数据分析与自动化报告

这次我们来看一个名为“大数据求偶bfb”的项目。从标题和有限的材料来看,这并非一个传统的开源AI模型或工具,而更像是一个结合了“大数据”概念与“求偶”主题的创意性演示或分析项目,其核心载体是一个简单的PPT。对于技术社区的读者而言&…

2026/8/9 6:44:07 阅读更多 →
鸿蒙跨端开发实战:分布式应用与UI适配解析

鸿蒙跨端开发实战:分布式应用与UI适配解析

1. 鸿蒙生态应用开发全景解析 鸿蒙操作系统作为新一代智能终端操作系统,正在经历从移动端向全场景的快速演进。我最近参与了一个跨端应用开发项目,深刻体会到鸿蒙生态下开发模式的变化。与传统的Android/iOS开发相比,鸿蒙的分布式能力让应用可…

2026/8/9 6:43:06 阅读更多 →

最新新闻

Windows系统管理全攻略:从架构解析到实战优化

Windows系统管理全攻略:从架构解析到实战优化

1. Windows系统课程全记录:从入门到进阶实战Windows作为全球使用最广泛的桌面操作系统,其学习价值不言而喻。作为一名IT培训师,我整理了这份完整的Windows系统课程记录,涵盖从基础操作到高级管理的全栈知识体系。不同于市面上零散…

2026/8/9 7:44:32 阅读更多 →
ADK Skill开发五大设计模式:构建健壮可维护的智能体技能

ADK Skill开发五大设计模式:构建健壮可维护的智能体技能

1. 项目概述:为什么ADK开发者需要关注Skill设计模式?如果你正在使用或探索ADK进行Agent开发,大概率已经体验过从零开始构建一个能稳定运行、逻辑清晰的Agent Skill(技能)的挑战。ADK,即Agent Development K…

2026/8/9 7:44:32 阅读更多 →
AI赋能青少年心理健康:技术挑战、伦理边界与工程实践

AI赋能青少年心理健康:技术挑战、伦理边界与工程实践

上周,我注意到一个消息,OpenAI 和美国心理学会(APA)宣布合作,要共同推进青少年心理健康领域的 AI 应用。这消息乍一看,像是又一个“AI赋能传统行业”的新闻,但如果你仔细想想,把“AI…

2026/8/9 7:44:32 阅读更多 →
Unity开发术语精讲:从核心概念到高效实践

Unity开发术语精讲:从核心概念到高效实践

1. 项目概述:一份Unity开发者的“命名宝典” 在Unity开发这条路上,我踩过不少坑,其中有一个看似不起眼却频繁绊倒新手甚至老手的“小石子”——命名。我说的不是变量命名规范,而是Unity引擎自身那些五花八门的术语、组件、API名称…

2026/8/9 7:44:32 阅读更多 →
设计师走访陌拜专业公司

设计师走访陌拜专业公司

作为设计师,你是不是也有过这样的经历:为了给项目找到独特的材料,带着图纸走进一家陌生的石材公司,却不知道从哪看起?别担心,这篇文章用问答形式,聊聊设计师走访专业石材公司那些事,…

2026/8/9 7:44:32 阅读更多 →
Unity游戏汉化终极指南:XUnity Auto Translator完整教程

Unity游戏汉化终极指南:XUnity Auto Translator完整教程

Unity游戏汉化终极指南:XUnity Auto Translator完整教程 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而无法畅玩心爱的Unity游戏?面对日语、英语或其他外…

2026/8/9 7:43:32 阅读更多 →

日新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/8 17:02:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/9 0:45:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/8 17:02:44 阅读更多 →