很荣幸在本次活动中参与了某站点的最终审核过程。下面根据整次活动的过程进行梳理。

该活动以“将特定图片上传到微信朋友圈,发完后截图朋友圈,并上传截图”的形式展开,用户通过上传的朋友圈截图信息,就可以获得一定数量以上的奖励。

活动对上传的截图文件有以下要求:

  • 请不要通过仅自己可见等设限方式上传到朋友圈
  • 需要截图朋友圈带有自己发布内容的区域,不可以截图个人相册等其他区域
  • 请完整截图,不要裁剪
  • 如果同时加入了自己的文字推荐内容(如向大家介绍下本站),将有更高的几率获得更多奖励

同样,也列出了一些无法通过审核的原因:

  • 图片没有标题栏或者标题没有写“朋友圈”字样,“我的相册”、“详情”均不能通过审核
  • 上传编辑也不能通过审核
  • 没有正确的图片,不能通过审核
  • 请尽量包含朋友圈右侧个人头像区域,无法辨别是否本人所发的不能通过审核

结果一览

  • 文件数量

在本次活动中,总共收集到了 10434 张上传照片,总大小 4.87 GB( 5,239,552,373 字节),平均单个文件的大小为 490.392 KiB。图片大小最大为6.57 MB,最小仅为1 KB(当然是无效图片233)。

  • 上传格式

用户上传的截图文件类型主要为jpg以及png格式(居然还有一张是gif格式的Orz)。其占比如下:

count_type.png

  • 用户截图/提交时间

因为后台服务器并不对图片日期标签进行更改,所以通过读取图片文件的修改时间即可获取用户进行截图/上传的时间(这里有个假设就是用户截图后没多久就上传)。

在这些图片中,最早的一张的日期为2018/5/18 17:42,最后一张上传图片的日期戳为2018/5/21 0:18。通过对图片文件的时间进行统计并作图,可见,在20号15点52前提交人数均较少,而随着开放注册活动的持续进行,从20号19点30分到23点17分,出现用户参与活动的高潮,平均每次计数间隔(1分钟)均有超过30次提交。最高出现在20:23,在这一分钟内出现了共54次提交。

(这个日活还是挺恐怖的23333

upload_time.png

  • 图片分辨率

    如果假设用户未对图片做任何处理的话(实际上确实存在用户上传裁剪的或者其他情况存在),图片的分辨率应该是由手机自身分辨率确定的。通过使用Python的PIL库对文件夹内所有图片的分辨率进行统计,得到以下结果:有将近一半的上传照片的分辨率为1080 x 1920 (5727张),即其他绝大部分的图片分辨率为16:9。很有意思的数据偏移点出现在 240 x 240 分辨率上,经过查询对应图片,发现该部分用户将网页提供的活动图片又原模原样的上传上来了23333 (掩耳盗铃是会被发现的23333

imgW_H.png

通过统计,最常见(数量超过50)的图片分辨率为下表

imgW imgH count
1080 1920 5727
750 1334 1587
1080 2160 573
640 1136 367
1242 2208 335
1440 2560 225
720 1280 204
240 240 105
1080 2220 76
1125 2436 72
1080 2339 69
540 960 59
1080 2280 57
  • 审查结果

通过图片审查以及分类,将最终图片结果分为以下各类。(注:本处统计结果不代表最终活动评奖结果。

类别 说明
合格图片 使用手机截图功能对朋友圈进行截图,并可能加入文字推荐或纯图片上传的图片。
违规图片 违反活动规则的图片,如:微信非朋友圈(编辑页面、我的相册等)截图、微信朋友圈无法进行身份识别的图片、上传到其他平台的截图、原始图片二次上传、无关图片

score.png

前期准备

为了防止用户名以及UID对审核人员的干扰(比如友情奖励什么滴啦),采用token形式对用户上传图片进行唯一标识,并对用户原始信息进行隐藏处理。通过token处理后,审查人员只能了解到token,而不能将站内信息与用户实际身份进行对应

生成原理如下:

用户通过点击主站主导航里的按钮,向活动服务器发送含有自己username以及uid的ajax请求,活动服务器后台生成唯一的token,并通过303 Status Code重定向到带有token字段的上传页面。

TIM截图20180520183754.jpg

TIM截图20180520183829.jpg

后记

本次分析本来是想使用Python机器学习的方法进行的,奈何小样本跑下来看了看,发现识别和分类的情况并不理想,而且由于活动的性质,也不好怎么做进一步的展开说明。所以也就不贴什么code了,就这么4张图来总结吧~~