面壁人VS智子 --- 搜索排序的作弊和反作弊

搜索引擎已经是目前网络流量最大入口,在大搜上,基本上大家打开网页做的第一件事情就是打开一个搜索引擎,然后键入你感兴趣的内容,然后开始浏览。如果是个电商的网站,你打开以后,基本上也是直接键入你感兴趣的内容,然后开始浏览。

电商的搜索引擎带入到店铺和商品的流量是巨面壁人大的(天空飘来一首歌:不要问我流量有几多,我会告诉你很多很多),流量的巨大必然带来销量的巨大,这些都是钱啊,有人的地方就有江湖,从小的思想品德课老师就告诉我们:马克思说过,一有适当的利润,资本就会非常胆壮起来。只要有10%的利润,它就会到处被人使用;有20%,就会活泼起来;有50%,就会引起积极的冒险;有100%,就会使人不顾一切法律;有300%,就会使人不怕犯罪,甚至不怕绞首的危险。所以,搜索智子舞弊就变成了一条又黑又长的地下黑色产业链了。

今天,我们以一个对话的剧本形式来说说搜索排序中的作弊和反作弊

人物介绍

  • 面壁人:是一个为了追求利润不择手段的资本家
  • 智子:高智能的系统,专门和面壁人做斗争
  • 光糕喜通:一个没啥原则,只要出钱就可以给你做事的人
  • 耍蛋师:他的技能就是耍蛋,这可是一个技术活

荒蛮时代

其实在荒蛮时代之前还应该有个规矩时代,那是第一代电商时代,以亚马逊这种B2C的电商为代表,因为所有的商品都是他自营的,所以不存在作弊一说,想怎么排就怎么排,反正都是我自己的东西,直到像ebay,易趣,淘宝之类的平台型电商出现,才开始了荒蛮时代。

荒蛮时代,是线上购物刚刚兴起的时候,那时候在线上买商品还不是那么普及,而且商品的数量也没那么多,作弊主要体现在能把商品显示出来就行了,对于排名其实没有那么大的需求,而且那时候不管是商家还是平台,大家都是新手,那些个武林绝学都还在某个山洞里面藏着没有公布于众。

面壁人新上了一个商品,是一条红色的ZARA的连衣裙,商品标题写成了ZARA红色连衣裙,上了以后发现搜索裙子找不到啊,于是,面壁人把商品的名字改成了ZARA红色裙子,连衣裙,长裙,短裙,超短裙,绣花裙,这一下不管是搜索裙子,连衣裙,长裙,短裙,超短裙,绣花裙都能搜到这个商品了,曝光机会一下大大提高了,面壁人觉得很爽,本来一天才1,2单,现在每天有6,7单了,这只是改了一下标题。

到这一步,智子刀已经拿手上了,但还是忍着了,毕竟面壁人还不是特别离谱,至少标题描述的和实际商品差别不是那么大。

面壁人尝到了甜头,但还是不满足,面壁人发现热门搜索词里面有个H&M裙子,每天搜索量巨大,但是没我的商品啊,这还了得,改标题,改成ZARA,H&M,Mango,红色裙子,连衣裙,长裙,短裙,超短裙,绣花裙,呵呵,流量更多了,一天有个10来单了。

到这一步,智子刀已经举起来了......

面壁人一看,我去,改个标题威力这么大,好,打开搜索排行榜,把前100名的搜索词挨个撸了一遍,标题变成了ZARA,H&M,Mango,NIKE,ADIDAS,红色,绿色,黄色,紫色,裙子,连衣裙,长裙,短裙,超短裙,绣花裙,裤子,鞋子,呵呵,么么哒,销量准备翻翻了。

智子刀落......

面壁人:我X,你没说不能改标题啊!!!

智子一想也是,于是说:我们订个规则吧,我们都退一步,我去改我的程序,保证近义词,同义词都能找到你的商品,这样你就算是连衣裙,搜裙子也能找到你的商品,怎么样,大哥够意思了吧?

