写点什么

我在 GitHub 黑市买“水军”:一万颗 star 只要 4000 多元,人人都能“一夜爆火”

  • 2023-03-20
    北京
  • 本文字数:4805 字

    阅读完需:约 16 分钟

我在GitHub 黑市买“水军”:一万颗star只要4000多元,人人都能“一夜爆火”

“说实在的,我的梦想就是拥有个几千 star 的 GitHub 项目。”有开发者说道。

 

虽然 GitHub star 数现在可能跟公众号的“阅读量”或者微博的“转发量”一样,是一种虚无飘渺的虚荣心指数,但不妨碍它成为开源社区中展示普遍认同的一大重要指标。项目 star 数也会影响很多重大的高风险决策,包括选择哪些项目、为哪些初创项目注资,甚至选择哪家企业入职等。

 

但是,现在人们已经不相信 star 数这个指标了。“GitHub 项目的 star 数我倒是不在乎,因为这东西太容易造假了,也代表不了项目的品质。我就不会去跟别人说给我的项目点 star 哦,这种行为在我看来真的 low 得不能再 low 了。​​​”有开发者说道。

 

事实上,这位开发者说得并没有错。我们总会在 GitHub 上发现一些迅速蹿红的开源项目,刚刚开放,每周就能拿下几百 star。真有那么优秀吗?似乎好得令人难以置信了。还有一些新项目刚上架几天就 star 数猛增,这可是知名老项目在发布新版本或者其他重大公告才能拥有的待遇。

 

最近,开源编排平台 Dagster 分享了在抽查一部分代码仓库后,发现了的几位“嫌疑人”,而在 Dagster 披露后,一些账户已经被删除。



请注意账户创建日期,这跟正常的 GitHub 用户明显有所区别

买了 star 后,项目一夜爆火

 

Dagster 的几位研究人员亲身体验了购买 star 给项目带来的优越。Dagster 建立了一个虚构的代码仓库(frasermarlow/tap-bls)并买了一堆 star。然后,Dagster 为该账户设计了个人资料文件,并使用 GitHub REST API(通过 pygithub)和 GitHub Archive 数据库展开了一系列测试。


Dagster 的代码仓库一夜之间就火了……



跟它一起“蹿红”的项目还有不少。

 

GitHub star 在哪里可以买到呢?用不着潜入暗网,直接在谷歌上搜就能找到几十种服务。为了观察这些虚假 GitHub 账户的个人资料,Dagster 通过以下服务买了 star:

 

  • Baddhi Shop,低成本伪造各种线上公开影响力指标的专业“服务商”。最低 64 美元,你就能买到 1000 颗 GitHub star。

  • GitHub24,由 Möller und Ringauf GbR 提供的服务,价格比 Baddhi Shop 要高得多(每 star 0.85 欧元)。

 

有一说一,这帮家伙还挺讲“诚信经营”:Dagster 买的 star 很快就到账了。GitHub24 在 48 小时内就交付了 100 颗 star。在此之前,Dagster 的代码仓库只有 3 颗 star。由于 Baddhi Shop 的价格更便宜,所以 Dagster 在这个渠道上订购了 500 颗 star,而一周之内对方同样成功履约。

 

不过,Dagster 表示“一分钱一分货”:一个月后 GitHub24 交付的 24 颗 star 都还在,但纯伪造的 Baddhi Shopstar 只剩下四分之三,那四分之一可能是被 GitHub 的完整性团队撤掉了。

star 数,还重要吗

 

“我的前雇主在他们的工作描述和招聘推介中使用了 GitHub stars。他们定期鼓励员工去 GitHub 上为公司的存储库加注星标。在全体会议上,GitHub stars 是他们报告的重点工作之一:我们在 GitHub stars 中超过了 X(鼓掌)。”网友“penguin_booze”爆料道。

 

当 stars 数成为企业关注的重点时,压力就给到了员工或者求职者。“能在 GitHub 上拿到三位数的 Star 的本科生至少进 BAT 毫无压力。”有网友称。这也导致了国内前几年开源项目刷 star 泛滥。

 

当 star 造假越来越多,有些开发者在评价开源项目的时候也会越来越少地真正在意 star 数。“就我个人而言,我从不看 star 数,因为即使这是合理的,它也没有让我比从 repo 中看到其它更有用的东西。”网友“ziml7”说道。

 

