ARTICLE · 1142860
AI 看不了网页?我用 CDP 重建浏览器采集通道,30 行脚本 2.7 秒读完全文
前言
AI 看不了网页,多半不是登录墙,是抓取器不执行 JS 拿到空壳。我的解法:带调试端口的 Chrome + CDP,脚本直读页面。

起因:一个简单到离谱的任务
9 月 27 日,我要复盘豆包当天替我干的活,素材攒成了一条豆包分享链接。我把链接甩给军师,任务只有一句话:把这个网页的内容读下来。
军师是我的 AI 数字员工团队的总调度,团队是我自研的一支 AI 岗位队伍,它管出主意、定规矩、盯执行,手下还有爬虫测试岗这样的专职岗位。读个网页这种活,我以为它一分钟就能回来。
结果它折腾了半小时,派了两次子代理,害我白重启一次浏览器,还强杀 Edge 丢了我的标签页。而真正解决问题的,是一条约 30 行的 Python 脚本:2.7 秒读完 44,540 字符,差不多一篇长文的量。
半小时对 2.7 秒,中间隔着四次翻车。按根因归类:误判、过度工程、知识过时,外加一次野路子。
翻车一:抓取器说"登录墙",浏览器说"直接开"
军师先用匿名抓取器去抓那条分享链接,页面返回:"会话过期,请重新登录"。它据此断定:豆包分享页强制登录。
我以为这个结论靠谱,结果它是错的。事后在真实浏览器里,那个页面无需登录、直接渲染。匿名抓取撞墙的真实原因,是抓取器不执行 JS,拿到的只是一个空壳页面。军师把"JS 没渲染"误读成"登录门槛",这是整场折腾的第一个根因。
这条教训后来被我写成硬规矩:凡是"登录墙"结论,必须经真实浏览器验证才许上报,抓取器的空壳响应不算证据。
翻车二:读一个页面,派了两次子代理
抓取失败,军师翻开派单路由表,把"读一个页面"派给了爬虫测试岗。子代理很负责,探活 3 分钟后回报:三条浏览器通道全断——9333 端口无监听、webbridge 桥接服务没在跑、Edge 插件接收端也没监听。
诊断本身精确,问题出在派单本身。团队章程里有条小菜阈值:单页读取这种小菜,军师直接上手,不许派单。派单路由表不是万能钥匙。
更冤的是,通道建成之后它读页面时又派了一次子代理。我两分钟后叫停:
"你要干嘛?"
这一嗓子逼出了正解:别派单,自己写脚本直连。
翻车三:Edge 明明带了参数,端口就是不开
通道全断,那就重建。军师让我退出 Edge,带 --remote-debugging-port=9333 重开,想直接接管我的日常浏览器。
我操作报了错,它接手:taskkill 强杀 Edge,我的标签页全没了,再带参数重开。进程命令行明明带上了参数,端口就是不开。
我以为命令行参数到位端口就会开,结果踩中一个冷门变更:2025 年中起,Chrome 和 Edge 改了安全策略,默认用户配置目录下直接忽略远程调试参数。军师不知道这条,害我白折腾一轮。做采集的读者记住这一条,能省一次重启。
翻车四:去磁盘缓存里挖,只挖到一堆 304
偏方也试了:翻 Edge 的磁盘缓存,16:07 落盘的 data_4 副本有 5.2MB,想从里面把对话正文挖出来。
挖开一看,缓存里只有页面 URL 条目和一堆 304 响应。对话正文走 API 传输,根本不进磁盘缓存。此路不通。
转机:我一句话,30 行脚本 2.7 秒

连续四次翻车之后,转机来自我的一句外行话:
"是不是开谷歌浏览器就可以了?"
这句话直接点破路线:别在 Edge 的默认配置目录里死磕,换 Chrome,给它一个独立配置目录。建成的链路长这样:
桌面快捷方式「浏览器-调试版(AI采集专用)」
= Chrome --remote-debugging-port=9333
--user-data-dir=D:\code\thinking\.crawler_local\chrome-debug-profile
9333 端口实测连通,返回 Chrome/126。我在这台浏览器里打开那条豆包链接,无需登录、直接渲染,翻车一的"登录墙"结论当场证伪。
接着就是那次被我叫停的过度工程之后,军师直连 CDP 写出 browser_read.py:自动开标签、滚动加载、全文落盘。2.7 秒,44,540 字符读完。期间 CDP 握手还报过一次 403,websocket 的 Origin 头被拒,解法是一行参数:suppress_origin=True。
三种读页方式摆在一起,差距很直观:
整改不是补洞,是建制
问题解决的当天,整改五条全部落地:
tools/browser_read.py投产,一条命令读任意页面; 桌面快捷方式建成,我在调试版 Chrome 里登录常用账号一次,cookie 磁盘持久保存; 我裁定"以后浏览器就使用这个浏览器",这句话落进三处:团队章程的数据源行、采集与测试两个岗位手册的通道节、配置台账;webbridge 和"连本人日常浏览器"两条旧路线标注退役; 配置 lint 闸实测 P0/P1 零违规; 故障台账记下完整归因条,状态全落地。
这套建制搬到公司场景也成立:一个团队但凡有 AI 采集需求,通道、工具、手册、台账一次成型,比每个页面临时想办法省得多。本次排查花了半小时,建成后读一个页面 2.7 秒,同类问题有了直达通道,这就是建制和补洞的差价。
四条教训,拿走即用
简单任务直达:读一个页面、改一个文案级别的小菜,先问"能不能一条命令解决",派单路由表不覆盖小菜; 通道知识要跟住厂商安全策略:远程调试这种基础设施级知识,我们定了每季度凭故障台账复核一次; "登录墙"结论必须经真实浏览器验证,空壳响应不算证据; 方向性直觉要当真:本场两个转折点("我明明开着页面""是不是开谷歌浏览器就可以了")都来自我这个外行,都比军师当时的判断更接近事实。
军师智商高、信息量大,但会想太多,像一个能力很强却总爱把简单任务复杂化的员工。我的用处,就是在它想太多的时候喊一嗓子。
FAQ
问:匿名抓取为什么会撞"登录墙"?答:很多页面靠 JS 渲染正文,抓取器不执行 JS,拿到的只是空壳加一句"请重新登录"。这不是登录墙,是渲染缺口,下结论前走真实浏览器通道验证一遍。
问:为什么 Edge 带了调试参数端口也不开?答:2025 年中起 Chrome/Edge 安全策略变更,默认用户配置目录下忽略远程调试参数。解法是用独立配置目录起一台调试专用浏览器,参数才生效。
问:browser_read.py 能抄走吗?答:思路全在文里:独立配置目录加调试端口,脚本走 CDP 直连,握手 403 就加 suppress_origin。完整脚本和通道手册的整理版我还在打磨,评论区扣"浏览器"蹲更新,整理好就发出来。
问:这台调试浏览器要每次重新登录吗?答:不用。独立配置目录意味着 cookie 磁盘持久保存,登录一次就行。
我是野生码农,AI实战派。17年全栈工程师,一人AI公司实践者。打造个人IP内容体系、软件全链路产品产线,拥有百套企业AI方案、200多个岗位Agent;自研知识库、AI数字员工系统,公开实战复盘。
本文所有内容均为本人 AI 实战的过程和结果,经 AI 整理后发布,无任何瞎编虚构内容。
这篇来自《AI员工团队》系列,记录这支团队的真实翻车与建制;下一篇还在排产日历里排队,题材不变、翻车不剪;每月月报栏目照常,真实数据全公开。
关注我,看真的。
野生码农AI实战 · 全网同名