我在 GitHub 黑市买“水军”

2023-06-03 0 331

我在 GitHub 非法交易买“官军”:一千颗 star 如果 4000 多元化,天下人都能“整夜伤风败俗”

译者 | 褚杏娟、原子武器果汁

“说毕竟的,我的心愿就是保有个几十 star 的 GitHub工程项目。”有开发相关人员说道。

关键性的风险较高重大决策,包括优先选择什么样工程项目、为什么样孵化器工程项目增资,甚至优先选择另一家企业聘用等。

但是,现在人们早已不坚信 star 数这个分项了。“GitHub 工程项目的 star 数我倒是不在意,因为这东西太难作假了,也代表没法工程项目的产品品质。我就不会去跟自己说给我的工程项目点 star 哦,这种犯罪行为事实证明吗 low 得不能再 low 了。​​”有开发相关人员写道。

实际上,那位开发相关人员说得并没有错。我们协进会在 GitHub 上辨认出许多快速走红的对外开放源码工程项目,才刚对外开放,每星期就能夺下几十 star。真有那么杰出吗?或许好得更让人不可思议了。还有许多新工程项目刚开卖两天就 star 数激增,这可是著名老工程项目在正式发布新版本或是其他关键性报告书就可以保有的福利待遇。

前段时间,对外开放源码选曲网络平台 Dagster 撷取了在抽检一小部分标识符库房后,辨认出了的两位“嫌犯”,而在 Dagster 公布后,许多帐户早已被删掉。

我在 GitHub 黑市买“水军”

请注意帐户建立年份,这跟恒定的 GitHub 用户明显有所不同

买了 star 后,工程项目整夜伤风败俗

Dagster 的两位研究相关人员顺道新体验了买回 star 给工程项目增添的得天独厚。Dagster 建立了一个假想的标识符库房(frasermarlow/tap-bls)并买了一大堆 star。然后,Dagster 为该帐户设计了个人资料文件,并使用 GitHub REST API(通过 pygithub)和 GitHub Archive 数据库展开了一系列测试。

我在 GitHub 黑市买“水军”

Dagster 的标识符库房整夜之间就火了……

我在 GitHub 黑市买“水军”

跟它一起“走红”的工程项目还有不少。

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”爆料道。

称。这也导致了国内前几年对外开放源码工程项目刷 star 泛滥。

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

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

但 ziml7 的观点也得到了许多质疑。网友“imadj”表示,许多维护相关人员只是将问题隐藏起来了,并没有真正解决。许多人以 0 个未解决的 issues 而自豪,好像这意味着什么。但如果他们会玩这个游戏,那么世界上任何软件都可以有 0 个 issues。“因此,除非您

另外,在评估几个不同的 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 年或更晚公开 gists == 0公开 repos <=4电子邮件、雇用信息、简历、博客和 Twitter 使用者名均为空投 star 年份=帐户建立年份=帐户更新年份

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

我在 GitHub 黑市买“水军”

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

“用心作假”

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

聚类直觉

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

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

动。如果某个帐户每月有两天会使用 GitHub,而且具体年份跟另一个帐户完全相同,甚至连撷取的活动内容都差不多,那就表明这两个帐户很可能是由相同的底层脚本在控制。根据这类帐户的活动撷取年份数(x 轴)和所交互的标识符库房总数(y 轴)可得出下图:

我在 GitHub 黑市买“水军”

这里列出的就是 Dagster 那个“钓鱼”标识符库房的统计结果,工程项目得到的 star 几乎 100%是假的:

我在 GitHub 黑市买“水军”

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

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

我在 GitHub 黑市买“水军”

针对 dagster-io 标识符库房的启发图——匹配接近 0%

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

我在 GitHub 黑市买“水军”

针对我们怀疑作弊的标识符库房制作的启发图——高亮显示部分为假 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

https://www.infoq.cn/article/DVZzvDdxcElCRuLXTTk2

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务