百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

OpenAI爬虫疯狂“偷”数据,7人团队十年心血网站一夜崩了,CEO:太离谱才察觉!

csdh11 2025-01-20 12:02 22 浏览

整理 | 屠敏
出品 | CSDN(ID:CSDNnews)

几天前,乌克兰一家专注于人体 3D 模型的网站 Trilegangers 突然崩了,这让整个团队以及老板都有些措手不及。起初,该公司 CEO Oleksandr Tomchuk 只是收到一则警报,进而发现公司的电子商务网站已完全瘫痪了。

一经排查,殊不知,该团队发现,罪魁祸首竟然是——OpenAI 此前研发的一款机器人 GPTbot。


7 人花了十余年时间构建的网站,差一点毁于一旦

据悉,Trilegangers 是一个销售 3D 扫描数据的网站,这家拥有七名员工的公司花了十多年时间建立了所谓的网络上最大的“人体数字替身”数据库,即从真实人体模型扫描而来的 3D 图像文件。

Triplegangers 提供从手、头发、皮肤到完整身体模型的 3D 对象文件和照片,一应俱全。其处理的数据涵盖多个类别,如“脸部”、“全身”、“带姿势的全身”、“全身情侣”、“手部”、“手部雕像”等,网站展示的内容正是其业务核心所在。

具体来看,以“脸部”数据为例,这一类别中有 1509 人的数据,每个人注册了大约 20 种不同的面部表情。在其他类别中,每个产品至少有三张图像,因此总数据据说有数十万个点。

这一点也得到 CEO Oleksandr Tomchuk 的证实,其表示,“我们有超过 65000 种产品,每种产品都有一页内容介绍,每页至少有三张照片。”

Trilegangers 所做的业务就是面向 3D 艺术家、视频游戏开发者,以及任何需要数字化再现真实人类特征的人群销售这些数据。

然而,Oleksandr Tomchuk 称,不久前 OpenAI GPTBot 发送了“数万”个服务器请求,试图下载全部内容,数十万张照片及其详细描述。

这有一种,但凡 Trilegangers 有的,OpenAI 都要的感觉,可是这些内容实则为付费产品。“OpenAI 使用 600 个 IP 来抓取数据,我们仍在分析上周的日志,也许更多,”该团队在谈到机器人试图访问其网站的 IP 地址时说道。

他们的爬虫程序正在摧毁我们的网站!Oleksandr Tomchuk 说,“这基本上是一次 DDoS 攻击。”


那么 GPTbot 究竟是什么?

不难回忆起来,GPTbot 是 OpenAI 在 2023 年 8 月推出的一款网络爬虫机器人,用于抓取互联网数据,为训练和改进大模型(如 ChatGPT)提供素材。

它会自动访问公开可用的网站,收集文本数据来增强模型能力。

OpenAI 此前表示,GPTBot 会严格遵守任何付费墙的规则,不会抓取需要付费的信息,并且也不会收集能追踪到个人身份的数据。即遵循网站的 robots.txt 文件中明确标示的规则。如果网站配置了禁止 GPTBot 抓取的标签,它理论上会停止访问该网站。

而 robots.txt 是一个用于网站管理的文本文件,它告诉搜索引擎爬虫(如 Googlebot、Bingbot 或 GPTBot)哪些网页可以或不可以被抓取。这是一种被广泛接受的网络标准,称为机器人排除协议(Robots Exclusion Protocol, REP)。

简单来看,如果你不想让 GPTBot 访问你网站的任何内容,可以将以下代码添加到目录中 robots.txt 里面:

User-agent: GPTBotDisallow: /

如果你想要允许访问网站上的某些内容(例如特定目录或文件),可以用以下代码对 robots.txt 进行以下更改:

User-agent: GPTBotAllow: /directory-1/Disallow: /directory-2/

除此之外,OpenAI 还公布了 OpenAI 使用的爬虫 IP 地址,也可以根据 IP 地址来拒绝访问。

OpenAI 公开了以上这些方式,并声称会遵守规则,显得诚意满满。

然而,令人无奈的是,一切的前提是得正确配置好“robots.txt”文件,才可以尽可能地避免被爬虫。

这一次 Trilegangers 就落到了“robots.txt”的坑中。虽然其在官网“使用条款”的第 5 条行为准则中清清楚楚地写着:

  • 未经 TG 明确事先书面同意,不得使用任何机器人、爬虫、网站搜索/检索应用程序或其他手动或自动设备来检索、索引、抓取、挖掘数据或以其他方式收集网站内容,也不得复制或绕过网站的导航结构或展示方式。尽管有上述限制,在遵守我们网站根目录中 robots.txt 文件中发布的任何指示的前提下,TG 授予公共搜索引擎的运营者权限,允许其使用爬虫从我们的网站复制材料,但仅限于为创建这些材料的公开可用、可搜索索引的唯一目的(且仅限必要范围内),不得缓存或存档这些材料。TG 保留随时和不经通知撤销此权限的权利,无论是一般性撤销还是针对特定情况。

  • 未经 TG 许可,禁止执行以下行为:

    1. 将本网站上展示的任何内容或图像用于人工智能或机器学习(“AI/ML”)研究或研究;

    2. 提取、复制、分发或向任何第三方提供本网站展示的任何内容或图像,用于 AI/ML 算法的训练、测试或开发;

    3. 参与任何涉及利用本网站内容或图像的AI/ML相关活动,包括但不限于数据集编制、模式识别、神经网络训练或任何形式的计算分析。

