您的当前位置:首页正文

电子商务网站反作弊系统的设计综述

2022-12-19 来源:个人技术集锦


电子商务网站反作弊系统的设计综述

摘要 随着人们的网购习惯的养成,网络营销的作弊需求也随之应运而生。通过对常见的作弊手段和作弊渠道进行详细的分析后,提出了解决方案。系统总体设计分为日志采集、离线反作弊、实时反作弊、处罚中心四个模块,利用Flume进行日志采集、Hadoop平台进行日志的存储和计算、Esper复杂事件流处理引擎进行实时的反作弊计算、Groovy作为处罚规则引擎,给出了一个C2C电子商务网站反作弊系统的实例。

关键词 分布式计算;反作弊;复杂事件处理

1 反作弊系统的业务场景和需求分析

简单来说反作弊系统的注重目的就是针对C2C电子商务平台上的作弊行为进行识别、预防、监控,提升平台的整体的诚信度,推荐给用户更好的卖家和产品,提升用户的网购体验。

1.1 C2C平台常见作弊类型

作弊的思路很简单,就是要提高商户的流量。大致会从以下几方面入手:

(1)平台站内搜索:通过作弊短期的提高自己的搜索排名[1]。通常采取的做法是提高商户自身和关键词的相关性。

(2)商户评价:商户评级对搜索结果的影响也是非常非常大的,一般是通过大流量来模拟一个真实用户的网购操作来购买物品,提升交易数量和评价[1]。

(3)恶意攻击对手:攻击方式有很多种,比如故意交易并给商户差评,拉低其搜索排名。还有比如对于一些关键词付费的竞价广告,恶意点击。更有甚者会故意替竞争对手进行作弊,比如刷竞争对手的点击量,故意使用非常明显的方式从而达到使得竞争对手被违规处罚的目的。

反作弊系统的目的就是要从海量的用户操作中找出這些违规操作,并给予相应的处罚。

1.2 作弊手段与方式

目前,C2C电子商务平台作弊方式主要有两大类,手工作弊和机器人自动作弊。手工作弊是指由人手工点击或浏览商户,模拟一个人的购买记录。单独看一次交易数据没有任何异常,看起来就像正常用户一样,因此对反作弊系统提出了巨大的挑战。

手工作弊的精细、高成本、量小相反,机器人作弊的特征是低成本、大量。

很多时候为了产生大量交易,不得不使用这种方式。机器人作弊往往是几台机器模拟大量的人群,使用大量的马甲账号,隐藏自己的真实地址,当然,也有很多造成虚假点击的网络机器人是爬虫,通常他们也不会模拟交易,只是爬去网页而已。还有些机器人会做成病毒分发给各种机器,然后盗取真实用户的账号来进行点击,虽然这种情况比较难检测,但是通常无法模拟真实交易,只能模拟点击。而且既然是机器人那么很大程度上是有规律可循的,可以被检测出来。

1.3 检测作弊的方式

检测作弊一般分为检测采取为实时与离线两种方式,通过查找分析出操作日志中的异常数据来加以判断。

实时的反作弊系统主要针对一些比较明显的作弊方式,他们的特点是作弊方式比较明显粗糙,这种不够精细的作弊往往量比较大,很容易在短时间内造成大量的异常流量和点击或者是评论。比较容易被一些规则命中,找出异常点。

离线的反作弊系统通常针对那些比较复杂的场景,例如每天只有少数作弊点击行为,单看某天的数据毫无异常,往往需要分析处理过往所有的流量日志才能发现问题。大部分情况需要通过对大量的日志进行数据挖掘作业来发现其中的作弊行为,离线系统主要是提供算法人员一个平台,使得算法人员能够专注于算法,提供预先计算和收集好所用的数据以及方便访问和处理数据工具[2]。

2 反作弊系统总体设计

整个反作弊系统分为四个模块分别是日志收集存储模块、离线反作弊模块、实时反作弊模块、处罚中心模块。系统的数据来源由日志收集存储模块负责,分别经过离线反作弊模块和实时反作弊模块的规则判断后交由处罚中心处理。

2.1 日志收集存储模块设计

如图1所示,整个日志的收集流程主要是:用户进入网站浏览生成各种浏览行为,前端发送数据给日志收集服务器。日志收集服务器收集到数据后,存入日志存储平台,以备后续的作业处理。

日志收集服务器主要负责的功能是收集日志,处理日志转换格式,存储值数据平台。首先,由于访问量巨大所有日志数据传给一台服务器是不合适的,日志收集服务器必须是一个分布式的架构,对于与日俱增的用户日志来说日志服务器必须考虑到日后的横向扩展性,只要往集群里添加机器即可线性提高集群的处理能力。同事考虑到比较好的负载均衡,不会让单独某台机器出现负载很高的情况,还有就是要能对应单节点崩溃问题,当集群中某台或几台机器出现问题时,不会影响到集群的功能,只是暂时提高了机器的平均负载,而机器重启后能自动加入到集群中,处理新的日志。

