当我们看一个开源项目时,基本都会看下他有多少star
。虽然Github Star
是一个虚荣指标,但却有实际意义,比如:
很多开发者会关注Github Star
增长趋势,更多的star
会获得更多关注
star
数量往往是技术选型的一个依据。即使你的团队最终没有使用一个star
很多的开源库,但通常也不会使用一个star
很少的库
换个思路来看也许更能体现Github Star
的价值 —— 「软件开源」并不意味着不赚钱,这只是一种产品开发策略。star
数一定程度上反映了这种策略执行的是否成功。
而「策略执行是否成功」又会影响投资人的投资决策,以及团队能否以更低成本(甚至白嫖)招募优秀的开发人员。
有利益驱动就会有刷量、造假行为出现。既然微博僵尸粉都能影响广告主的投放决策,那Github Star
造假就不足为奇了。
那么,一个Github Star
值多少钱?
网上已经有公开渠道购买Github Star
,比如:GitHub24
或Baddhi Shop[1](在这个网站,你能花钱刷各种网站的行为数据,甚至能刷IMDb
电影评分)。
Star
的售价差异很大,比如:
64刀可以买到1000个三无账号的star
要买到100颗有活跃行为账号的star
,可能得85刀
之所以两者差异巨大,是因为鉴别难度不同。
对于这个zadahmed/music_recommender[2]仓库,可以明显看到有部分点赞者的账号是同一天注册的:
再深究的话,会发现这些点赞账号还有很多共性,比如:
Followers < 1
Following < 1
个人公开仓库数量 < 4
很多个人信息(比如邮箱、简介)为空
这类共性让这些假账号很容易被识别,Github
官方会定期清理这些账号。所以,如果你花钱刷了1000star
,可能过一个月就都消失了。
除了Github
官方以外,还有些工具可以识别假账号,比如:
astronomer[3]
fake-star-detector[4]
想想,如果自己的项目好不容易做出点名气,但被人扒出曾经刷star
,那就尴尬了。
但对于那些高价刷的star
,这类检测机制就不太好用了。因为这类账号会模仿正常开发者的行为,光从行为数据上,很难将他们和正常开发者区分。
这里开源编排平台dagster[5]提供了一个检测思路 —— 他们使用一种被称为unsupervised clustering
(无监督聚类)的机器学习技术。简单来讲,我们可以用一组行为特征来描述一个Github
账号,比如:
提交代码
给其他仓库提PR
star
某个项目
修改个人简介
这样就能将这个Github
账号表示为高维向量空间中的一个点。那些向量空间中相近的点对应的Github
账号,可以被归类为同类账号。
基于以上原理,dagster
成员新建了个仓库,并高价刷了star
:
这么做的目的是用那些点star
的Github
账号做聚类分析,标记出一个类。当完成聚类后,如果发现某个Github
账号也属于这个类,那就可以怀疑这个账号也是假账号。
那么,为什么假账号能够聚类呢?这是因为这些账号虽然在模仿正常开发者,但他们之间也有很多类似行为,比如:
他们的行为可能都是同一个脚本在操作,那么在行为逻辑、行为执行的时间上比较类似
他们都会给同一批仓库(服务的买主)点star
举个例子,有两个Github
账号,虽然他们之间并无交集(仓库的编程语言不同、开发者国籍不同...),但他们都在某几天做着同类的事(比如先浏览一些仓库,再发表评论,最后给某个仓库star
),那么他们会被划分为同类。
如果他们的同类中有实锤的假账号,那么他们大概率也是假账号。
在下面的图表中,衡量了上述刷star
的仓库(100% star
都是刷的)中,点了star
的那些Github
账号的行为,其中:
横轴是日期跨度
纵轴是账号交互的仓库总数
蓝色部分是所有用户
红色部分是明确的假Github
账号
黄色部分是根据聚类,被怀疑的假账号
由于已知这个仓库的所有star
都是刷的,所以其实黄色部分的账号也都是假账号,通过聚类的方式他们被很好的识别出来了(和红色部分同类)。
而对于完全没有刷star
的项目(这里以dagster[6]为例),点star
的用户行为基本不会与假账号有交集:
对于一个刷了star
,同时又有实际参与者的项目,分析结果如下图:
虽然star
数是虚荣指标,但由于他是很多决策的参考依据,这就诞生了「刷star」的需求。
比如,okcash[7]是一款开源的加密货币,有578star
。
但是,经过上述dagster
的方式检测后会发现,所有为okcash
点star
的账号中,疑似虚假刷star
的账号占比达到97% 。相信这一结果会对这款加密货币的市场信心造成一定影响。
如果你也想用dagster
的方式检测其他开源库,可以参考这里[8]。