面壁人:恩,够,够意思,够意思。

智子:你呢,也老实点,以后商品标题不能超过10个字,不能出现两个以上的物品词,不能出现两个以上的品牌词,颜色,品牌这种词我另外给你个地方写,你别写标题里面了,以后你每改一个标题,我就这么检查一遍,如果你违反规则了,那么就只能咔擦了。

面壁人:..........

智子:并且我还告诉你,我后面有大哥哦,我大哥和你一样是人类,他会不定期抽查你的商品描述哦,要是他觉得不符合要求,直接干掉你哦。

面壁人心想:哼哼,抽查哦,这么多商品,你哪抽查得过来,我改了只要你大哥没看到就没事,嘿嘿。。

面壁人有一天发现好像关键词次数出现得越多,好像排的越靠前啊,他只说不能出现两种物品词,没说不能出现多次啊,我改成ZARA红色连衣裙连衣裙连衣裙连衣裙连衣裙,嘿嘿,也排前面啊,爽。

终于有一天被智子的大哥抽查到了。

面壁人:我X,真背,不过没事,这次被查了,后面应该不会查我了,接着改。

智子:我告诉你,你心里那小九九别以为我不知道,我现在能力变强了,我大哥抽查的时候我在后面看着,我会学习的哦,我大哥每干掉一个人,那个规则我就学会了,我就会用到你的商品身上哦。你注意点哦!

面壁人:呃。。。。。。。

就这样,面壁人不停发现关键字上的新作弊规则,而智子不断强化自己的识别规则,两边都累得够呛,终于有一天,出现了下面的对话。

智子:嘿,每天和你这么斗真累,你现在也做大了,我们商量个事呗。

面壁人:唉,是累,死了好多脑细胞想个规则出来,一旦被发现了又要重新想,烦死了。你说商量,商量啥啊?

智子:我有个兄弟,他叫光糕喜通,你去找他,你可以去他那里买关键字,你想什么关键词都行,一个一块钱,有人搜这个关键字的时候,不管你啥商品,右边最上面的位置给你,怎么样,那可以排名第一的位置啊。

面壁人:嘿,还有这事,好啊好啊,一块钱,便宜!!没问题!!

于是,智子面壁人第一次握手言和......智子轻松了不少,面壁人每天花点钱就有了相应的流量,订单也不错,抬头一看日历,恩,明年就是北京奥运会了,备点货,多和光糕喜通君交流交流,明年多卖点吧。

规则时代

规则时代,大家的线上购物习惯已经慢慢被培养起来了,线上的商品也越来越多了,线上的交易金额也越来越大了,总之,是电商的爆发时代了,网上购物已经成为一种常态,作为商家,竞争已经越来越激烈了,不靠点小手段很难获取到流量了,于是作弊开始成规模的爆发了,但这个时代作弊还基本上是单兵作战,还没有集团化。

虽然有广告系统帮忙,但是广告系统可不是我一个人用,大家都在用,竞价越来越高,之前只要一块钱就能排第一个,现在10块钱都排不了第一啊。而且人们越来越聪明了,知道右边的是广告,都不怎么点,怎么办呢?面壁人每天愁得满头大汗。

面壁人到底脑子活,哼哼,商品标题上我做不了文章,那我做做排序的文章总可以吧?他发现,这个商品要是点击次数多,排序上也占便宜啊,于是没事就拼命点啊点,呵呵,还真有点效果,排序真的越来越好了。

智子也没闲着,出了一条规定:同一个关键词的同一个IP地址的点击,每天最多算3次,同一个商品的点击,每天最多算20次,其他的点击都不算,看你怎么玩,跟姐斗,还嫩点呢。

面壁人:我X,真够狠啊!

