写点什么

一场马斯克的反爬闹剧: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:358099

评论

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

「面向信仰编程」Draven 专访:像写代码一样,用树形的结构写文章

Shopee技术团队

Go 语言 技术播客

修改,编译,GDB调试openjdk8源码(docker环境下)

程序员欣宸

Java JVM 4月月更

LabVIEW显示控件中内容过长设置自动滚动条

不脱发的程序猿

LabVIEW 设置自动滚动条

Scrum Patterns之理解各种团队模式

Bruce Talk

Scrum 敏捷开发 Agile Scrum Patterns

手撕《Google SRE Book》

一席

轻量化项目管理思路

秋去冬来春未远

需求管理 问题管理 问题和需求区别

LabVIEW设置应用程序显示标签透明

不脱发的程序猿

LabVIVE 美化应用程序

搭建帮助中心,推动SaaS行业业务增长

小炮

SaaS 帮助中心

web前端培训react面试题分享

@零度

前端开发 React

瑞萨IDE:CS+ for CC下载、安装和基础使用

不脱发的程序猿

ide 瑞萨 汽车级MCU CS+ for CC

瑞萨IDE:CS+ for CC新建工程配置方法

不脱发的程序猿

ide 汽车电子 CS+ for CC 瑞萨MCU

瑞萨IDE:CS+ for CC进行BootLoader升级时开发环境配置

不脱发的程序猿

嵌入式 汽车电子 MCU 瑞萨 CS+ for CC

C语言总结_函数知识

DS小龙哥

4月月更

如何发挥测试策略的指导性作用

KJ Meng

DevOps 研发管理 测试 自动化测试 测试策略

linux之pkill命令

入门小站

一文搞懂SPI通信协议

不脱发的程序猿

spi 嵌入式 通信协议

LabVIEW采集鼠标、键盘数据

不脱发的程序猿

LabVIEW 获取鼠标、键盘输入数据

Robot OS添加开机启动服务

轻口味

android 4月月更 AOSP

14岁懂社会-《给想要成为医生的你》读书笔记

懒时小窝

读书笔记 读书

正确的文档排版方式

源字节1号

Go 语言入门很简单:时间包

宇宙之一粟

时间 Go 语言 4月月更

数智未来,因你而来,2022鲲鹏应用创新大赛正式启动

科技热闻

明道云+百度云,自动识别填写抗原二维码

明道云

在线Excel转CSV工具

入门小站

工具

LabVIEW修改应用程序窗口外观

不脱发的程序猿

LabVIEW 修改应用程序窗口外观

自己动手写Docker系列 -- 6.3 手动配置容器网络(下)

Go Docker 4月月更

5种高大上的yml文件读取方式,你知道吗?

码农参上

springboot 配置文件 4月月更

在线时序流程图制作工具

入门小站

工具

什么是区块链数字藏品,它具有什么价值?

CECBC

DaaS大数据服务简析

穿过生命散发芬芳

4月月更

云原生训练营毕业总结

hcyycb

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