2025 AI基础设施风向标,不看必后悔!#AI基础设施峰会 了解详情
写点什么

一场马斯克的反爬闹剧:Twitter 一夜回到五年前?

  • 2023-07-03
    北京
  • 本文字数:3373 字

    阅读完需:约 11 分钟

一场马斯克的反爬闹剧:Twitter一夜回到五年前?

没有人相信埃隆·马斯克对推特崩溃的解释了。

 

上周末,推特的所有者马斯克(Elon Musk)限制了大多数用户每天可以查看的推文数量,随后推特遭遇了严重技术故障,致使大量用户无法登录。小小改动都能使推特崩溃,这次马斯克会怎么说?

 

从限制登录到服务崩溃

 

上周五,马斯克宣布,如果没有推特账户,就不能再阅读推文。马斯克当时表示,使用人工智能模型的公司们正在大量抓取推特数据,造成了网站流量问题。“这是临时紧急措施,”他说:“几百家机构(也许更多)正在极其积极地搜刮推特数据,以至于影响到了那些普通用户的体验。”

 

虽然不确定马斯克具体指的是什么,但他很可能说的是从网站提取数据而不需要任何官方 API 的网络爬虫。毕竟,推特的 API 现在受到严格限制,使用者每月至少要花费 42,000 美元。

 

在此之前,普通用户无需登录帐户即可访问推特,在桌面或移动设备上的网络浏览器中就可以直接打开最喜欢的推文或查看最喜欢的创作者的个人资料。早在 2015 年,推特在一篇博文中透露,每月有“5 亿人”在没有登录的情况下访问推特。据称,这个数字高于推特的月活跃用户数。现在,这部分用户都被挡在了平台外面,不登录就无法查看任何内容。

 


自马斯克接管该平台以来,推特一直遭受用户增长停滞、高级用户流失和广告收入减少的困扰。迫使数亿用户注册推特账号,确实有可能提升用户数据并趁机向潜在广告商推销。然而,这个举措也存在一些重大缺陷,推特将面临的一个主要问题是谷歌等搜索引擎将难以抓取该平台并对其内容进行排名。这意味着当用户在谷歌上搜索时,用户个人资料和推文可能不会再出现。此举也不能保证用户在看到登录提示后会注册推特。一旦大家意识到他们无法访问内容,就可能会完全避开推特内容和链接。这最终可能会让推特损失大量流量。 

 

限制登录是第一步,到了周六,马斯克又出了新措施:“认证帐户每天只能阅读 6000 个帖子,未认证的帐户每天能看 600 个帖子;新的未认证的帐户每天能看 300 个帖子。”

 


对于未认证用户来说,600 次推文浏览量,一天随便翻翻各种评论可能就很快用完了。此后上限提高至 1,000/10,000,但这对于非认证用户来说仍然算不上什么。看起来这个举措是用来进一步鼓励 Twitter Blue 订阅,而这种事情也只有马斯克才做得出来。

 

本来这个改动在技术上也没太复杂,但不幸的是很多人发现推特崩溃了。

 

根据故障追踪网站 Downdetector.com 的数据,星期六上午有数千名推特用户的账号出现故障。美国东部时间星期六上午 11 时 17 分左右(北京时间星期六晚上 11 时 17 分左右)的故障高峰时段,有近 7500 名用户报告访问推特时出现问题。

 

更让人无法理解的是,用户都已经无法访问推特首页的信息流了,然而,即使页面无法加载,推特网页仍在不断尝试发送请求。

 


推特每秒向自己的服务器发送约十条请求,试图获取永远无法获得的内容。这可能对工程师们来说是一场灾难,但同时我们也得以欣赏一场史诗级的自我抹黑:推特在不断对自己进行 DDoS 攻击!

 


这是个悲伤的故事,也真实地讲述了前端背后发生的事情:劳累过度的工程师正努力地去满足一个“白痴”老板的要求

 

几乎可以肯定这与他们关闭对推特内容的匿名访问有关。有网友猜测在前端程序中可能存在一个逻辑漏洞,开发人员必须小心翼翼地绕过它,才能使该服务变为私有(a private only service)。

 

鉴于马斯克有开除员工的一系列前例,还有人感慨道:“这次不知道谁又得收拾行李,带着‘荣耀’走出推特大门。”

 

