V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leeside
V2EX  ›  程序员

模拟点击是怎么被识别的

  •  
  •   leeside · 1 天前 · 3204 次点击

    模拟点击是如何防止作弊的 https://github.com/Nain57/Smart-AutoClicker 今天淘宝有红包,想找一个模拟点击,结果识别的有效点击次数很少

    猜测

    1. 检测位置不能一直是同一个坐标(软件开了防作弊会随机坐标)
    2. 时间不能太快
    21 条回复    2024-10-15 15:31:45 +08:00
    ho121
        1
    ho121  
       1 天前 via Android
    模拟点击的按下和抬起的之间的延时分布不符合人工点击的延时分布。
    leeside
        2
    leeside  
    OP
       1 天前
    @ho121 谢谢,理解了。手工点击的时间间隔会更随机,疲劳可能导致时间时间会变大。
    willwon1
        3
    willwon1  
       1 天前
    很简单,入职阿里的端防团队你就知道了。
    要是年薪快百万每年产出就这个怕是早就要被开了。
    GeekGao
        4
    GeekGao  
       1 天前
    不可能告诉你的,知道也不会告诉你的
    gam2046
        5
    gam2046  
       1 天前   ❤️ 1
    web 端有移动轨迹

    移动端有移动轨迹和按压压力,最后你这个软件如果不需要 shell 权限,那么应该是通过无障碍服务功能实现,这对于目标应用来说是可见的,相当于你明牌了,告诉人家,你用了工具点击的。
    ho121
        6
    ho121  
       1 天前 via Android
    @leeside 这个可能只是一方面,实际上判断的途径会有很多
    Jinnrry
        7
    Jinnrry  
       1 天前
    1 、压力
    2 、轨迹
    3 、基于以上 2 点,机器学习判断
    aycclm
        8
    aycclm  
       1 天前
    弄一个马斯克的 optimus 机器人,把手机给它来点也许能行
    levelworm
        9
    levelworm  
       1 天前 via Android
    @gam2046 我感觉直接拾取人工按一分钟的数据然后回放,怎么样?
    gam2046
        10
    gam2046  
       1 天前   ❤️ 2
    @levelworm #9 基于我的对抗经验,如果你有足够多的轨迹回放,那么在规模不大的应用场景下,是可行的。如果回放轨迹较少,那么用不了几次,风控也就上来了。
    levelworm
        11
    levelworm  
       1 天前 via Android
    @gam2046 多谢,看来可以花点钱请一百个志愿者来点击半个小时,然后随机组合一下。。。
    jiaoyidongxi
        12
    jiaoyidongxi  
       1 天前
    这个模拟点击的 app 我也在用,它不是自带反侦测随机漂移坐标的功能吗
    liyafe1997
        13
    liyafe1997  
       1 天前 via Android
    @gam2046 App 最多能看到有哪些无障碍服务在运行,不能看出某次点击是否来自无障碍吧
    gam2046
        14
    gam2046  
       1 天前
    @liyafe1997 #13 如果你指的是直接检测,给个 true or false 的结果,那么暂时是不太可行的。但是还是有比较方便的方法来测试。

    假设张三希望在某 app 进行自动登陆,通过无障碍服务实现,找到 ID 为 abc 的 textview 就准备往里填写用户名。

    而目标应用为了避免这种情况,只需要代码里 new TextView ,并赋 id 为 abc ,并不需要真的 attach 到 View ,调用类似这样的代码

    textView.sendAccessibilityEvent(AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED);

    如果最后 textview 里真的有值了,那么就是有无障碍服务操作,因为此时这个组件并不在用户可见的视图,类似的变种,比如视图先放到可视区域以外,size 先做的很小。透明度调低等等,开动小脑袋瓜,还有不少。

    accessibilityManager.getInstalledAccessibilityServiceList()[*].packageNames 也可以知道哪些无障碍服务正在辅助自己,packageNames 为 null 或者自己的包名,那么都是自己的专辅。

    同时目前 Android 上无障碍服务的正经应用并不多,建立个白名单并不困难。除了少数几个正经应用,其他我不认识的应用,还在辅助我,风控等级就往上调就行了。
    dgsrz
        15
    dgsrz  
       1 天前
    一般会综合多个维度判断的,像上面提到的坐标轨迹,还有像传感器(加速度计),系统环境,后台进程等
    lisongeee
        16
    lisongeee  
       1 天前
    我看这个 APP 是基于无障碍服务实现派发点击手势的,其实不通过无障碍接口也能实现

    同时上面 #14 说的 getInstalledAccessibilityServiceList 也检测不出来

    原理是基于 shizuku 绑定服务调用 UiAutomation 获取屏幕无障碍节点,通过 input tap x y 执行点击
    Sawyerhou
        17
    Sawyerhou  
       1 天前 via Android
    真实点击是多点触碰,模拟点击是单点触碰。
    mouyase
        18
    mouyase  
       22 小时 48 分钟前
    调一下摄像头发现屏幕前没有人(瞎说的
    shunia
        19
    shunia  
       17 小时 50 分钟前
    那个上面说阿里的什么防团队年薪百万啥啥的真给我整笑了,能不能让这些年薪百万的天才们把阿里系那个傻叉的要死的验证条功能做好一点啊,说到底不还是有海量的瞎猜和误报。
    liyafe1997
        20
    liyafe1997  
       17 小时 9 分钟前
    @gam2046 1. 现在很多这种自动操作 App 为了避免这种情况,都是用的坐标点击,而不是激活某个“钓鱼控件”。
    2. 正经的无障碍服务很多,如果你关注过盲人的圈子,他们甚至会自己开发各种各样小众的辅助工具,这些都是真实的无障碍需求,如果一刀切(甚至你提到的第一种情况)会让真正需要无障碍的人无法操作。
    gam2046
        21
    gam2046  
       16 小时 50 分钟前
    @liyafe1997 #20 用坐标并避免不了,Activity 还是能获取到对应的事件,只是简单的猫鼠游戏,正常用户就不应该按这种欺骗性的按钮。

    正经的无障碍服务应用还是很容易搜集的,尤其对于大厂,因此白名单足以满足。

    最后,我承认有很多残障人士,假设他们用了一些不太常见的辅助应用,但是对于风控来说,尤其是涉及到钱的风控,一刀切在许多厂家眼里是合理的选择。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2612 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:22 · PVG 08:22 · LAX 17:22 · JFK 20:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.