用途
Authenticated Web Scraper 用于抓取需要认证的网站内容,例如带 2FA、SSO 或企业登录的站点。它借助 Chrome DevTools Protocol(CDP)调用用户 Windows 上的 Edge 浏览器完成抓取,专为 WSL2 环境设计,因为 Playwright/Puppeteer 在 WSL2 中无法直接访问 Windows 浏览器端口。
适用场景
- 镜像位于企业认证之后的内部文档站点
- 抓取需要 2FA/SSO、难以自动化的网站内容
- 从已认证网页中提取结构化内容(文本、HTML、链接)
- 爬取站点导航树并按可配置深度跟随链接
架构说明
环境分为 WSL2 与 Windows 两侧:
- WSL2 侧首先终止 Edge 进程,
- 然后以调试参数启动 Edge(--remote-debugging-port=9222、--remote-debugging-address=0.0.0.0 等),
- 用户在浏览器中完成认证,
- 通过 cmd.exe 在 Windows 侧运行抓取脚本 scraper.mjs,脚本连接 localhost:9222,
- 输出写入 C:\Temp...,由 WSL2 侧读取结果。
关键点:WSL2 不能直接访问 Windows 的 localhost:9222,抓取脚本必须在 Windows 侧通过 cmd.exe /c "node script.mjs" 运行。
快速开始
当用户要求抓取认证网站时:
- 杀掉已有 Edge 进程,并带调试参数重新启动
- 用户在有头浏览器中完成认证
- 将抓取脚本复制到 Windows 临时目录,通过 cmd.exe 运行
- 脚本连接 CDP,导航页面并提取内容
- 从共享文件系统(/mnt/c/Temp/...)读取结果
核心工作流
阶段 0:前置条件
- Windows 上必须已安装 Node.js(可用 cmd.exe /c "where node" 检查)
- Windows 侧需安装 ws npm 包(cmd.exe /c "cd C:\Temp && npm install ws")
- 已安装 Edge 浏览器(检查路径 /mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe)
阶段 1:带远程调试启动 Edge
关键:必须先杀掉所有 Edge 进程,否则调试参数会被忽略。随后以 detached 方式启动 Edge,并传入调试端口、调试地址、允许来源以及目标 URL 等参数。
阶段 2:验证 CDP 与用户认证
需在 Windows 侧查询调试端点以验证 CDP 正在运行,例如通过 PowerShell 请求 http://localhost:9222/json/version。然后提示用户完成认证,并确认其能看到内容。
阶段 3:通过 CDP 抓取
编写 Node.js 脚本,执行以下操作:
- 查询 http://localhost:9222/json/list 获取打开的页面
- 通过 WebSocket(ws 包)连接目标页面
- 使用 Runtime.evaluate 提取 DOM 内容
- 使用 Page.navigate + Page.enable 进行爬取
- 每页保存 .txt(纯文本)、.html(完整 HTML)和 _links.json
在 Windows 侧运行,例如将脚本复制到 C:\Temp 后通过 cmd.exe 执行,输出目录一并传入。
阶段 4:爬取导航
- 从初始页面提取侧边栏/导航链接
- 过滤为同域页面(跳过锚点链接)
- 访问每个导航页面,提取内容与链接
- 跟随发现的链接,深度一层并去重
- 写入包含页面清单的汇总 JSON
CDP 命令参考
- 导航:Page.navigate,传入 url
- 提取文本:Runtime.evaluate,表达式如 document.querySelector("main").innerText,returnByValue: true
- 提取链接:Runtime.evaluate,用 JSON.stringify 将 a[href] 映射为 {href, text} 数组,returnByValue: true
- 获取完整 HTML:Runtime.evaluate,表达式 document.documentElement.outerHTML,returnByValue: true
关键细节
- 必须先杀 Edge:若 Edge 已在运行,新实例会加入既有进程并忽略 --remote-debugging-port
- WSL2 网络:WSL2 有独立网络栈,其中的 127.0.0.1 无法到达 Windows,脚本必须通过 cmd.exe 在 Windows 上运行
- 克制爬取:页面加载之间加入 2 秒延迟
- 认证持久化:Edge 使用用户默认配置文件及其已保存会话
- 输出路径:脚本中使用 Windows 路径(C:\Temp...),在 WSL 侧通过 /mnt/c/Temp/... 读取
集成方式
- 可配合任何位于企业认证(SSO、SAML、FIDO2 等)之后的文档站点使用
- 输出可交给其他技能进行分析、摘要或构建知识库
- 适合与 investigation-workflow 和 knowledge-builder 技能搭配使用
限制
资料未提供具体的收费、价格与性能指标;实际可用性取决于 Windows 侧 Node.js、ws 包与 Edge 的安装情况,以及用户能否在浏览器中完成认证。