面壁人到底是面壁人,点击不行,我直接买总可以吧?于是,面壁人每上一件商品,就自己注册个号来买,而且一买就买100件,销量瞬间就上去了,关键词的排名蹭蹭往上涨啊,没多久就排到第一名了,这时候,自然流量哗哗进来,真正的销量自然上去了,好开心啊。

智子一看形势不对啊,于是,紧急出了一条新规则,凡是单个订单商品数量超过1个的,就按1个处理,也就是说不管你一个订单买了多少件商品,姐都只算你买了一个。

面壁人想,哼,小意思,我多注册几个号,反正注册号也不要钱,搞他几百个号,轮着买,反正也不用真寄出去东西,随便秒杀智子啊,你不就关注订单么,我订单多啊。

智子:新规则:同一IP地址买订单太多了,加入黑名单,这个IP的购买行为都不记入排序中

面壁人:我靠!!跟我斗!看来单兵作战不行了啊,只能发动群众了啊,于是找来他的亲戚朋友,有需要就找亲戚朋友们帮着下单,这下总不能靠单个订单和IP地址干掉我了吧?而且面壁人们联合起来了,我帮你刷,你也帮我刷,反正不用真正寄东西出去,只要下了单就行了,让我们联合起来,玩死智子吧。

智子:小样,跟我玩,姐要出大杀器了!新规则:订单必须真寄东西,订单号要来我这备案哦,不然算无效订单,而且这种无效订单多的帐号,一旦进入黑名单,以后这种账户下的订单全部不计入排序中。

面壁人:吐血。。。。

智子:姐再给你补一刀,你商品的评论也很重要哦,你刷得再靠前,但是你质量不好,有些个差评啥的,直接影响你的店铺分数哦,店铺分数低,排序受影响哦,你得保证商品质量哦,而且还得好好伺候你的顾客哦。

面壁人:吐血的平方。。。。

智子:姐还有很多规则哦,你听着哦,巴拉巴拉巴拉......

面壁人:吐血的立方。。。

正当面壁人被吊打得皮肉开裂的时候,有个叫耍蛋师的找到了面壁人,跟他说:来,我帮你刷,我是专业的,我们公司的员工遍布全国各地(的网吧中),IP地址分散,智子没辙,而且我们是真实的人在那边帮你操作哦,真实的帐号哦,可以下真实的订单哦,你不用真寄东西,我们提供真实的快递单号,智子查不出来,怎么样?给我个商品,两天,包你上搜索第一页,价格嘛?只要998!!!现在搞活动,只要668,保证上第一页,你想啊,上了第一页,668不瞬间挣出来了啊?

面壁人一想,也是啊,上了第一页还怕没销量,反正没上还能退款,just do it!!

在这个时代快结束的时候,职业耍蛋师登上了舞台,他们专业,他们深知中国互联网的规则:那就是没规则,他们也深知中国的国情:那就是人多,闲人更多,网吧的闲人那是多得不能再多了,在打游戏的间隙,接个任务,到各大电商平台下几单,一包烟钱就到手了,why not?这一年的年底,面壁人带着女朋友看了个电影,电影说的是关于一张价值连城的船票的故事。

智能时代

智能时代,网上购物已经是常态了,连老婆都能在网上买到了,作为商家,到了如果不花钱基本上已经得不到流量的时代了,新开个店,不砸些钱,一个单都接不到,而作为平台方,已经到了如果不遏制作弊,将会严重影响用户体验的程度了。这个时代的作弊,已经完全产业化了,因为只凭个人能力,不可能和平台对峙了,于是出现了各种各样的作弊工作室。

上个时代中,最后以耍蛋师的登场结束了,而且耍蛋师简直所向披靡,只要给钱,没有刷不了的单,你再牛逼,订出了无数的规则,但总没有人牛逼吧,我这可是真正的人在下单哦。

正当耍蛋师happy得不行的时候,有一天,突然发现几乎所有的账户好像都不起作用了。怎么刷都不好使了,怎么回事??