任何试图在未经 TG 有效许可的情况下将本网站内容或图像用于 AI/ML 目的的行为,均被视为违反本网站条款及我们的供应条款与条件,可能导致法律诉讼,并寻求适用法律下的一切补救措施。

但如今看来,仅凭这一点的声明毫无作用,GPTBot 还是爬取到了其网站的内容,还让网站整个宕机了。

对此,据 Techcrunch 报道,此次 Trilegangers 并没有正确使用 robot.txt,其中的标签没有明确告诉 OpenAI 的机器人 GPTBot 不要爬取该网站内容。这就意味着 OpenAI 和其他公司就会认为他们可以随心所欲地抓取数据。

更令人气愤的是,即使 Trilegangers 告诉了 GPTBot 不要抓取自家网站的内容,谁能料到,OpenAI 还有 ChatGPT-User 和 OAI-SearchBot 机器人用来做爬虫工具。

还值得注意的是,即使更新了网站的 robots.txt ,也不要掉以轻心,因为 OpenAI 的系统可能需要大约 24 小时才能才能识别更新的 robot.txt 文件。

https://platform.openai.com/docs/bots

正所谓爬虫的工具千千万,企业有时根本防不胜防。


“如果爬取的数据少一点,或许都发现不了”

就像这一次,如果不是 OpenAI 的 GPTBot 爬取的数据过于庞大,也许 Trilegangers 可能还发现不了。Tomchuk 在接受外媒 Techcrunch 采访时表示,「如果爬虫更加“温和”地抓取,他可能永远都不会发现。」

“这令人害怕,因为这些公司似乎钻了一个漏洞,声称‘你可以通过更新带有我们标签的 robots.txt 文件选择退出抓取’,”Tomchuk 说,但这实际上把责任推给了网站所有者,让他们必须了解如何屏蔽这些爬虫。

更可怕的是,Tomchuk 称他们连 GPTBot 究竟是从何时开始抓取的都不知道,更不要说 OpenAI 具体抓取了哪些内容。

这也让 Tomchuk 有些担心,“我们的业务对权利要求非常严格,因为我们扫描的是实际的人体,按照欧洲的 GDPR 等法律,他们不能随便拿网络上的任何照片使用。”

事件发生后,Triplegangers 的网站不仅因 OpenAI 的爬虫被迫下线,CEO Tomchuk 还预计将收到一份因爬虫导致的高 CPU 消耗和大量下载活动而产生的高额 AWS 账单。

同时,Tomchuk 称他也没找到可以联系 OpenAI 的方法,也无法让他们删除这些素材。为此,Tomchuk 无奈之下选择用 Trilegangers 官方 Twitter 账号发了一条致 OpenAl、Microsoft、Meta、Google 和其他使用爬虫程序的公司的官方声明:

除用于搜索目的的页面索引外,严禁在我们的网站上使用爬虫程序。未经有效许可,产禁将我们网站上的任何公开内容用于 AI 或 ML 应用程序。

截至目前,Triplegangers 配置好了正确的 robots.txt 文件,并创建了一个 Cloudflare 账户,用于阻止 GPTBot 以及他发现的其他爬虫,例如 Barkrowler(一个 SEO 爬虫)和 Bytespider(TikTok 的爬虫)。


引发争议的数据爬取

Triplegangers 的经历引发了广泛关注,其公开此事后,不少其他网站运营者纷纷表示也曾遭遇类似情况。

@markerz:

我的其中一个网站曾被 Meta 的 AI 爬虫 Meta-ExternalAgent 完全摧毁。这个爬虫似乎有些“天真”,没有像 Google Bot 那样进行性能回退(performance back-off)。它不断地重复请求内容,直到我的服务器崩溃,然后短暂停止一分钟,再次发起更多请求。

我的解决方法是添加了一条 Cloudflare 规则,直接屏蔽该 User-Agent 的请求。我还为链接增加了更多 nofollow 规则,并更新了 robots.txt 文件,但这些规则仅仅是建议,某些爬虫似乎会忽略它们。Cloudflare 还有一个功能可以屏蔽已知的 AI 爬虫,甚至怀疑是 AI 爬虫的请求:https://blog.cloudflare.com/declaring-your-aindependence-block-ai-bots-scrapers-and-crawlers-with-a-single-click/。尽管我不喜欢 Cloudflare 的集中化,但这个功能确实非常方便。

