
【免费下载链接】rewards-farmerAutomation for MS Rewards based on https://youtu.be/4qdPcMNaioA项目地址https://gitcode.com/gh_mirrors/re/rewards-farmer点击查看免费下载rewards-farmer 是一个 MS Rewards 自动化脚本它的核心卖点不是能点而是像人一样点。整个拟人鼠标移动由一条四步流水线完成贝塞尔曲线生成路径 → 失真区叠加抖动 → Sigmoid 变换速度曲线 → Fitts 定律计算耗时。这篇文章把每一步的数学原理和默认参数讲透帮你理解为什么机器人的点击能骗过检测。为什么直线插值一眼就能被识破最朴素的自动化移动是线性插值从 A 点匀速滑到 B 点轨迹是一条完美直线速度恒为常数。真实人类做不到这两件事手不会走出数学意义上的直线中途总有微小偏移手的速度服从快-慢节奏——加速、接近目标时减速修正每次移动的时间取决于目标距离和大小而不是固定值。rewards-farmer 在 src/mouse_trajectory.py 中用四个函数分别解决了这三个问题。第一步贝塞尔曲线生成天然弯曲的轨迹 三次贝塞尔一个只改两处的随机扰动路径基础是三次贝塞尔曲线。给定四个点 P0起点、P1、P2控制点、P3终点任意时刻 t 的位置由以下公式给出src/mouse_trajectory.py#L20-L37B(t) (1-t)³·P0 3t(1-t)²·P1 3(1-t)t²·P2 t³·P3x、y 坐标各自独立地套用这个公式得到二维轨迹。关键设计在控制点的选取src/mouse_trajectory.py#L47-L60参数默认值含义DEFAULT_INTERMEDIATE_RADIUS_INTERVAL(20, 40)控制点相对起/终点的随机偏移半径像素P1 放在起点附近 20~40 像素内、方向完全随机的位置P2 同样放在终点附近 20~40 像素内随机位置每个方向的正负号也是随机的random_anysign。效果曲线整体接近直线但带一条肉眼可辨、幅度很小的自然弧线。幅度不能太大否则轨迹会明显甩弯反而不像人。第二步失真区叠加手抖 ️一条光滑贝塞尔曲线仍然太干净。失真区算法src/mouse_trajectory.py#L62-L121模拟人手的微观抖动把 [0, 1] 的时间轴切成等长小区间每个区间长DEFAULT_DISTORTION_ZONE_TIME_LENGTH 0.05即 20 个格子每个格子以DEFAULT_DISTORTION_FREQUENCY 0.15的概率被选中成为失真区——平均约每 6.7 个格子抖一次每个失真区分配一个随机偏移量取值范围DEFAULT_DEVIATION_INTERVAL (1, 5)像素正负随机。被选中的区间内部再分前后两半前半段progress 0.5从真实点线性偏移出去偏移量从 0 增长到完整值后半段再线性偏移回来落回真实曲线。失真位移 offset × 2 × progress 前半段 失真位移 offset × (1 - 2×(progress-0.5)) 后半段这形成一个等腰三角形的凸起光标瞬时离开理论轨迹最多 1~5 像素然后又回到原位。整条轨迹因此布满随机、无规律的小弯折——正是人手抖动的统计特征。项目还附带一个可视化脚本 src/visualize_bezier_distortions.py用 pygame 同时画出干净曲线黑色与叠加失真红色做对比点击按钮可切换显示非常直观。第三步Sigmoid 变换速度曲线模拟快起慢收 匀速移动是第二大破绽。人手的移动速度曲线接近 S 形起步加速、中段最快、接近目标时显著减速。rewards-farmer 用 Logistic Sigmoid 做时间重参数化src/mouse_trajectory.py#L123-L143s(x) 2 / (1 e^(-x)) - 1 # 值域 (-1, 1) 的 Sigmoid原始时间参数 t 先被映射到 Sigmoid 输入域再用s(...)作为贝塞尔曲线的 t 值。Sigmoid 导数即瞬时速度在 x0 处最大、两端趋近于 0于是光标自然呈现中间快、两头慢的节奏。一个精妙的细节4.5 缩放与终点兜底Sigmoid 是渐近函数永远到不了 1意味着按公式算光标会差最后几像素到不了目标。项目在 src/mouse_trajectory.py#L166-L181 做了两个配套处理时间归一化后乘以4.5logistic_sigmoid(4.5) ≈ 0.978接近终点但不触碰渐近区速度曲线基本不被扭曲t movement_time时直接返回终点坐标保证每次移动精确落点。单测 tests/test_mouse_trajectory.py 专门锁定了这两点logistic_sigmoid(4.5) 1且最后一步移动必须停在目标上。第四步Fitts 定律让耗时也拟人 ⏱️真实用户点屏幕另一端的按钮耗时和距离、目标大小严格相关。Fitts 定律给出了线性模型MT a b × ID ID log2(2D / W)其中 D 是移动距离W 是目标有效宽度。rewards-farmer 内置了两组回归常数src/mouse_trajectory.py#L145-L195常数值说明FITTS_LAW_A0.5500基础耗时截距FITTS_LAW_B0.1276每单位难度的耗时增量这些常数不是拍脑袋定的src/fitts_law.py 提供了一套个人校准工具——全屏 tkinter 界面反复让你点击随机生成的蓝色矩形记录每次起动了到点击的时间然后用最小二乘回归出你自己的 a、b 和 R²fit_fitts_lawsrc/fitts_law.py#L157-L180。把回归出的常数替换进mouse_trajectory.py移动节奏就和你的真实手速一致了。运行方式需要 Python 3.12依赖见 pyproject.tomlgit clone https://gitcode.com/gh_mirrors/re/rewards-farmer cd rewards-farmer python src/fitts_law.py另外两个拟人细节落点不选中心choose_target_in_elementsrc/mouse_trajectory.py#L219-L230在按钮内部 25%~75% 的区域内随机取点人从不会每次都点死正中心点击有延迟human_like_click在 200~300 毫秒随机间隔内按下模拟人手按压节奏。执行引擎按真实时钟逐帧采样 ️数学都备好后MouseUtils.move_mousesrc/mouse_trajectory.py#L294-L332负责执行用time.monotonic()驱动循环每帧取当前时间 t查询路径函数得到坐标坐标先被钳制到视口内0 ~ innerWidth-2防止失真区把轨迹甩出浏览器边界被驱动拒绝每帧通过 SeleniumActionBuilder下发一次指针移动而非一次性跳过去可选叠加一个红色小圆点可视化光标位置init_driver_with_cursor_visualization方便肉眼检查轨迹是否自然。move_to_element则把整条流水线串起来滚动目标入视口 → 随机落点 → Fitts 算耗时 → 生成路径 → 执行移动src/mouse_trajectory.py#L386-L450。想自己观察效果可以运行 src/visualize_trajectory.py它会生成随机目标并按 Fitts 定律时长播放完整轨迹Replay / Next target按钮可反复重放。一张表看懂参数全貌 常量默认值作用DEFAULT_INTERMEDIATE_RADIUS_INTERVAL(20, 40) px控制点随机偏移半径决定弧线弯曲程度DEFAULT_DISTORTION_ZONE_TIME_LENGTH0.05失真区格长时间轴 1/20DEFAULT_DISTORTION_FREQUENCY0.15每格被选中抖动的概率DEFAULT_DEVIATION_INTERVAL(1, 5) px单次抖动的最大偏移量FITTS_LAW_A/FITTS_LAW_B0.5500 / 0.1276移动耗时的线性回归常数点击间隔200~300 mshuman_like_click的按压延迟所有参数都可以作为函数参数覆盖例如把distortion_frequency调到 1.0 就能得到剧烈抖动的演示轨迹。总结拟人化 路径 × 速度 × 时间 × 落点四层仿真rewards-farmer 的拟人鼠标并不是单一技巧而是四层相互独立的仿真叠出来的空间层——随机控制点的三次贝塞尔曲线制造天然弧线噪声层——失真区三角形偏移制造 1~5 像素的随机手抖速度层——Sigmoid 时间重参数化制造快起慢收的节奏时间层——Fitts 定律可用个人数据回归校准 随机落点 随机按压延迟。四层各自看起来都对组合起来才是稳定的人类运动学特征。相关的完整实现见 src/mouse_trajectory.py行为回归见 tests/test_mouse_trajectory.py。理解了这套流水线你也能把同样的方法移植到自己的 Selenium 自动化项目里。赞分享【免费下载链接】rewards-farmerAutomation for MS Rewards based on https://youtu.be/4qdPcMNaioA项目地址https://gitcode.com/gh_mirrors/re/rewards-farmer点击查看免费下载相关推荐复古编程新玩法用B语言编译器bext-lang/b在Uxn虚拟机上运行程序复古编程新玩法用B语言编译器bext lang/b在Uxn虚拟机上运行程序 B语言编译器 bext lang/b 是一款使用 Rust 方言 Crust 从零tech.ml.dataset完全指南Clojure高性能数据处理系统的终极入门教程tech.ml.dataset完全指南Clojure高性能数据处理系统的终极入门教程 在当今数据驱动的世界中高效处理和分析表格数据已成为开发者和数据科学家的最完整贝塞尔曲线实战指南从路径规划到无人机轨迹生成最完整贝塞尔曲线实战指南从路径规划到无人机轨迹生成 你还在为路径规划算法生成的轨迹不平滑而烦恼吗 在自动驾驶Autonomous Driving和移动机示例工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考