智子:我进化了,哼哼,沉寂了这么久,我get到了新技能,这些年我默默无闻的,其实我是在闭关修炼,为了能和你对抗,我已经挥刀自宫把之前的武功全部砍掉了,如今我已炼成葵花宝典,就等着和你较量了。

耍蛋师:什么鬼?

智子:我用葵花宝典这门绝学分析了这么多年的用户行为数据,我已经知道了哪些订单是真订单,哪些订单是假订单,虽然有时候会搞错,但是准确率还是相当高的哦,最关键的是,我已经不用什么规则了,你找个人下个订单试试,我基本能预测出这个订单是真的还是假的。

耍蛋师:卧槽!这么厉害,真人都不行?我是真下单啊,我是真快递单号啊,我是全国各地订单啊。。。

智子:那又如何,你这次交易行为就不像个正常交易。

耍蛋师:哪不像了?

智子:店家是新店家,刚开店才4,5天,哥们,你上来就直接打开这个商品的链接,点加入购物车,结算,付款,整个过程5秒钟,大哥,这是1万块的苹果笔记本啊,你连和店家打个招呼都不打,直接下单,你是真土豪呢?还是脑子进了水?

耍蛋师:我靠!!!变超级赛亚人了啊!!我再叫个经验丰富的小弟买个看看。

智子:呵呵,还是被我抓到了,这哥们倒不是直接打开链接了,是搜了个词再点进去买的,但是你看看你这小弟搜了个什么词,和商品标题长得一模一样,整个搜索结果就这一个商品,他是懒得翻页吧?这和直接打开商品链接有啥区别??后面的行为我都懒得看了...

耍蛋师:卧槽,又阵亡一个,再上

智子:恩?这哥们行为像真的,但是这个账户有问题哦,之前这个账户已经有多次交易被列为高危了,我觉得这像个作弊的账户啊,恩,不管了,宁可错杀一万,高危!干掉!这个帐号已经被列为超级高危账户了,以后他的交易都会被列为假交易。

耍蛋师:。。。。。再上!

智子:这哥们正常搜索了,还翻了几页,然后点进去了,礼貌的和客服MM进行了深入的交谈,互相留了微信号,然后下了一单,3天后来了个好评,还晒了图,像真交易哦,但不好意思,还是要干掉,谁叫你和客服MM说话的?

耍蛋师:不是你说的要聊天才真实吗??!!!

智子:你不知道女人是善变的么???我通过统计发现啊,有一类交易叫静默交易,就是啥也不说,就直接下单了,而且这类交易在很多分类中比例还挺高的,你这商品就在这个类目下啊,不好意思,这次被静默掉了。

耍蛋师:我顶你个肺啊!!!

智子:嘻嘻,我还有很多其他的方式判断哦,比如页面停留时间,如果是比较贵的商品,你是不是货比三家了。。。总之还有很多哦,哦,顺便告诉你,这葵花宝典啊,核心的心法是机器学习,后面还有深度学习,神经网络。。我们慢慢切磋呗。。。

耍蛋师:看来我只能修炼我的内力了,尽量让交易显得真实才是王道啊。。。。你等着。。。

就这样,智子耍蛋师就这么你来我往一直较量着,有时耍蛋师占了上风,有时智子占着上风,而且这场较量会一直持续下去。。。

而我们,正处在这个时代中,下个时代什么时候来临,我也不知道。。。

后记

作弊和反作弊是一个永远不会结束的话题,作为一个技术人员,能做的其实比较有限,就像高考作弊一样,技术上只能提供监控录像,手机信号屏蔽器这种东西,但这两个东西真的只能抵挡低端的作弊行为,就像上面提到的智子,能做的也很有限,而人的想象是无限的,特别是在有高利润驱动的时候,想象力更是无限,所以想光靠技术来阻住搜索排序的作弊,其实是很难的,抱歉,关于人的无限想象力有多么的黑暗,不能再说了(其实我也不知道)。