griomnib:

我从事网站开发已经数十年,同时也从事过爬取、索引和分析数百万个网站的工作。只需遵循一个黄金法则:永远不要以比你希望别人对待你的网站更激进的方式加载其他网站。

这并不难做到,但这些 AI 公司使用的爬虫既低效又令人厌恶。

作为一个网站所有者,这种行为让我觉得他们对网络的基本礼仪毫无尊重。而作为一名从事分布式数据采集的工程师,我更是被这些爬虫的糟糕和低效深深冒犯了。

至此,Tomchuk 也分享了他想把这一经历公开的原因,他希望其他小型在线企业了解,发现 AI 爬虫是否在抓取网站的版权内容的唯一方法就是主动检查日志。他并不是唯一一个受爬虫“侵害”的人,也绝非最后一个。

Tomchuk 警告道:“大多数网站甚至不知道自己被这些爬虫抓取了。现在我们不得不每天监控日志活动,以发现这些爬虫。”

来源:

https://gigazine.net/gsc_news/en/20250111-openai-bot-crushed-e-commerce-site/

https://techcrunch.com/2025/01/10/how-openais-bot-crushed-this-seven-person-companys-web-site-like-a-ddos-attack/

https://x.com/triplegangers/status/1877095361002852750

https://news.ycombinator.com/item?id=42660377

相关推荐

探索Java项目中日志系统最佳实践:从入门到精通

探索Java项目中日志系统最佳实践:从入门到精通在现代软件开发中,日志系统如同一位默默无闻却至关重要的管家,它记录了程序运行中的各种事件,为我们排查问题、监控性能和优化系统提供了宝贵的依据。在Java...

用了这么多年的java日志框架,你真的弄懂了吗?

在项目开发过程中,有一个必不可少的环节就是记录日志,相信只要是个程序员都用过,可是咱们自问下,用了这么多年的日志框架,你确定自己真弄懂了日志框架的来龙去脉嘛?下面笔者就详细聊聊java中常用日志框架的...

物理老师教你学Java语言(中篇)(物理专业学编程)

第四章物质的基本结构——类与对象...

一文搞定!Spring Boot3 定时任务操作全攻略

各位互联网大厂的后端开发小伙伴们,在使用SpringBoot3开发项目时,你是否遇到过定时任务实现的难题呢?比如任务调度时间不准确,代码报错却找不到方向,是不是特别头疼?如今,随着互联网业务规模...

你还不懂java的日志系统吗 ?(java的日志类)

一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...

谈谈枚举的新用法--java(java枚举的作用与好处)

问题的由来前段时间改游戏buff功能,干了一件愚蠢的事情,那就是把枚举和运算集合在一起,然后运行一段时间后buff就出现各种问题,我当时懵逼了!事情是这样的,做过游戏的都知道,buff,需要分类型,且...

你还不懂java的日志系统吗(javaw 日志)

一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...

Java 8之后的那些新特性(三):Java System Logger

去年12月份log4j日志框架的一个漏洞,给Java整个行业造成了非常大的影响。这个事情也顺带把log4j这个日志框架推到了争议的最前线。在Java领域,log4j可能相对比较流行。而在log4j之外...

Java开发中的日志管理:让程序“开口说话”

Java开发中的日志管理:让程序“开口说话”日志是程序员的朋友,也是程序的“嘴巴”。它能让程序在运行过程中“开口说话”,告诉我们它的状态、行为以及遇到的问题。在Java开发中,良好的日志管理不仅能帮助...

吊打面试官(十二)--Java语言中ArrayList类一文全掌握

导读...

OS X 效率启动器 Alfred 详解与使用技巧

问:为什么要在Mac上使用效率启动器类应用?答:在非特殊专业用户的环境下,(每天)用户一般可以在系统中进行上百次操作,可以是点击,也可以是拖拽,但这些只是过程,而我们的真正目的是想获得结果,也就是...

Java中 高级的异常处理(java中异常处理的两种方式)

介绍异常处理是软件开发的一个关键方面,尤其是在Java中,这种语言以其稳健性和平台独立性而闻名。正确的异常处理不仅可以防止应用程序崩溃,还有助于调试并向用户提供有意义的反馈。...

【性能调优】全方位教你定位慢SQL,方法介绍下!

1.使用数据库自带工具...

全面了解mysql锁机制(InnoDB)与问题排查

MySQL/InnoDB的加锁,一直是一个常见的话题。例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?下面是不同锁等级的区别表级锁:开销小,加锁快;不会出现死锁;锁定粒度...

看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

一、什么是死锁加锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。任何事务都需要获得相应对象上的锁才能访问数据,读取数据的事务通常只需要获得读锁(共享锁),修改数据的事务需要获...