过去抓取数据需要一个程序员,现在只需要一句话。
过去挡住业余抓取者的那几道技术门槛,恰好都对应着大语言模型最擅长的一类任务;一位长期做防御的人把它们逐个拆开,说明哪一道倒在哪里,以及防御为什么可能已经沦为摆设。
中文
复制

我职业生涯的大部分时间都在这个问题上做防守方,多年来我可以依赖一个舒服的假设:有能力大规模抓取我客户数据的人很少。不是因为防御做得好,而是因为这件事很烦。
这个假设不再成立了,我想把原因说准确——因为“现在 AI 能抓数据了”是一句标题,不是分析。有用的版本要窄得多:过去挡住业余玩家的每一道具体技术门槛,恰好都对应着大语言模型格外擅长的一类任务。搞清楚哪一道门槛倒在了哪里,正是防御方案还能用、还是已经悄悄沦为摆设的全部区别。
那就掀开引擎盖看看。
爬虫到底在做什么
把“爬取”这个词剥掉,剩下的就是一个小程序在重复四步:请求一个页面,收到它,把你在意的部分抠出来,再换下一个。浏览器每次打开网站时做的也是前两步。爬虫只是不用人来做,并且一口气做几千次。
返回的响应是 HTML——一棵描述页面结构的嵌套标签树。你想要的信息(一个价格、一个名字、一个邮箱)就位于这棵树里某个地址上。要拿到它,你得写一个选择器,一段短模式,意思是“找出长成这样的元素”。比如 .product-card .price 的意思是“在每一张商品卡片里,标签为 price 的那个元素”。
这就是全部的诀窍。而多年来,它同时也是那堵墙:
# THE OLD WAY - BRITTLE BY DESIGN
# Target a fixed path inside the page's structure.
cards = page.select(".product-card")
for card in cards:
name = card.select_one(".title").text
price = card.select_one(".price").text
save(name, price)
# One redesign later, ".price" is now ".amount".
# Nothing errors loudly. The data just stops. You debug.
有三个麻烦让这件事比看上去更难,每一个要求的编程熟练度都比上一个更高。页面在加载之后自己搭出来。 很多现代网站不会把数据塞在第一批 HTML 里发过来。它们发的是一个几乎空壳的页面,然后运行 JavaScript,从内部 API 取回真正的内容再画上去。用简单的方式请求页面,你拿到的是空壳。要拿到数据,你要么驱动一个无头浏览器——一个没有窗口的真浏览器,替你运行 JavaScript——要么找出页面正在调用的那个内部 API,直接从那里读。两条路都要求你知道这套机制存在。
从一页走到下一页。 真正的目标从来不是一个页面,而是一万个页面,藏在“下一页”按钮、无限滚动,以及不断分叉出更多链接的链接后面。走完这套结构而不迷路,也不把网站打到注意到你,本身就是一门小手艺。
维护税。 这才是安静的杀手。选择器很脆。网站哪天改了个类名或者重排了布局,你的爬虫就坏了——通常还不会吭声——你又得回到代码里。大规模爬取从来不是一次性的搭建。它是一件需要维护的事,而维护正是业余尝试死掉的地方。
说白了,门槛就在这里: 这三个问题都指向同一个前提——你得会读写代码、会读 HTML,而且这两样都得一直会。正是这个前提,而不是某一项巧妙的防御手段,让大规模采集始终掌握在相对少数人手里。
AI 究竟从这条流水线上去掉了什么
最容易想到的说法是,AI「让爬取变简单了」。没错,但太笼统。更准确的说法是:上面每一个具体的卡点,恰好都是 AI 的强项,而它把这些卡点逐个消解掉了。
1. 大白话直接变成能跑的代码
语言模型训练时见过海量的代码,也见过海量的 HTML。把页面的一小段丢给它,用日常语言说清你要什么,它就能写出抓取和解析这段内容的选择器代码。操作的人全程不用看 DOM,不用知道选择器是什么,甚至根本不用打开代码。第一道门槛——写提取逻辑——变成了一次对话。
2. 按语义提取,而不是按结构提取
这一点更重要,却更少被提及。你不必再写一个脆弱的选择器,指向某个值所在的位置,而是把页面渲染后的文本交给模型,按含义去要字段:
# THE NEW WAY - SURVIVES REDESIGNS
# No selectors. Describe the shape you want.
ask_model(
"Return every product on this page as JSON.",
"Fields: name, price. Nothing else."
)
# Back comes clean, structured data:
# [ {"name": "...", "price": "..."},
# {"name": "...", "price": "..."} ]
模型像人一样读页面——理解价格是什么,而不是它藏在哪个标签里。类名改了、区块挪了、整个布局重新做了样式:含义还在,提取就照样能用。 这就悄无声息地拆掉了维护成本这颗雷,而正是它,在历史上把爬虫从一时的手艺活变成了需要长期投入的技能。以前每隔几周就要坏一次的爬虫,现在多半耸耸肩就继续跑下去了。
旧的爬虫指向一个位置。新的爬虫理解一个页面。位置会变,含义不会。
3. 自己会导航的 Agent
把一个模型套进循环里,再给它一个浏览器,它就不再是代码生成器,而成了操作者。它看页面、决定做什么、动手、看结果、再来一遍。感知、推理、行动、观察。 因为驱动的是真正的浏览器,那些过去需要特殊处理的 JavaScript 重度页面直接就能跑。因为它能对看到的东西做推理,那些过去会让死板脚本崩掉的意外——突然弹出的窗口、第九页上略有不同的布局——变成了它绕过去的问题,而不是它挂掉的原因。第二道和第三道门槛就此一起被磨平了。
4. 试错成本几乎归零
这一切如今都藏在一个聊天框或一次廉价的 API 调用背后。上手的技术门槛接近于零;每采集一条记录的成本只有几分钱的一小部分。当技术门槛和价格门槛同时下降,能实际做这件事的人群不是小幅增长,而是成数量级地扩张。
同一件事,之前与之后
| 步骤 | 过去需要 | 现在 |
|---|---|---|
| 读懂页面结构 | 能看懂 HTML 和 DOM | 模型替你读 |
| 编写提取逻辑 | 写选择器和解析代码 | 一句话描述你要哪些字段 |
| 处理 JavaScript 渲染的页面 | 无头浏览器,或逆向出 API | Agent 直接驱动真实浏览器 |
| 应对网站改版 | 无休止地反复调试 | 基于语义的提取基本能扛住 |
| 技术门槛 | 会写代码的程序员 | 会打字提需求就行 |
| 拿到第一个结果的时间 | 几小时到几天 | 几分钟 |
从零开始是什么样子
设想一个从没写过一行代码的人。他想要本地区某一类所有商家的联系方式,来源是一个公开目录。放在几年前,这个念头当场就死了,因为他没有任何办法把它变成行动。 今天,他把目标描述给一个聊天工具,然后被一步步带着做——或者干脆把整件事交给一个 agent,让它直接做完。那个目录的列表其实是用 JavaScript 加载的,天真地抓取只会得到一个空壳,但 agent 跑的是真实浏览器,根本察觉不到这个区别。做到一半,详情页的布局变了;基于语义的提取照样输出干净的记录。 最后拿到的不是一堆乱七八糟的复制文本,而是结构化输出——一行行字段,可以直接丢进表格,或者喂给下一步自动化流程。 最后这一点值得琢磨。输出是_默认干净且结构化的_。一堆复制来的文本是个麻烦。一万条整齐、带标签的记录则是一个数据集,而数据集意味着你可以拿别的自动化流程去对接它。
为什么量级才是关键
大多数爬虫既无聊又完全合法。比价、搜索索引、学术研究——开放网络靠它运转。在美国,第九巡回法院在 hiQ Labs 诉 LinkedIn 一案中重申,采集公开可访问的数据不违反《计算机欺诈与滥用法》。(hiQ 最终还是输了——案件于 2022 年 12 月以 50 万美元判决和永久禁令和解,依据是合同与侵权,而非黑客相关条款。下次有人告诉你爬虫"合法"时,值得回想一下这一点。)
真正值得担心的不是合法性,而是当这道门槛对从来就不怀好意的用途消失时会发生什么。
同样的便利会把散落在各个公开资料里的个人信息一扫而空,拼成一个此前从未以这种形态存在过的整齐数据库。这一点被普遍低估了。关于你的任何单条信息放在公开场合通常都无害。危害出在拼接上:一个名字,加上工作单位,加上邮箱命名规律,加上位置,加上一张照片,从五个互不相关的地方抓来,缝进同一行记录。没有哪一块是秘密。危险的是这个组合——而组合过去恰恰是最费钱的那一步。
**锋利之处在于:**一个泄露的邮箱地址是小事。同一个地址混在十万个地址里——经过排序、结构化、可检索——就成了产品,而构建它的成本已经趋近于零。干净、结构化的真人名单和真实信息,是钓鱼和社会工程的大部分原材料。过去拖慢攻击者的那道繁琐的组装工序,恰恰是被自动化掉的那一道。
什么依然有效,以及为什么
接下来是令人鼓舞的部分,而它直接来自上面的分析。
AI 抹掉了技术信号,但没有抹掉行为信号。依赖客户端行为量级与方式的防御——而不是依赖构建者有多聪明——基本完好。真正吃紧的,是那些指望攻击者人数少、水平高的防御。
速率限制与节流
要采集一万条记录,仍然意味着要发出大约一万次请求。AI 改变不了这个算术。令牌桶限流器——每个客户端只允许稳定的请求速率,突发一律拒绝——仍然会逼得爬虫要么慢如蜗牛,要么在猛攻中暴露自己。这一层针对的是请求量,而无论背后是谁,请求量都是藏不住的。
依然有效。 AI 唯一无法狡辩的信号,就是它需要大量发问。
地址与网络信誉
请求来自 IP 地址,而地址是有历史的。来自已知数据中心网段的流量和家庭宽带看起来不一样,从同一个地方涌出的大量请求本身就是个标记。认真的运营者会把请求分散到大量轮换地址上以混入人群,因此防御方越来越关注整个网络上的模式,而不是单个地址:还是那套有条不紊的扫荡,只不过分散开了。
部分失效。 廉价的分布式手段削弱了按地址封禁的效果,权重因此转移到行为信号上。
客户端指纹与机器人检测
真实浏览器在 TLS 连接协商方式和请求顺序上会留下一致的特征。自动化客户端历来会露馅,要么是这些小细节上微妙地出错,要么是带着普通浏览器根本不会有的明显破绽。这长期以来是机器人检测的主力手段——在 OWASP 的自动化威胁分类中就是 OAT-011 Scraping,大多数商业机器人管理产品都严重依赖它。
正承受压力。 那些驱动真实浏览器的 agent 工具,仅仅因为本身就是真实浏览器,就抹掉了其中许多破绽。这更加说明不能只靠指纹识别。
行为分析
人会闲逛。他们落到某处,又折返回去,停一停,读一读,跟着一时兴起走。采集器则是系统性的:覆盖均匀、节奏均匀,该收窄的地方它铺开,真实会话里那些细碎的混乱它一点都没有。对会话的形状建模,把过于整齐的挑出来,是剩下最强的手段之一——恰恰因为它盯的是目标(把一切都收走),而爬虫不违背自己的目的就藏不住这一点。
经得起考验。 全面性就是破绽,而全面性正是关键所在。
蜜罐与泥潭
埋下人类永远不会看到或点击的链接——藏在屏幕外,或者干脆不可见——任何跟着这些链接走的东西都会暴露自己是自动化爬虫。再配上故意用极慢速度回应劣质客户端的端点,你就能以几乎为零的成本抓住并拖垮那些天真和半天真的爬虫。
依然便宜且有用。 挡不住谨慎的操作者;但能筛掉新近膨胀起来的庞大随意爬虫群体。
设计上让"公开"不等于"可批量获取"
这是结构性的修复,也是最持久的。看到一条记录和下载全部记录,应该是性质上的不同,而不只是程度上的不同。把会暴露批量的视图放到登录之后。限制单个账号能拉取的数量。不要发放连续、可猜测的标识符,让人靠数数就能枚举你的整个数据库。只有当已登录的真人索取某一条联系方式时,才展示它。 原则是:让单条访问容易,让批量访问昂贵。
值得投入的那一个。 它改变了所有人的成本结构,无论技术高低。
基础设施层也在动
值得留意行业的走向,因为它指向同一个方向。 2025 年 7 月,Cloudflare 成为第一家默认拦截 AI 爬虫的主流基础设施提供商,把新域名的 AI 访问从选择退出翻转为选择加入。一年后它走得更远:从 2026 年 9 月 15 日起,"混合用途"爬虫——在一次请求中混合搜索索引、智能体检索和模型训练的机器人——在任何带广告的页面上都会被默认拦截,新默认值将适用于新客户、新站点以及所有免费套餐账号。Cloudflare 给出的理由是,非人类流量如今已占互联网流量的大多数。 注意这在结构上意味着什么。它不是更好的指纹识别。它是我清单上的最后一项——访问设计——在 CDN 层实现,外加一条支付通道。能规模化的防御是改变成本结构的那个,而不是试图猜测客户端有多聪明的那个。 这件事的礼貌版本,Robots Exclusion Protocol,在作为惯例存在二十八年后,终于在 2022 年成为正式 RFC。它仍然是一个请求,而不是一种控制。把它当作意图的信号,让你后续的强制执行站得住脚——而不是当作防御。
**综合来看:**没有任何单一控制手段是一堵墙,分层防御从来就是重点。新问题在于该信任_哪些_层。既然 AI 抹平了「技术门槛」这个信号,就依靠它抹不平的信号:纯粹的规模、行为的形态,以及从设计上就让批量采集代价高昂的访问机制。法律层面——服务条款、对聚合个人数据的保护义务——对任何有声誉可失的人来说是真实的威慑,但把它当作一道围栏,而不是一把锁。它改变的是激励,拦不住请求。
如果你不是在防守一个网站
对个人来说,结论没那么宏大,但同样实在。把你公开发布的任何内容都当作可以被永久、廉价地采集。这一点在技术上一直成立;变的是有能力动手的人群规模。过去那句安慰——「是公开的没错,但谁会费这个劲」——已经悄悄不成立了,因为费劲不再有成本。 实际做法很无聊但有效:分享之前先想想,这些内容被拼在一起你是否介意,然后假定它一定会被拼起来。
底层的模式
记住一件事,因为它的影响远不止爬虫。 这里没有哪个要素是新的。爬虫很老。模型写代码也不是魔法。新的是这些零件被打包成了任何人都能上手的工具,而这次打包移除了那个一直把门槛撑高的唯一要求:得懂怎么做。 只要一项任务之所以难,_主要_难在它要求的技能上,而某个工具抹掉了这项技能,那这项任务就不只是变简单了。它能触达的人群和以前完全不同,而且大得多。那些假定对手数量少、技术强的防御手段,悄悄与现实脱了节;而盯着行为和规模的手段,成了全部胜负手。 爬虫只是你今后会不断遇到的一种转变的早期样本,而且异常干净。值得在这里学会读懂它——趁机制还看得清楚。
来源: HackerNoon← 返回首页