是系统损坏了吗?

 

一开始,马斯克说这是限制第三方抓取推特数据,但后来他开始开玩笑说,该网站瘫痪可以让大家“远离手机,去看看你的家人和朋友。”

 


但显然大家并不买账,一些有相关技术背景的人认为,这与抓取或机器人预防没有什么关系,而是与试图保持网站的完整性有关。起码大型生产系统自我进行八个小时的 DDoS 攻击是极其少见的。

 


Maggie Johnson-Pint是一家 IT 公司的创始人也是一名可靠性方面的专家,也是前推特基础架构团队成员,她对此发表了自己的看法,“作为一名速率限制方面的专家,我想解释下这背后的一些技术。”

 

大型生产系统中涉及请求数量超出服务能力的事件可以分为两类: 

1.自上而下的过载或“Reddit Hug of Death”:突然出现巨大的需求激增,服务器暂时“无法”运行。这种情况也会发生在超级碗广告之后、流行歌星宣布巡演或 DDOS 攻击期间。 

2.自下而上:这是不太明显但更常见的情况,当系统内部出现故障时,系统将无法提供正常负载。如果你丢失了 Redis 缓存并且所有内容都读取到数据库,这将大大降低服务请求的能力。同样,如果数据库副本、云区域或集群出现故障,照样也会处理不了正常工作负载。当然,如果一项服务的开发人员编写的代码突然攻击另一项服务,那也是“DDOSing Yourself”,但这还是自下而上的。 

 

“我不知道推特今天发生了什么...... 我敢打赌是一些 ‘自下而上’的问题。大家讨论的 DDOSd 问题,这是事情的结果,而不是问题的原因。”

 

在一些情况下,限速限流是一个逃离死亡的好办法,当然,如果服务器收到的请求数量超过了它们能够处理的数量,最终它们还是会崩溃。 即使它们没有崩溃,请求也会堆积起来等待完成,这期间用户还会不断去刷新页面,增加更多请求,陷入死循环中。

 

“此类最好策略是‘自适应’的,可以根据系统压力、请求优先级和其他因素更改速率限制。推特之前有一个非常好的团队,因为直到一年前他们还拥有一支非常出色的基础设施团队。 现在,很多人认为限速是位于基础设施‘前端’的东西,以防止自上而下的问题,但事实上,先进的基础设施团队(包括我之前在推特的美好日子里)会定期在所有进程之间使用它,那么就可以防止各种情况导致的过载情况,从而防止出现各种级联故障场景。”

 

Maggie 猜测是因为推特丢失了关键后端系统的很大一部分:也许他们停止支付 GCP 账单,也许他们丢失了一个关键缓存,并且所有内容都在读取其他数据......

 

控制成本的极端举措?

 

GCP 账单理论也与马斯克有关,之前为了削减成本,他拒绝向亚马逊或谷歌等为推特提供基本服务的公司支付账单。尽管后续行动表明马斯克最终至少支付了谷歌的账单,但现在看来似乎还是在云服务上有些问题存在。

 

The Information 此前报道称,几个月来,推特一直在试图重新跟谷歌谈判新的云服务合同,推特曾承诺在五年内支出 10 亿美元。

 

根据 The Information 的报道,推特最终继续支付其 Google Cloud 账单,因为它从该公司获得了巨额广告收入,但 Platformer 也有报道称,推特“计划完全停止使用该平台”。Platformer 报道称,推特计划在 6 月 30 日合同结束之前将服务从 Google Cloud 上移走,但援引消息人士的话称,这需要比预期更长的时间,并且不确定某些服务会发生什么情况。

 

例如,推特于 2018 年收购的Smyte公司,利用数据分析和机器学习,提供阻止各种不良在线行为的服务,包括针对机器人、黑客攻击、阻止骚扰、滥用和垃圾邮件的工具,该公司托管在谷歌云平台上,也是 6 月 30 日到期。当时消息人士告诉 Platformer,并还不清楚推特是否会尝试将 Smyte 迁移到自己的服务器上。

 

马斯克指责试图获取数据用于人工智能训练的公司,说它们让推特不堪重负。如果仅仅是针对爬虫和机器人,“限流”无疑是控制爬虫的基本方法。特别现在模拟用户的高端爬虫,利用手机或者电脑,一步步去操作,跟真人没有区别。这种情况下,系统很难区别是不是普通用户,识别成本高,而且不一定准确。

 