本篇文章只是很浅的说了一下搜索排序中几个常见的作弊和反作弊的场景,真实的反作弊就是在雄兔脚扑朔,雌兔眼迷离,双兔傍地走 安能辨我是雌雄这种扑朔迷离的场景下辨出真正的雌雄来。难度可想而知了。

最后,本篇所有内容都是个人臆想,请勿对号入座。


欢迎关注我的公众号,主要聊聊搜索,推荐,广告技术,还有瞎扯。。文章会在这里首先发出来:)扫描或者搜索微信号XJJ267或者搜索西加加语言就行

<think>好的,用户之前问过如何实现单机游戏的排行榜,但不需要实时联机。我给出了一个分阶段的方案,包括数据采集、传输、排行榜生成反作弊机制。现在用户再提问,希望手把手教他做,但暂时不需要反作弊检测机制。这意味着用户可能是一个刚开始接触游戏开发的开发者,或者是一个独立开发者,想要快速实现一个基本的排行榜功能,而暂时不需要复杂的安全措施。 首先,我需要明确用户的需求变化:之前的需求中包含了反作弊机制,但现在用户暂时不需要这部分。这可能是因为用户想先搭建基础功能,后续再考虑安全问题,或者他的项目目前处于原型阶段,反作弊不是优先项。因此,我需要调整之前的方案,去掉反作弊相关的步骤,专注于数据采集、传输排行榜生成。 接下来,我需要考虑如何简化之前的方案,使其更易于实现。用户需要的是手把手指导,所以步骤要详细,代码示例要具体,可能还需要选择适合初学者的技术栈。例如,使用Python作为后端,因为Python语法简单,库丰富,适合快速开发。数据库方面可以选择SQLite作为本地存储,用Redis来维护实时排行榜,因为Redis的ZSET结构非常适合排行榜的实现。 数据采集部分,之前提到了监控文件变化、OCR识别内存扫描。但用户现在可能只需要最简单的方法,比如监控游戏生成的结文件。我需要给出具体的代码示例,比如使用Python的watchdog库来监控文件变化,并自动上传数据。同时,需要说明如何配置监控路径,以及如何处理数据上传。 数据传输部分,需要提供一个简单的HTTP API,使用Flask或FastAPI来创建后端服务。代码示例要展示如何接收数据并存储到数据库。考虑到用户可能对后端开发不熟悉,需要详细说明如何设置路由、处理请求以及连接数据库。 排行榜生成部分,使用Redis的ZSET结构,展示如何添加分数获取排行榜。同时,提供一个简单的前端页面来显示排行榜,这样用户可以看到实际效果。可能需要用到HTMLJavaScript,但保持简单,避免复杂的框架。 部署方面,建议使用Docker来容器化服务,这样用户可以在本地运行,不需要复杂的服务器配置。同时,提供docker-compose文件示例,方便用户一键启动RedisPython后端。 在教程的结构上,需要分步骤进行,每一步都有明确的代码说明,确保用户能够跟随。可能还需要提示常见的错误解决方法,比如文件权限问题、依赖安装等。 最后,考虑到用户可能想进一步扩展功能,可以给出后续的建议,比如增加用户系统、数据加密等,但当前保持简单,专注于核心功能的实现。 总结来说,需要将之前的方案简化,去除反作弊部分,提供详细的代码步骤,使用易上手的技术栈,确保用户能够顺利实现一个基础的排行榜系统。</think>以下是简化版实时排行榜实现教程(不含反作弊),使用Python+SQLite+Redis快速搭建: --- ### **第一步:搭建本地数据采集系统** #### 1. 创建游戏结文件监听器 ```python # monitor.py import time import json from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class GameHandler(FileSystemEventHandler): def on_modified(self, event): if "result.json" in event.src_path: print("检测到新游戏记录") with open(event.src_path) as f: data = json.load(f) # 示例数据结构: # {"player": "user123", "score": 95, "time": 120.5} save_to_db(data) # 存储到本地数据库 def save_to_db(data): import sqlite3 conn = sqlite3.connect('game_records.db') c = conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS records (id INTEGER PRIMARY KEY AUTOINCREMENT, player TEXT, score REAL, time REAL, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP)''') c.execute("INSERT INTO records (player, score, time) VALUES (?, ?, ?)", (data['player'], data['score'], data['time'])) conn.commit() conn.close() if __name__ == "__main__": path = "/path/to/your/game/save/folder" # 替换为实际路径 observer = Observer() observer.schedule(GameHandler(), path, recursive=True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join() ``` --- ### **第二步:构建数据传输服务** #### 1. 创建简易HTTP服务器(FastAPI) ```python # server.py from fastapi import FastAPI import sqlite3 import redis app = FastAPI() r = redis.Redis(host='localhost', port=6379, db=0) @app.get("/upload") async def upload_data(): conn = sqlite3.connect('game_records.db') c = conn.cursor() # 获取未上传的记录 c.execute("SELECT * FROM records WHERE uploaded = 0") records = c.fetchall() for record in records: player = record[1] score = record[2] # 更新Redis排行榜 r.zadd("leaderboard", {player: score}) # 标记为已上传 c.execute("UPDATE records SET uploaded = 1 WHERE id = ?", (record[0],)) conn.commit() conn.close() return {"status": "success", "count": len(records)} @app.get("/leaderboard") async def get_leaderboard(top: int = 10): return r.zrevrange("leaderboard", 0, top-1, withscores=True) ``` --- ### **第三步:部署本地运行环境** #### 1. 安装依赖 ```bash pip install fastapi uvicorn redis watchdog ``` #### 2. 启动服务 ```bash # 启动数据监听器(新终端) python monitor.py # 启动API服务(新终端) uvicorn server:app --reload ``` #### 3. 验证系统 ```bash # 生成测试数据(模拟游戏保存) echo '{"player": "test1", "score": 95, "time": 120}' > /path/to/your/game/save/folder/result.json # 手动触发上传 curl http://localhost:8000/upload # 查看排行榜 curl http://localhost:8000/leaderboard ``` --- ### **第四步:实现前端展示** ```html <!-- leaderboard.html --> <!DOCTYPE html> <html> <head> <title>实时排行榜</title> <meta http-equiv="refresh" content="5"> <!-- 每5秒自动刷新 --> </head> <body> <h1>游戏排行榜</h1> <div id="list"> <% items.forEach(function(item){ %> <div class="item"> <span class="rank"><%= item.rank %></span> <span class="name"><%= item.player %></span> <span class="score"><%= item.score %></span> </div> <% }); %> </div> <script> // 使用AJAX获取实时数据(可选) fetch('http://localhost:8000/leaderboard?top=10') .then(response => response.json()) .then(data => { let html = ''; data.forEach(([player, score], index) => { html += `<div>第${index+1}名 ${player}: ${score}</div>`; }); document.getElementById('list').innerHTML = html; }); </script> </body> </html> ``` --- ### **系统运行示意图** ``` 游戏客户端 → 生成result.json → 监听程序 → 写入SQLite → 定时上传 → Redis排序 → 网页展示 ``` **关键调试技巧**: 1. 使用`redis-cli`直接查看数据: ```bash redis-cli 127.0.0.1:6379> ZREVRANGE leaderboard 0 9 WITHSCORES ``` 2. 手动清理数据库: ```bash rm game_records.db # 删除本地记录 redis-cli FLUSHDB # 清空排行榜 ``` **下一步扩展建议**: 1. 增加玩家ID系统(可先用设备IMEI/MAC地址生成唯一标识) 2. 添加时间维度排行(日榜/周榜/总榜) 3. 实现数据加密传输(使用AES加密上传内容)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值