ziml7 表示,“我倾向于检查最早和最新提交之间的时间差异,这可以让我确定这不是一个某人花了几周时间编写代码、放在 GitHub 上,然后就被遗忘了的项目。我也会检查 issues。我会寻找比正在显示更多的、已经解决的 issues ,但我会快速浏览下来大致了解有多少是真正有意义的 issues 。我还从自述文件和文档中获得线索。如果这些 issues 存在就容易通过(检测),但如果它们不仅存在,并且既清晰又详细,那肯定对我的判断会有帮助。

 

但 ziml7 的观点也得到了一些质疑。网友“imadj”表示,许多维护人员只是将问题隐藏起来了,并没有真正解决。许多人以 0 个未解决的 issues 而自豪,好像这意味着什么。但如果他们会玩这个游戏,那么世界上任何软件都可以有 0 个 issues。“因此,除非您真的精通该项目并花了一些时间关注它,否则 star 数实际上可能是判断项目质量和声誉的更好指标。”

 

另外,在评估几个不同的 repos 以选择特定工具工作时,一些开发者会用 star 数进行判断。“如果其中一个 repo 有更多的 star,我在选择时会仔细权衡。提交的新鲜度绝对重要,但对我来说,有许多人加注星标这一事实表明,这个 repo 是吸引人眼球的和活跃的。”网友“cdiamand”表示。

 

对于 ziml7 提出的查看日期,也有开发者表示反对:“提交日期可以任意更改。”

 

网友“debarshri”指出,在评估 OSS 项目时,关键指标是社区活动。“GitHub stars 是一个很弱的社区活动指标。首先,它可以被造假。此外,Stars 的操作门槛非常低,为该项目加星的人并不真的会使用它。”

 

“debarshri”认为有两个社区活动指标非常重要:GitHub issues 和 slack/discord/discourse 评论。“在我看来,GitHub issues 的一个关键是,如果 GitHub issues 主要由核心团队提出,那不是一个好兆头。您需要来自客户或用户而不是团队的大量问题。如果项目正在解决实际问题,这是一个很好的指标。Stars 操作门槛极低。松散的评论也一样,它应该既有分量又有新鲜感。

 

无论如何,可以看出,Star 数目前在一些开发者心中依然有很重的分量。我们还无法完全抛弃这个衡量指标。但现在,大多数 GitHub 的 star 分析工具和相关讨论文章都没有解决 star 数灌水的问题。那么,还有其它办法吗?

如何识别假 star?

 

为了搞清楚 GitHub 上的 star 造假问题有多严重,Dagster 与垃圾邮件和滥用专家 Alana Glassco 一起深入研究了数据模式,分析了 GitHub Archive 数据库中的公共事件数据。

 

机器学习可以帮忙吗?比如买点假 star,然后训练分类器来识别真 star 和假 star。Dagster 表示,这种方法存在几个问题:

 

  • GitHub star 卖家非常小心谨慎,而且会主动回避检测,所以很难根据名称、个人简介等直观特征对其出做分类。

  • 标记及时性。为了避免被发现,卖家会不断调整自己的行动策略。因此,标记数据不仅难以获得,而且就在模型训练的过程中,这些数据内容可能就已经过时。

 

注:检测工作中,经常会将机器学习与启发式方法结合使用来识别恶意行为者,本次研究最终采用了启发式的检测思路。

 

在买下假 star 之后,这些假 star 又可以分成两类:

 

  • 一眼为假。卖家根本就不加掩饰,只要点开个人资料,就能马上看出这帮给 star 的用户根本不是真人。

  • 用心造假。另一个群体则复杂得多,账户上有很多相当真实的活动,借此掩盖了其属于假账户的事实。

 

于是,团队最终通过两种相互独立的启发式方法来识别这两类群体。

 

“一看就是假的”

 

在调查期间,Dagster 团队发现了很多一次性的个人资料:它们的存在就是为了伪造 GitHub 账户并为买家的 GitHub 代码仓库“加 star”。

 

这类账户只有一天的活动记录(也就是账户创建当天,因此可以证明它们就是为了加 star 才存在的),别无其他。于是,Dagster 团队使用 GitHub API 收集了这类账户的更多信息,并发现了它们清晰的运作模式。这类账户的特点就是活动量极低:

 

  • 创建时间为 2022 年或更晚

  • 关注者 <=1

  • 所关注者 <= 1

  • 公开 gists == 0

  • 公开 repos <=4

  • 电子邮件、雇用信息、简历、博客和 Twitter 用户名均为空

  • 投 star 日期=账户创建日期=账户更新日期

 