在马斯克裁掉了推特的绝大部分安全团队成员后,增加限制也许是一个最低成本的替代解决方案。

 


当然,并不是所有人都不相信马斯克所说的理由。在他的所有帖子下,都有一大群拥护者说着“伟大的举动,先生,感谢您让网站变得更好!”

 

也不知道这种“临时”举措会持续多久。推特的竞争对手,现在也因为大批用户涌入而暂停注册。福布斯评价说:“这无疑是马斯克自接管该网站以来所做的最糟糕的事情,反爬虫明显是一个烟幕弹。如果这是真的,那么这实际上就像为了杀死几只蚊子而把整个房子烧掉一样。”

 

参考链接:

https://techcrunch.com/2023/06/30/twitter-now-requires-an-account-to-view-tweets/

https://threadreaderapp.com/thread/1675331352584134658.html

https://sfba.social/@sysop408/110639609718939225

https://www.forbes.com/sites/paultassi/2023/07/02/no-one-believes-elon-musks-explanation-for-breaking-twitter

 

2023-07-03 18:358273

评论

发布
暂无评论
发现更多内容

为什么要用 Redis 实现事务的 ACID

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

【得物技术】前端工程师要知道的Nginx知识

得物技术

nginx 负载均衡 大前端 得物技术 知识

新基建:“区块链+物联网”,是否生活将会改变?

电微13828808271

物联网 区块链标准

睿象云智能告警平台cloudalert排班可以帮你做什么

睿象云

运维 告警 运维人生 智能告警 告警管理

人生好走的路那么多,你偏要选这条难走的走

小天同学

自我思考 个人感悟 人生修炼 4月日更

Linux chmod命令

一个大红包

4月日更

找到适合您的数字化转型策略的3个步骤

龙归科技

数字化转型 企业

聪明人的训练(二)

Changing Lin

4月日更

Golang map 模型

花一个无所

源码分析 模型 Go 语言 简易架构图

手写函数

wudaxue

JavaScript vue.js

新版犀牛书该不该入手?

清秋

JavaScript ecmascript ES6 技术书籍 4月日更

云计算防火墙对象(组)的实践

Python研究所

云计算 防火墙 对象组

C/C++ Linux后端进BAT的学习路线(腾讯官方认证)丨Linux服务器开发

Linux服务器开发

腾讯 后端 Linux服务器开发 BAT

Tidb模型

花一个无所

架构 TiDB 简易架构图

Golang interface 模型

花一个无所

源码分析 模型 Go 语言 简易架构图

有趣的技术知识 3 | GitHub超火科学上网加速器!

Java_若依框架教程

翻墙 佛跳墙 科学上网

大数据计算生态之数据存储

小舰

4月日更

升级dubbo,小心default.version

捉虫大师

Java dubbo

2021字节大厂面经分享:Java面试高分宝典!GitHub已标星86.7K

比伯

Java 编程 架构 面试 计算机

dubbo几个问题整理:优雅停机、线程池配置

程序员架构进阶

dubbo 28天写作 4月日更 优雅停机 线程配置

Kafka 零拷贝模型

花一个无所

kafka 模型 简易架构图

Golang channel 模型

花一个无所

源码分析 模型 Go 语言 简易架构图

关于Object,你所必须知道的!

Chalk

大前端 Object 4月日更

Apache Oozie基本原理与工作流类型

大数据技术指南

大数据 oozie 4月日更

头条二面:你们公司怎么处理MySQL的 Binlog 日志?

Java架构师迁哥

建立自己的领导风格

石云升

领导力 28天写作 职场经验 管理经验 4月日更

Golang Map 模型

花一个无所

模型 源码剖析 Go 语言 简易架构图

时代之盾,国之重器:华为带给政务数据保护的新可能

脑极体

javascript

wudaxue

JavaScript

架构实战营-模块一作业

西伯利亚鼯鼠

架构实战营

架构实战营 - 模块1 - 作业

Ming

软件架构

一场马斯克的反爬闹剧:Twitter一夜回到五年前?_安全_Tina_InfoQ精选文章