需要从没有开放 API 的网页后台批量取数:电商店铺数据、内容平台创作者后台、招聘站点岗位库。这类页面普遍是 SPA + 虚拟滚动 + 深层嵌套 DOM,普通爬虫抓不到;人工复制粘贴又太慢,而客户通常只有自己的账号权限,根本拿不到接口。这个通道解决的就是「我只给你一个链接,你把数据拿出来」的活。
点击空白处退出提示
需要从没有开放 API 的网页后台批量取数:电商店铺数据、内容平台创作者后台、招聘站点岗位库。这类页面普遍是 SPA + 虚拟滚动 + 深层嵌套 DOM,普通爬虫抓不到;人工复制粘贴又太慢,而客户通常只有自己的账号权限,根本拿不到接口。这个通道解决的就是「我只给你一个链接,你把数据拿出来」的活。
直连本地 Chrome(CDP 9222)而不是启动无头浏览器,复用真实登录态,不触发新设备风控;穿透 Shadow DOM 定位元素;用真实鼠标事件(Input.dispatchMouseEvent 的 mousePressed/mouseReleased)代替 element.click(),绕过只认真实事件的前端框架;受控输入框用真实点击加 insertText 更新模型值;多标签并行操作;每个关键动作前后截全页图留证,出问题能回看现场;结果统一落盘为 JSON、截图和报告,不依赖对话记忆。
Node.js 主链路(单文件工具链,通过 CDP WebSocket 调 Runtime.evaluate、Input、Page 域),外层用 PowerShell 串成流水线,拆成六个原子动作:读页面正文、在页面里跑 JS、按选择器用真实鼠标点、按 XPath 点、按锚点标题定位同名按钮、真实键入。踩过的坑都写成了默认行为:后台标签页的 requestAnimationFrame 会冻结,所以坐标在脚本侧测量并在操作前 bringToFront;fade-leave 动画卡住的 loading 遮罩 opacity 为 0 但 pointer-events 仍是 auto,会吃掉所有点击,每次操作前先移除;受控组件的 focus() 不更新 v-model,必须真实点击再 insertText。同一套动作换站点只改选择器。



评论