V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yaozeyuan93
V2EX  ›  问与答

为了防止恶意刷单,有没有什么 js 执行成本相对较低,但是其他语言执行成本很高的方案

  •  
  •   yaozeyuan93 · 2017-04-21 18:25:16 +08:00 · 2878 次点击
    这是一个创建于 2767 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两天搞活动的时候被刷的很惨,对方直接通过调接口参与活动。以至于每小时 PV 500 多,参与用户 1 万+ 。。。

    然后问题就是怎么才能区分出来正常操作的用户和调接口刷单的用户。最好能做到对用户透明,但是能有效地恶心到刷单的人。我是希望能找到一个 js 执行成本很低,但对其他语言执行成本很高的方法。在提交之前先执行这个方法,然后把结果作为验证值 post 上来。

    比如说, js 用 CSS 选择器在 html 中选元素非常方便,但其他语言基本没法这样做,所以可以由后端返回一串 css 选择器, js 在浏览器里执行后把元素长度返回回来,跟后端设定值对照一下,不一致就可以判断是刷单。这样写上 20 个选择器,每半小时换一个,基本可以过滤掉所有靠易语言刷单的人了。

    但这种方法对于用 python 刷单,又知道 BeautifulSoup 的人就无效了。

    所以,有没有什么方法,可以有效地把刷单用户给区分开呢(只要能有效提高对方的刷单成本就行)

    附:针对语言优先级

    1. 易语言
    2. Python
    3. PHP
    4. Java
    5. Ruby
    第 1 条附言  ·  2017-04-23 23:48:46 +08:00
    因为这个活动本身奖励值很低,不值得专门为其上一套反欺诈服务,所以问题的核心在于迫使刷单方必须在页面上执行一遍 js 之后才能拿到结果,提升刷单方的执行成本。

    比如说,如果能强制让刷单方用 PhantomJS 过一遍,被 node.js 爬,那我们也认了

    我周末的时候想了一套比较狠的解决方案 =>

    我从网上找了一个 js 实现的 md5 算法,随便改了里边的几个参数,调整了几个步骤的顺序,然后混淆压缩。然后算出来一串的 key => value, 服务端给前端返回 key, 前端用修改过的私有 md5 方法计算 value, 然后返回给服务器验证。

    这样应该就能强迫刷单方执行页面的 js 了

    周一试一下,如果能够有效抑制住刷单的话再更新
    5 条回复    2017-04-22 00:09:22 +08:00
    airyland
        1
    airyland  
       2017-04-21 18:47:39 +08:00 via iPhone
    要求绑手机号然后使用第三方的账户风险鉴定接口
    crab
        2
    crab  
       2017-04-21 18:55:41 +08:00
    第 1 验证码
    第 2 IP 限制
    第 3 不管用户有没有成功,都响应成功。
    geelaw
        3
    geelaw  
       2017-04-21 18:57:29 +08:00
    为啥用户不能开个浏览器然后 fire up his console and run the f**king code in JS ?

    要防刷单,不能从前端难以进攻的角度防,要从后端验证的角度。
    tinyproxy
        4
    tinyproxy  
       2017-04-21 19:48:50 +08:00 via iPhone
    你需要反欺诈服务。再说了,实在不行我直接拿浏览器跑恶心你成本也很低啊
    popkara
        5
    popkara  
       2017-04-22 00:09:22 +08:00
    楼上说的对,这个已经有很成熟的方案了,自己搞麻烦不说还效果不好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1280 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:52 · PVG 07:52 · LAX 15:52 · JFK 18:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.