大家好,我卡颂。
当我们看一个开源项目时,基本都会看下他有多少star。虽然Github Star是一个虚荣指标,但却有实际意义,比如:
- 很多开发者会关注Github Star增长趋势,更多的star会获得更多关注
- star数量往往是技术选型的一个依据。即使你的团队最终没有使用一个star很多的开源库,但通常也不会使用一个star很少的库
换个思路来看也许更能体现Github Star的价值 —— 「软件开源」并不意味着不赚钱,这只是一种产品开发策略。star数一定程度上反映了这种策略执行的是否成功。
而「策略执行是否成功」又会影响投资人的投资决策,以及团队能否以更低成本(甚至白嫖)招募优秀的开发人员。
有利益驱动就会有刷量、造假行为出现。既然微博僵尸粉都能影响广告主的投放决策,那Github Star造假就不足为奇了。
那么,一个Github Star值多少钱?
Star的售价
网上已经有公开渠道购买Github Star,比如:GitHub24或Baddhi Shop[1](在这个网站,你能花钱刷各种网站的行为数据,甚至能刷IMDb电影评分)。
Star的售价差异很大,比如:
- 64刀可以买到1000个三无账号的star。
- 要买到100颗有活跃行为账号的star,可能得85刀。
如何识别刷Star
之所以两者差异巨大,是因为鉴别难度不同。
对于这个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]。
参考资料
[1]Baddhi Shop:https://baddhi.shop/shop/。
[2]zadahmed/music_recommender:https://github.com/zadahmed/music_recommender/stargazers。
[3]astronomer:https://github.com/Ullaakut/astronomer。
[4]fake-star-detector:https://github.com/dagster-io/fake-star-detector/blob/main/fake_star_detector/assets/simpler_model.py。
[5]dagster:https://dagster.io/blog/fake-stars#lets-go-star-shopping。
[6]dagster:https://github.com/dagster-io/dagster。
[7]okcash:https://github.com/okcashpro/okcash。
[8]这里:https://github.com/dagster-io/fake-star-detector/blob/main/fake_star_detector/assets/complex_model.py。