通过这种简单的“低活动”启发式方法,Dagster 团队检测到了大量可疑的虚假账户。这些账户只为同一组代码仓库投过 star,而且都是通过 GitHub API 来操作的。



这帮 GitHub“用户”明显具有共性

“用心造假”

 

另一类假账户会更难发现,他们有比较真实的操作,比如个人资料照片、简历和贡献提交。相较前边一眼就能看出来的假账户,这类假账户的情况比较复杂。那么,应该如何做有效甄别呢?

 

聚类直觉

 

Dagster 团队最终选择了无监督聚类技术,相当于是为每个账户都构建一组特征。

 

照理来说,正常用户的特征应该比较分散,就是说其每项特征都比较独特,不会遵循某个大聚类的整体趋势。但虚假用户的特征则有相似性,所以在可视化之后会聚集在一起。通过这种办法,应该能检测出目标账户是否属于可疑聚类。

 

举个更容易理解的例子:假定我们关注“活动日期”,GitHub 上的大多数用户并不会每天都有公开活动。如果某个账户每月有几天会使用 GitHub,而且具体日期跟另一个账户完全相同,甚至连分享的活动内容都差不多,那就表明这两个账户很可能是由相同的底层脚本在控制。根据这类账户的活动分享日期数(x 轴)和所交互的代码仓库总数(y 轴)可得出下图:


这里列出的就是 Dagster 那个“钓鱼”代码仓库的统计结果,项目得到的 star 几乎 100%是假的:



Dagster 针对一组已知假 star 得到的启发图——几乎 100%匹配

 

据实验团队所知,Dagster 项目应该没买过 star,所以他们用 Dagster 代码仓库做了对比。请注意左下角的小黄点,代表了少量误报账户(误报率=0.17%):



针对 dagster-io 代码仓库的启发图——匹配接近 0%

 

最后,我们再来看看纯假和纯真之间的情况。这个开源代码仓库既有真 star,也包含大量疑似假 star,黄色部分标出了可疑的投 star 群体。



针对我们怀疑作弊的代码仓库制作的启发图——高亮显示部分为假 star

改进聚类

 

虽然这项技术挺有意思,但实际表现还不足以对假账户做高置信度判断,还需要再做改进。

 

初步通过直觉完成数据挖掘之后,Dagster 团队又发现了另一种模式。虽然这些复杂的假账户都会以逼真的方式做交互,但这类假账户往往只跟少部分代码仓库互动。从本质上讲,各个假账户似乎都属于整体“可疑代码仓库”的一个子集。

 

遗憾的是,Dagster 团队没办法直接汇总出可疑代码仓库的列表,因为卖家会不断轮换新的代码仓库来回避跟踪。但 Dagster 可以使用无监督聚类技术自动识别出新的可疑代码仓库,再根据其是否存在、存在多少可疑交互来判断哪些账户确系伪造。下面来看实验团队对可疑用户判定方法:

 

  • 首先,列出所有曾给可疑代码仓库投过 star 的用户。

  • 之后,根据与该组内其他用户的高度重叠性,确定出一组潜在的可疑代码仓库。注意,因为这些用户初步入选的理由是给同一个代码仓库投过 star,所以如果它们同样也为另一代码仓库投过 star,则代表值得怀疑。(但仅仅是值得怀疑,正常情况下也存在这种广泛的投 star 重叠,所以下面的附加步骤才格外重要!)

  • 最后,要找出活动水平相对较低的账户,挑出其中绝大多数活动都仅仅指向之前确定的可疑代码仓库、且缺乏其他合法活动的账户,这些就是认定的假账户。

 

在对已知假 star 做这一启发测试时,虽然计算量很大,但假账户的检测效果确实很好,准确率高达 98%、召回率为 85%。那么,这种方法在真实代码仓库中表现如何?

 

将这两种方法结合起来,实验团队能够更全面地了解给定 GitHub 代码仓库中的可疑投 star 和相应召回率:

 

 

简单启发式方法

(一眼为假,低召回率)

简单启发式+无监督聚类

(一眼为假与用心造假)

代码仓库

总star数

疑似假star数

疑似假star占比

2022年及之后得star中疑似假star的比例脚注

okcash

759

1

0.13%

97%

Simple-GPU

787

159

20%

87%

Notifio

841

97

12%

76%

Mage.ai

3,629

533

15%

30%

Apache Airflow

29,435

17

0.06%

1.6%

Ploomber

