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