由于日志存储平台每天生成的数据量十分巨大,并且数据量日益增加,只是

暂时的对存储设备进行优化是无济于事的,需要的是能够支撑将来巨大的日志数量的一整套解决方案。Hadoop 无疑是首选,其存储平台HDFS能完美的解决海量数据的存储与访问问题,同时HDFS的备份策略,能够比较好地保证日志数据不会丢失,从而对后续的处理造成影响[3]。

2.2 离线反作弊模块设计

如图2离线反作弊系统的主要处理流程是,收集完原始日志后,对日志进行加工处理存入数据仓库,再通过同步作业将数据同步至mysql,再经过算法人员开发的数据挖掘作业找出违规操作通知处罚中心处理。

之所以选择HDFS作为存储平台,还有一个很重要的考虑就是Hadoop的大吞吐率的高效的数据处理能力。主要就是MapReduce 作业,它是与 HDFS配套的一个分布式编程框架,相当于可以利用Hadoop各个节点的计算资源。但是Mapreduce毕竟是一个底层的编程框架,每个mapreduce作业的编写都耗时耗力,并且灵活性不足,开发速度跟不上不停变化的预处理需求。所以除非比较负责难以表现的处理会直接编写 mapreduce外,大部分选择使用Hive ,它是 HDFS 基础上的数据仓库软件包,可以将文件系统中的数据直接导入到Hive中。关键是它提供一种HiveSql语言,语法类似传统Sql,底层处理确实将这HiveSql直接转化成mapreduce作业来处理数据,大大节约了开发mapreduce作业的时间,使得开发人员开发mapreduce作业就想编写Sql一样简单[4]。可以看到hive提供了相当多的调用接口,通常会通过CLI(命令行界面Command Line Interface)来调用Hive,它可以方便的嵌入在shell、python、perl等脚本中编写。

除了使用hive来存储和处理数据外,必须开发一个调度中心来调度hive和mapreduce的执行,和一些容错机制比如任务失败重跑、监控邮件等,并且在数据生成后能调度同步作业将数据同步到数据库中。

2.3 实时反作弊模块设计

实时反作弊的流程比较简单,前端返回数据给日志服务器,实时反作弊中心向日志服务器订阅日志,收到数据后,生成事件,该事件触发规则后将违规点评返回给处罚中心处理。

2.4 处罚中心储模块设计

如图3所示,当处罚中心收到处罚的数据时,并不会马上处理数据,还是要经过一个规则判断后才能决定是否处理。

一般来说不同的反作弊作业会对应不同的处罚方式,比如用户评论抄袭或者灌水的时候这部分评论是无价值的,但是用户的打分是真实的,处理方式是评论不展示,但是在计算商铺评级时该用户的评价依旧会被纳入计算。而另外一些被抓出的伪造的虚假的交易产生的评价被抓出后,则该次记录会被标记为无效,不会被纳入计算中。对应不同的作业抓出的违规操作会有不同的处理方式。

同时,被同一作业抓出的不同的用户,处理方式也不同。最终处罚时还是会根据用户的各项属性来判断用户是否应该被处罚,比如注册时间非常早的用户或者是级别和交易次数非常高的用户就不会处罚。用户的各项属性保存在一张与处理模块提前计算出的大表中,算法人员可能还会不定期的新加入参数。具体判断哪些参数时的表达式会不停地变,这就需要一个可方便配置修改的动态规则引擎来判断。

Groovy这种动态语言脚本作为规则引擎,来执行动态表达式正好满足需求。它是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易, Groovy和java可以很好地结合编程考虑到这一点规则引擎决定用Groovy来实现。

3 总结与展望

本文给出了一个C2C电子商务网站反作弊系统的分析设计和实现过程及技术要点。系统采用Java和Python语言为主要开发语言,动态部分的需求使用基于JVM的动态脚本语言Groovy,使用CentOS操作系统,主要以HADOOP平台为核心,依靠HDFS的大容量存储能力,及Hive和Map/Reduce的高性能处理能力来存储和处理数据。并采用了Esper引擎应对实时处理的需求。数据库库采用的Mysql。

本文通过对如HDFS分布式文件存系统、Map/Reduce分布式计算框架、CEP复杂时间流处理、Esper引擎等相关知识的应用,给出了一个基于C2C电子商务网站反作弊系统的具体实现过程。

参考文献

[1] 许青.C2C电子商务中消费者信任的影响因素研究[D].长沙:湖南大学,2010.

[2] 郭逸重.Hadoop分布式数据清洗方案[D].廣州:华南理工大学,2012.

[3] 王向阳.搜索引擎排名算法及作弊检测技术研究[D].济南:山东大学,2010.

[4] 李铮,李世明.Groovy on Grails的若干Web报表解决方案[J].程序员,2009,(3):106-110.

因篇幅问题不能全部显示,请点此查看更多更全内容