写点什么

我在 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:004948

评论

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

从这 5 个 DevOps “恐怖故事”,我们能学到什么?

飞算JavaAI开发助手

构建元宇宙概念NFT商城系统——艺术数字藏品平台源码部署

开源直播系统源码

软件开发 数字藏品软件开发 数字藏品源码出售

博云入选国家级专精特新「小巨人」名单!

BoCloud博云

云计算 容器 “小巨人”企业

首届腾讯云大数据峰会开幕在即,现场将发布全新一代产品矩阵

科技热闻

开源一夏 | 使用 HTML、CSS 和 JavaScript 的简单模拟时钟

海拥(haiyong.site)

开源 8月月更

开源图编辑库 NebulaGraph VEditor 的设计思路分享

NebulaGraph

数据库 图数据库 知识图谱 NebulaGraph

字节跳动基于ClickHouse优化实践之Upsert

字节跳动数据平台

OLAP Clickhouse 数据库优化 数据库开发 数据库·

数据说|数字经济,山东16市谁最“炫”?排行榜来了

易观分析

数字经济 山东

明源云参加2022数字化转型发展高峰论坛并获多项殊荣

科技热闻

需求子任务的数据管理提效实践

转转技术团队

开发工具 测试赋能

兆骑科创创新创业服务平台,双创活动承办,企业落地孵化

兆骑科创凤阁

【Metaverse系列二】3D引擎知多少

ThingJS数字孪生引擎

元宇宙

Redis API——List功能实践与性能测试【Go版】

FunTester

如何成就更高远控帧率和流畅度?向日葵SADDC算法浅析

贝锐

算法 视频解码 视觉策略 远程控制

开源一夏 | 为什么应该参与开源项目

baiyutang

开源 架构 微服务 开源文化 CloudWeGo

应用实例分析——图像检索

Geek_e369a5

图像搜索

得物黑科技|AR测量脚型,解决尺码烦恼

得物技术

AR

深度学习公式推导(1):神经元的数学公式

老崔说架构

华为云SparkRTC面向低时延、大通量传输业务的技术探索

华为云开发者联盟

云计算 后端 华为云

49张图带领小伙伴们体验一把 Flowable-UI

江南一点雨

spring springboot workflow flowable

华能 + Alluxio | 数字化浪潮下跨地域数据联邦访问与分析

Alluxio

数字化 国产化 东数西算 大数据 开源 数据编排

人非圣贤孰能无过,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang错误处理机制EP11

刘悦的技术博客

Go Go web go语言 Go 语言

QCN9074, 802.11ax,Wallys, 4x4 MU-MIMO, 6GHz, wifi6E,

wallys-wifi6

QCN9074

《游戏机图鉴》:发展、继承、崩溃、复兴,游戏机的前世今生

图灵教育

Github又爆神作!野生程序员自学SpringCloudAlibaba必备学习笔记开源(阿里2022最新版)

Java永远的神

Java 程序员 面试 微服务 SpringCloud

阿里SpringBoot实战手册横空出世!从此不再是易学难精

冉然学Java

Java 编程 程序员 Spring Boot 构架

兆骑科创赛事承办平台,高层次人才引进,创业服务平台

兆骑科创凤阁

深入浅出分布式事务的实现原理

清风

面试 分布式事务 后端 原理 事务

阿里IM技术分享(八):深度解密钉钉即时消息服务DTIM的技术设计

JackJiang

架构设计 即时通讯 im开发

水滴低代码搭建——6倍提效,新品首发素材审核系统实践之路

京东科技开发者

CMS 低代码 表单 素材 低代码开发

影响全彩LED显示屏质量的几个因素

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

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