3,002

6

0.2%

1.5%

Dagster

6,538

8

0.12%

1.5%

Flyte

3,154

1

0.03%

1.1%

脚注:受计算成本的限制,实验团队在 BigQuery 上进行的 GitHub Archive 分析仅限从 2022 年 1 月 1 日起的得 star。对于 GitHub Archive 分析,团队使用了另一种略有不同的方法来识别 GitHub API 分析中的“低活动”可疑账户。这些账户与通过聚类方法识别出的其他可疑账户相加,就得到了疑似假 star 的总数。

 

如果大家也想用这样的逻辑分析其他 GitHub 代码仓库,可点击下面链接:

https://github.com/dagster-io/fake-star-detector

 

其中,简单启发式算法是用 Python 实现的,只需要一个 GitHub 账户加访问令牌即可使用;无监督聚类方法则是用 dbt 项目实现的,需要 Google Cloud BigQuery 账户才能运行。请注意,用后者方式检测大型代码仓库可能会带来高昂的成本。

 

幸运的是,根据 Dagster 团队的研究,从投入产出的情况来看,买 star 行为在 GitHub 上还不是那么普遍,这也体现出开源社区积极向上的整体价值观。开源社区的长期发展还需要每个开发者的努力。

 

参考链接:

https://dagster.io/blog/fake-stars

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

2023-03-20 18:005007

评论

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

LLM 大模型学习必知必会系列(七):掌握分布式训练与LoRA/LISA微调:打造高性能大模型的秘诀进阶实战指南

汀丶人工智能

大模型微调 LORA微调 LISA微调

install4j for Mac 多平台使用的Java安装文件生成工具

Rose

LED显示屏抵御户外高温的策略

Dylan

科技 LED LED显示屏 户外LED显示屏 led显示屏厂家

iShowU Instant for Mac(强大的实时屏幕录像工具)直装版

Rose

掌握postman,开启API测试新纪元!

测吧(北京)科技有限公司

测试

K8s 小白入门|从电影配乐谈起,聊聊容器编排和 K8s

小猿姐

Kubernetes 云原生 容器化

国产数据库替代加速 助力数字中国建设

科技热闻

CheckList对交付质量的重要性

老张

质量管理 软件测试 checklist

AI日报|苹果将在iOS 18中引入ChatGPT,联想或成AI PC最大受益者

可信AI进展

#人工智能

TikTok标签使用技巧,从入门到精通全攻略

蓉蓉

TikTok tiktok直播

NineData架构师周金义:ClickHouse 数据管理与同步的关键技术

NineData

最佳实践 Clickhouse 数据管理 NineData 迁移同步

运营商系统快速上云的实践分享

鲸品堂

架构 系统 运营商 上云 企业号 5 月 PK 榜

ChatGPT指南:含有1000+ChatGPT资源

蓉蓉

ChatGPT GPT-4

LLM 大模型学习必知必会系列(六):量化技术解析、QLoRA技术、量化库介绍使用(AutoGPTQ、AutoAWQ)

汀丶人工智能

AutoAWQ AutoGPTQ 大模型量化技术

掌握Postman,开启API测试新纪元!

测试人

软件测试 Postman API

Bookie存储架构源码剖析|得物技术

得物技术

MQ 源码剖析 pulsar java 企业号 2024年5月 PK 榜

淘宝商品搜索API返回值全攻略:关键字搜索的数据价值挖掘

技术冰糖葫芦

API Explorer API 文档 API 性能测试

IntelliJ IDEA 2024 .1.2中文激活版 Java开发 mac编程软件下载

Rose

打工人好用的大模型问答,还需要一款可靠的文档解析工具

合合技术团队

LLM 智能问答 文档解析

大型前端应用如何做系统融合?

京东零售技术

JavaScript 前端 企业号 5 月 PK 榜

万界星空科技电线电缆行业MES解决方案

万界星空科技

mes 万界星空科技mes 电线电缆行业 电线电缆mes

关于Vearch在大模型中使用的一些实践

京东科技开发者

LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践

汀丶人工智能

大模型 大模型推理

区块链智能合约

区块链开发团队DappNetWork

LLM 大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解

汀丶人工智能

Transformer 大模型训练

研发提效:想快速定制一个OLAP应用?你可以这么做

京东科技开发者

我在GitHub 黑市买“水军”:一万颗star只要4000多元,人人都能“一夜爆火”_语言 & 开发_褚杏娟_InfoQ精选文章